你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 并配置唯一的 ServiceDNS 主机名来添加到负载均衡中。 可以定义可选权重,以配置群集之间的流量路由行为。 如果使用舰队管理器的群集资源放置部署工作负荷,则可使用 ResourceOverride 在放置上配置 DNS 主机名。
关联的流量管理器的创建和配置由 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.netDNS 名称的 DNS 前缀。 它必须唯一。 如果名称已在使用中,部署将失败。namespace:必须与相应的TrafficManagerBackendService资源相同。monitorCOnfig:映射到标准 Azure 流量管理器监视配置。 不支持的 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 主机名
若要向流量管理器添加 a Service ,它必须具有唯一的 DNS 主机名。 可以按照 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资源并将属性设置为weight100.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 删除行为
TrafficManagerProfile删除 Kubernetes 资源时,也会删除关联的 Azure 流量管理器及其终结点,并且不再将请求路由到群集。
如果想要停止流量路由,但保留 Azure 流量管理器及其终结点,请在weight资源上将0属性设置为TrafficManagerBackend。
