Azure Kubernetes Fleet Manager 可用來建立和管理 DNS 型多叢集負載平衡,以用於跨成員叢集部署的公開工作負載。
這很重要
Azure Kubernetes 機群管理員預覽功能由客戶自行決定取用。 預覽是「依現況」及「可用時」提供的,並不包括在服務等級協定和有限保固之內。 客戶支援部門會竭盡全力支援一部分的 Azure Kubernetes 機群管理員預覽功能。 因此,這些功能不適合實際執行用途。
我們的數據平面網路預覽會透過我們的 networking.fleet.azure.com/v1beta1
API 發行。 如果您沒有看到預覽物件,請檢查您是否在與 Fleet Manager 中樞叢集互動時要求 networking.fleet.azure.com/v1beta1
API。
為了使用 DNS 傳遞多叢集公用負載平衡,Fleet Manager 會利用具有加權路由配置檔的 Azure 流量管理員作為從成員叢集導出的Services
前端。 第 4 層和 7 層負載平衡都可使用這項功能。
車隊系統管理員會使用 kubectl
在 Fleet Manager 中樞叢集上建立及設定 TrafficManagerProfile
和資源 TrafficManagerBackend
。 TrafficManagerProfile
定義 Azure 流量管理器設定檔,其中包含 端點健康情況監視設置,並且相關的 TrafficManagerBackend
定義 Service
要進行負載平衡。
成員叢集上的服務可以藉由在叢集上建立 ServiceExport
,並設定 Service
的唯一 DNS 主機名,以新增至負載平衡。 您可以定義選擇性權數,以設定叢集之間的流量路由行為。 如果使用 Fleet Manager 的叢集資源放置來部署工作負載,則可以在放置時配置 DNS 主機名ResourceOverride
。
相關聯的流量管理員的建立和設定是由 Fleet Manager 所管理,車隊系統管理員能夠使用 Kubernetes API 來驅動端對端體驗。
TrafficManagerProfile 屬性
資源 TrafficManagerProfile
會提供標準 Azure 流量管理員配置檔的 Kubernetes 物件表示法。
apiVersion: networking.fleet.azure.com/v1beta1
kind: TrafficManagerProfile
metadata:
name: myatm
namespace: work
spec:
monitorConfig:
protocol: HTTP
path: /api
port: 8080
intervalInSeconds: 30
timeoutInSeconds: 10
toleratedNumberOfFailures: 3
要瞭解的重要屬性包括:
name
:作為trafficmanager.net
DNS 名稱的 DNS 前綴。 不得重複。 如果名稱已在使用中,部署就會失敗。namespace
:必須與對應的TrafficManagerBackend
和Service
資源相同。monitorCOnfig
:對應至標準 Azure Traffic Manager 監控配置。 不支援的 Azure 流量管理員端點監視選項包括:自定義標頭設定;預期的狀態代碼。
TrafficManagerBackend 屬性
資源 TrafficManagerBackend
會提供 Kubernetes 物件,用來儲存流量管理員可視為接收流量的後端端點。 必須先建立 ServiceExport
,然後才能將流量路由傳送至端點。
apiVersion: networking.fleet.azure.com/v1beta1
kind: TrafficManagerBackend
metadata:
name: app
namespace: work
spec:
profile:
name: myatm
backend:
name: app
weight: 100
要瞭解的重要屬性包括:
spec/profile/name
:必須符合對應的TrafficManagerProfile
。spec/backend/name
:必須符合導出的服務名稱才能進行負載平衡。spec/weight
:可選擇性套用於此後端的優先權重。 介於 0 到 1,000 之間的整數值。 如果省略,流量管理員會使用預設權數 『1』。 設定為 『0』 以停用流量路由,而不刪除相關聯的流量管理員配置檔資源。 如需詳細資訊,請參閱 Azure 流量管理員加權路由方法。
ServiceExport 屬性
要將端點 Service
新增至流量管理器,請在包含服務的成員叢集上建立 ServiceExport
資源。 資源 ServiceExport
必須建立在與 Service
要匯出之 相同的命名空間中。
apiVersion: networking.fleet.azure.com/v1alpha1
kind: ServiceExport
metadata:
name: kuard-export
namespace: kuard-demo
annotations:
networking.fleet.azure.com/weight: "50"
要瞭解的重要屬性包括:
metadata/namespace
:必須符合要匯出之 的Service
命名空間。metadata/annotations/networking.fleet.azure.com/weight
:此服務匯出可選的優先權重。 介於 0 到 1,000 之間的整數值。 如果省略,流量管理員會使用預設權數 『1』。 設定為 '0' 以停用流量路由,而不刪除相關聯的服務端點。 如需詳細資訊,請參閱 Azure 流量管理員加權路由方法。
透過服務批注的唯一 DNS 主機名
必須先具有唯一的 DNS 主機名,才能將 Service
新增至流量管理員。 您可以按照 AKS 的建議方法,使用 service.beta.kubernetes.io/azure-dns-label-name
註釋來設定 DNS 主機名,如下所示。
apiVersion: v1
kind: Service
metadata:
name: kuard-svc
namespace: kuard-demo
labels:
app: kuard
annotations:
service.beta.kubernetes.io/azure-dns-label-name: kuard-demo-cluster-01
spec:
selector:
app: kuard
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
您可以使用 Fleet Manager 的ResourceOverride
功能覆寫 DNS 標籤設定,以便在多個叢集中部署獨特的主機名稱。 如需詳細資訊,請參閱 DNS 負載平衡作指南。
控制流量路由
在本節中,我們將探討控制叢集之間流量路由的常見案例。
跨叢集分散流量
若要允許流量管理員考慮接收流量的任何叢集,請使用顯示的定義。
建立
TrafficManagerBackend
資源並省略weight
屬性。apiVersion: networking.fleet.azure.com/v1beta1 kind: TrafficManagerBackend metadata: name: app namespace: work spec: profile: name: myatm backend: name: app
在每個叢集上,建立
ServiceExport
並省略weight
屬性。apiVersion: networking.fleet.azure.com/v1alpha1 kind: ServiceExport metadata: name: kuard-export namespace: kuard-demo
部署之後,流量管理員會隨機挑選叢集,並考慮擁有權數相等的叢集。
將流量分配到具有不同權重的叢集
若要在選取叢集時提供流量管理員喜好設定提示,請在 weight
和 TrafficManagerBackend
物件上設定 ServiceExport
屬性。
建立
TrafficManagerBackend
資源,並將 屬性設定weight
為100
。apiVersion: networking.fleet.azure.com/v1beta1 kind: TrafficManagerBackend metadata: name: app namespace: work spec: profile: name: myatm backend: name: app weight: 100
創建
ServiceExport
並將weight
屬性設置為一個值,此值代表流量管理員在考慮選擇叢集接收流量時使用的優先權。apiVersion: networking.fleet.azure.com/v1alpha1 kind: ServiceExport metadata: name: kuard-export namespace: kuard-demo annotations: networking.fleet.azure.com/weight: "40"
部署之後,流量管理員會偏好使用較高權數的叢集。 您不需要在每個叢集上設定權數值。 如果您在多個叢集上設定相同的權數值,流量管理員會同樣考慮這些叢集。
將叢集排除於流量路由之外
若要從流量路由中排除叢集,請將 weight
資源上的 屬性設定為 0
ServiceExport
。 此權數會從流量管理員設定中移除端點。
apiVersion: networking.fleet.azure.com/v1alpha1
kind: ServiceExport
metadata:
name: kuard-export
namespace: kuard-demo
annotations:
networking.fleet.azure.com/weight: "0"
TrafficManagerProfile 的刪除方式
刪除 Kubernetes 資源時,相關的 Azure 流量管理員及其端點也會一併刪除,因此要求不再被路由到叢集。
如果您要停止流量路由,但保留 Azure 流量管理員及其端點,請將資源上的 屬性設定 weight
為 0
TrafficManagerBackend
。