Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Azure Kubernetes Fleet Manager pode ser usado para criar e gerenciar o balanceamento de carga multicluster baseado em DNS para cargas de trabalho voltadas para o público implantadas em clusters membros.
Importante
As funcionalidades em versão prévia do Azure Kubernetes Fleet Manager estão disponíveis num modelo de autoatendimento e adesão voluntária. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As visualizações do Azure Kubernetes Fleet Manager são parcialmente cobertas pelo suporte ao cliente em regime de esforços possíveis. Assim sendo, estas funcionalidades não se destinam ao uso em produção.
As versões de pré-visualização de rede do nosso plano de dados são liberadas por meio da nossa networking.fleet.azure.com/v1beta1 API. Se não conseguir ver objetos de pré-visualização, verifique se está a solicitar a networking.fleet.azure.com/v1beta1 API quando interage com o cluster de hub do Fleet Manager.
Para fornecer balanceamento de carga público de vários clusters com DNS, o Fleet Manager utiliza o Azure Traffic Manager com um perfil de roteamento ponderado para atuar como um frontend para Services exportação de clusters membros. É possível usar esse recurso para balanceamento de carga de camada 4 e 7.
Os administradores de frota usam kubectl para criar e configurar recursos TrafficManagerProfile e TrafficManagerBackend no cluster de hub do Fleet Manager. Os TrafficManagerProfile definem um perfil do Gerenciador de Tráfego do Azure que inclui a configuração de monitorização de integridade do ponto de extremidade, com a definição associada TrafficManagerBackend do Service para balancear a carga.
Os serviços em clusters membros podem ser adicionados ao balanceamento de carga criando um ServiceExport no cluster e configurando um nome de host DNS exclusivo para o Service. Podem ser definidas ponderações opcionais que configuram o comportamento de roteamento de tráfego entre clusters. Se a carga de trabalho for implantada usando o posicionamento de recursos de cluster do Fleet Manager, o nome de host DNS pode ser configurado diretamente durante o posicionamento com um ResourceOverride.
A criação e configuração do Traffic Manager associado é gerenciada pelo Fleet Manager, com administradores de frota capazes de conduzir a experiência de ponta a ponta usando a API do Kubernetes.
Propriedades do TrafficManagerProfile
O TrafficManagerProfile recurso fornece uma representação de objeto Kubernetes de um Perfil padrão do Gerenciador de Tráfego do Azure.
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
As propriedades importantes a entender incluem:
-
name: usado como o prefixo DNS para otrafficmanager.netnome DNS. Deve ser único. Se o nome já estiver em uso, a implantação falhará. -
namespace: deve ser o mesmo que os recursos correspondentesTrafficManagerBackendeService. -
monitorCOnfig: mapeia para a configuração de monitorização padrão do Azure Traffic Manager. As opções de monitorização de ponto de extremidade do Azure Traffic Manager não suportadas são: Configurações de cabeçalho personalizadas; códigos de status esperados.
Propriedades do Traffic Manager Backend
O TrafficManagerBackend recurso fornece um objeto Kubernetes que é usado para armazenar pontos de extremidade de back-end que podem ser considerados pelo Gerenciador de Tráfego para receber tráfego. Antes que o tráfego seja endereçado para um ponto de extremidade, um ServiceExport deve ser criado.
apiVersion: networking.fleet.azure.com/v1beta1
kind: TrafficManagerBackend
metadata:
name: app
namespace: work
spec:
profile:
name: myatm
backend:
name: app
weight: 100
As propriedades importantes a entender incluem:
-
spec/profile/name: deve corresponder ao correspondenteTrafficManagerProfile. -
spec/backend/name: deve corresponder ao nome do serviço exportado para fins de balanceamento de carga. -
spec/weight: peso opcional (prioridade) a aplicar a este back-end. Valor inteiro entre 0 e 1.000. Se omitido, o Gestor de Tráfego utiliza um peso predefinido de '1'. Defina como '0' para desativar o roteamento de tráfego sem excluir o recurso Perfil do Gerenciador de Tráfego associado. Para obter mais informações, consulte Método de roteamento ponderado do Azure Traffic Manager.
Propriedades ServiceExport
Para adicionar um endpoint para um Service ao Gestor de Tráfego, crie um ServiceExport resource no cluster membro que contém o serviço. O ServiceExport recurso deve ser criado no mesmo namespace que o Service a ser exportado.
apiVersion: networking.fleet.azure.com/v1alpha1
kind: ServiceExport
metadata:
name: kuard-export
namespace: kuard-demo
annotations:
networking.fleet.azure.com/weight: "50"
As propriedades importantes a entender incluem:
-
metadata/namespace: deve corresponder ao namespace doServicea ser exportado. -
metadata/annotations/networking.fleet.azure.com/weight: peso opcional (prioridade) a aplicar a este serviço de exportação. Valor inteiro entre 0 e 1.000. Se omitido, o Gestor de Tráfego utiliza um peso predefinido de '1'. Defina como '0' para desativar o roteamento de tráfego sem excluir o ponto de extremidade de serviço associado. Para obter mais informações, consulte Método de roteamento ponderado do Azure Traffic Manager.
Nome de host DNS exclusivo via anotação de serviço
Para adicionar um Service ao Gerenciador de Tráfego, ele deve ter um nome de host DNS exclusivo. O nome de host DNS pode ser definido seguindo o método recomendado pelo AKS de usar a anotação, service.beta.kubernetes.io/azure-dns-label-name conforme mostrado.
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
A anotação de rótulo DNS pode ser substituída usando o ResourceOverride recurso do Fleet Manager, tornando possível implantar nomes de host exclusivos em vários clusters. Para obter mais informações, consulte o guia de instruções sobre balanceamento de carga DNS.
Controlando o roteamento de tráfego
Nesta seção, examinamos cenários comuns para controlar o roteamento de tráfego entre clusters.
Distribuir o tráfego entre vários clusters
Para permitir que o Gerenciador de Tráfego considere qualquer cluster para receber tráfego, use as definições mostradas.
Crie um
TrafficManagerBackendrecurso e omita aweightpropriedade.apiVersion: networking.fleet.azure.com/v1beta1 kind: TrafficManagerBackend metadata: name: app namespace: work spec: profile: name: myatm backend: name: appEm cada cluster, crie um
ServiceExporte omita a propriedadeweight.apiVersion: networking.fleet.azure.com/v1alpha1 kind: ServiceExport metadata: name: kuard-export namespace: kuard-demo
Uma vez implantado, o Gestor de Tráfego escolherá aleatoriamente um cluster, considerando que todos os clusters têm peso igual.
Distribua o tráfego entre clusters com pesos diferentes
Para fornecer ao Gerenciador de Tráfego dicas de preferência ao selecionar clusters, defina a weight propriedade nos TrafficManagerBackend objetos e ServiceExport .
Crie um
TrafficManagerBackendrecurso e defina aweightpropriedade como100.apiVersion: networking.fleet.azure.com/v1beta1 kind: TrafficManagerBackend metadata: name: app namespace: work spec: profile: name: myatm backend: name: app weight: 100Crie um
ServiceExporte defina aweightpropriedade como um valor que represente a prioridade que o Gerenciador de Tráfego deve usar ao considerar um cluster para receber tráfego.apiVersion: networking.fleet.azure.com/v1alpha1 kind: ServiceExport metadata: name: kuard-export namespace: kuard-demo annotations: networking.fleet.azure.com/weight: "40"
Uma vez implantado, o Gerenciador de Tráfego preferirá clusters com maior peso. Não é necessário definir o valor de peso em cada cluster. Se você definir o mesmo valor de peso em mais de um cluster, o Gerenciador de Tráfego considerará esses clusters igualmente.
Excluir um cluster do encaminhamento de tráfego
Para excluir um cluster do encaminhamento de tráfego, defina a weight propriedade como 0 no recurso ServiceExport. Esse peso remove o endpoint da configuração do Gerenciador de Tráfego.
apiVersion: networking.fleet.azure.com/v1alpha1
kind: ServiceExport
metadata:
name: kuard-export
namespace: kuard-demo
annotations:
networking.fleet.azure.com/weight: "0"
Comportamento de exclusão do TrafficManagerProfile
Quando um TrafficManagerProfile recurso do Kubernetes é excluído, o Gerenciador de Tráfego do Azure associado e seus pontos de extremidade também são excluídos e as solicitações não são mais roteadas para clusters.
Se desejar interromper o roteamento de tráfego, mas manter o Gerenciador de Tráfego do Azure e seus pontos de extremidade, defina a weight propriedade como 0 no TrafficManagerBackend recurso.