Uso de anotações para configurar o balanceamento de carga
Você pode adicionar anotações a um arquivo YAML para usar algumas funções avançadas do CCE. Esta seção descreve as anotações disponíveis quando um serviço LoadBalancer é criado.
- Interligação com o ELB
- Sessão persistente
- Verificação de integridade
- Protocolo HTTP
- Ajuste dinâmico do peso do ECS de back-end
- Capacidade de passagem
- Lista branca
- Rede host
Interligação com o ELB
Parâmetro |
Tipo |
Descrição |
Versão do cluster suportada |
---|---|---|---|
kubernetes.io/elb.class |
String |
Selecione um tipo adequado de balanceador de carga. O valor pode ser:
|
v1.9 ou mais recente |
kubernetes.io/elb.id |
String |
Obrigatório quando um balanceador de carga existente deve ser associado. ID de um balanceador de carga. Como obter: No console de gerenciamento, clique em Service List e escolha Networking > Elastic Load Balance. Clique no nome do balanceador de carga de destino. Na página de guia Summary, localize e copie o ID.
NOTA:
O sistema se conecta preferencialmente ao balanceador de carga com base no campo kubernetes.io/elb.id. Se este campo não for especificado, o campo spec.loadBalancerIP é usado (opcional e disponível apenas em 1.23 e versões anteriores). Não use o campo spec.loadBalancerIP para se conectar ao balanceador de carga. Este campo será descartado pelo Kubernetes. Para obter detalhes, consulte Deprecação. |
v1.9 ou mais recente |
kubernetes.io/elb.autocreate |
Obrigatório quando os balanceadores de carga são criados automaticamente. Exemplo:
|
v1.9 ou mais recente |
|
kubernetes.io/elb.enterpriseID |
String |
Opcional quando balanceadores de carga são criados automaticamente. Clusters de v1.15 e versões posteriores suportam este campo. Nos clusters anteriores à v1.15, os balanceadores de carga são criados no projeto padrão por padrão. Esse parâmetro indica o ID do projeto empresarial no qual o balanceador de carga do ELB será criado. Se esse parâmetro não for especificado ou for definido como 0, os recursos serão vinculados ao projeto corporativo padrão. Como obter: Faça logon no console de gerenciamento e escolha Enterprise > Project Management na barra de menu superior. Na lista exibida, clique no nome do projeto empresarial de destino e copie o ID na página de detalhes do projeto empresarial. |
v1.15 ou mais recente |
kubernetes.io/elb.subnet-id |
String |
Opcional quando balanceadores de carga são criados automaticamente. ID da sub-rede onde o cluster está localizado. O valor pode conter de 1 a 100 caracteres.
|
Obrigatório para versões anteriores à v1.11.7-r0 Descartado em versões posteriores à v1.11.7-r0 |
kubernetes.io/elb.lb-algorithm |
String |
Especifica o algoritmo de balanceamento de carga do grupo de servidores back-end. O valor padrão é ROUND_ROBIN. Opções:
NOTA:
Se esse parâmetro for definido como SOURCE_IP, a configuração de peso (campo weight) dos servidores de back-end vinculados ao grupo de servidores de back-end será inválida e a sessão fixa não poderá ser ativada. |
v1.9 ou mais recente |
A seguir, mostra como usar as anotações anteriores:
- Associar um balanceador de carga existente. Para mais detalhes, consulte Usar o kubectl para criar um Serviço (usando um balanceador de carga existente).
apiVersion: v1 kind: Service metadata: name: nginx annotations: kubernetes.io/elb.id: <your_elb_id> # ELB ID. Replace it with the actual value. kubernetes.io/elb.class: performance # Load balancer type kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm spec: selector: app: nginx ports: - name: service0 port: 80 protocol: TCP targetPort: 80 type: LoadBalancer
- Criar automática de um balanceador de carga. Para mais detalhes, consulte Usar o kubectl para criar um Serviço (criação automática de um balanceador de carga).
Balanceador de carga compartilhado:
apiVersion: v1 kind: Service metadata: annotations: kubernetes.io/elb.class: union kubernetes.io/elb.autocreate: '{ "type": "public", "bandwidth_name": "cce-bandwidth-1551163379627", "bandwidth_chargemode": "bandwidth", "bandwidth_size": 5, "bandwidth_sharetype": "PER", "eip_type": "5_bgp" }' kubernetes.io/elb.enterpriseID: 0 # ID of the enterprise project to which the load balancer belongs kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm labels: app: nginx name: nginx spec: ports: - name: service0 port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer
Balanceador de carga dedicado:apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx namespace: default annotations: kubernetes.io/elb.class: performance kubernetes.io/elb.autocreate: '{ "type": "public", "bandwidth_name": "cce-bandwidth-1626694478577", "bandwidth_chargemode": "bandwidth", "bandwidth_size": 5, "bandwidth_sharetype": "PER", "eip_type": "5_bgp", "available_zone": [ "" ], "l4_flavor_name": "L4_flavor.elb.s1.small" }' kubernetes.io/elb.enterpriseID: 0 # ID of the enterprise project to which the load balancer belongs kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm spec: selector: app: nginx ports: - name: cce-service-0 targetPort: 80 nodePort: 0 port: 80 protocol: TCP type: LoadBalancer
Sessão persistente
Parâmetro |
Tipo |
Descrição |
Versão do cluster suportada |
---|---|---|---|
kubernetes.io/elb.session-affinity-mode |
String |
A sessão persistente baseada em endereço IP de origem é suportada. Ou seja, as solicitações do mesmo endereço IP sejam encaminhadas para o mesmo servidor back-end.
NOTA:
Quando kubernetes.io/elb.lb-algorithm é definido como SOURCE_IP (source IP hash), sessão persistente não pode ser ativada. |
v1.9 ou mais recente |
kubernetes.io/elb.session-affinity-option |
Tempo limite de sessão persistente expira. |
v1.9 ou mais recente |
apiVersion: v1 kind: Service metadata: name: nginx annotations: kubernetes.io/elb.id: <your_elb_id> # ELB ID. Replace it with the actual value. kubernetes.io/elb.class: performance # Load balancer type kubernetes.io/elb.session-affinity-mode: SOURCE_IP # The sticky session type is source IP address. kubernetes.io/elb.session-affinity-option: '{"persistence_timeout": "30"}' # Stickiness duration (min) spec: selector: app: nginx ports: - name: service0 port: 80 protocol: TCP targetPort: 80 type: LoadBalancer
Verificação de integridade
Parâmetro |
Tipo |
Descrição |
Versão do cluster suportada |
---|---|---|---|
kubernetes.io/elb.health-check-flag |
String |
Se deve ativar a verificação de integridade do ELB.
Se esse parâmetro estiver ativado, o campo kubernetes.io/elb.health-check-option também deve ser especificado ao mesmo tempo. |
v1.9 ou mais recente |
kubernetes.io/elb.health-check-option |
Itens de configuração de verificação de integridade do ELB. |
v1.9 ou mais recente |
|
kubernetes.io/elb.health-check-options |
Item de configuração de verificação de integridade do ELB. Cada porta de serviço pode ser configurada separadamente e você pode configurar apenas algumas portas.
NOTA:
kubernetes.io/elb.health-check-option e kubernetes.io/elb.health-check-options não podem ser configurados ao mesmo tempo. |
v1.19.16-r5 ou mais recente v1.21.8-r0 ou mais recente v1.23.6-r0 ou mais recente v1.25.2-r0 ou mais recente |
- O seguinte mostra como usar kubernetes.io/elb.health-check-option:
apiVersion: v1 kind: Service metadata: name: nginx annotations: kubernetes.io/elb.id: <your_elb_id> # ELB ID. Replace it with the actual value. kubernetes.io/elb.class: performance # Load balancer type kubernetes.io/elb.health-check-flag: 'on' # Enable the ELB health check function. kubernetes.io/elb.health-check-option: '{ "protocol":"TCP", "delay":"5", "timeout":"10", "max_retries":"3" }' spec: selector: app: nginx ports: - name: service0 port: 80 protocol: TCP targetPort: 80 type: LoadBalancer
- Para obter detalhes sobre como usar kubernetes.io/elb.health-check-options, consulte Configuração da verificação de integridade para várias portas.
Protocolo HTTP
Parâmetro |
Tipo |
Descrição |
Versão do cluster suportada |
---|---|---|---|
kubernetes.io/elb.protocol-port |
String |
Porta de configuração de encaminhamento da Camada-7 usada pelo Serviço. |
v1.19.16 ou mais recente |
kubernetes.io/elb.cert-id |
String |
Certificado HTTP usado pelo Serviço para encaminhamento de Camada-7. |
v1.19.16 ou mais recente |
Para obter detalhes sobre os cenários de aplicação, consulte Serviço usando HTTP.
Ajuste dinâmico do peso do ECS de back-end
Parâmetro |
Tipo |
Descrição |
Versão do cluster suportada |
---|---|---|---|
kubernetes.io/elb.adaptive-weight |
String |
Ajusta dinamicamente o peso do ECS de back-end do balanceador de carga com base em pods. As solicitações recebidas por cada pod são mais balanceadas.
Esse parâmetro se aplica somente a clusters de v1.21 ou posterior e é inválido na rede de passagem. |
v1.21 ou mais recente |
apiVersion: v1 kind: Service metadata: name: nginx annotations: kubernetes.io/elb.id: <your_elb_id> # ELB ID. Replace it with the actual value. kubernetes.io/elb.class: performance # Load balancer type kubernetes.io/elb.adaptive-weight: 'true' # Enable dynamic adjustment of the weight of the backend ECS. spec: selector: app: nginx ports: - name: service0 port: 80 protocol: TCP targetPort: 80 type: LoadBalancer
Capacidade de passagem
Parâmetro |
Tipo |
Descrição |
Versão do cluster suportada |
---|---|---|---|
kubernetes.io/elb.pass-through |
String |
Se as solicitações de acesso de dentro do cluster para o Serviço passam pelo balanceador de carga do ELB. |
v1.19 ou mais recente |
Para obter detalhes sobre os cenários de aplicação, consulte Configuração de rede de passagem para um Serviço de LoadBalancer.
Lista branca
Parâmetro |
Tipo |
Descrição |
Versão do cluster suportada |
---|---|---|---|
kubernetes.io/elb.acl-id |
String |
Esse parâmetro é obrigatório quando você define uma lista branca de endereços IP para um balanceador de carga. O valor desse parâmetro é o ID do grupo de endereços IP do balanceador de carga. Para obter detalhes, consulte Grupo de endereços IP. Esse parâmetro tem efeito somente para balanceadores de carga dedicados e tem efeito somente quando um Serviço é criado ou uma nova porta de serviço (ouvinte) é especificada. Como obter: Faça logon no console. Na Service List, escolha Networking > Elastic Load Balance. No Console de rede, escolhaElastic Load Balance > IP Address Groups e copie o ID do grupo de endereços IP de destino. |
v1.19.16 v1.21.4 |
kubernetes.io/elb.acl-status |
String |
Esse parâmetro é obrigatório quando você define uma lista branca de endereços IP para um balanceador de carga. O valor está on, indicando que o controle de acesso está ativado. Esse parâmetro tem efeito somente para balanceadores de carga dedicados e tem efeito somente quando um Serviço é criado ou uma nova porta de serviço (ouvinte) é especificada. |
v1.19.16 v1.21.4 |
kubernetes.io/elb.acl-type |
String |
Esse parâmetro é obrigatório quando você define uma lista branca de endereços IP para um balanceador de carga.
Esse parâmetro tem efeito somente para balanceadores de carga dedicados e tem efeito somente quando um Serviço é criado ou uma nova porta de serviço (ouvinte) é especificada. |
v1.19.16 v1.21.4 |
apiVersion: v1 kind: Service metadata: name: nginx annotations: kubernetes.io/elb.id: <your_elb_id> # ELB ID. Replace it with the actual value. kubernetes.io/elb.class: performance # Load balancer type kubernetes.io/elb.acl-id: <your_acl_id> # ELB IP address group ID kubernetes.io/elb.acl-status: 'on' # Enable access control. kubernetes.io/elb.acl-type: 'white' # Whitelist control spec: selector: app: nginx ports: - name: service0 port: 80 protocol: TCP targetPort: 80 type: LoadBalancer
Rede host
Parâmetro |
Tipo |
Descrição |
Versão do cluster suportada |
---|---|---|---|
kubernetes.io/hws-hostNetwork |
String |
Se o pod usar hostNetwork, o ELB encaminhará a solicitação para a rede host depois que essa anotação for usada. Opções:
|
v1.9 ou mais recente |
apiVersion: v1 kind: Service metadata: name: nginx annotations: kubernetes.io/elb.id: <your_elb_id> # ELB ID. Replace it with the actual value. kubernetes.io/elb.class: performance # Load balancer type kubernetes.io/hws-hostNetwork: 'true' # The load balancer forwards the request to the host network. spec: selector: app: nginx ports: - name: service0 port: 80 protocol: TCP targetPort: 80 type: LoadBalancer
Estrutura de dados
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
name |
Não |
String |
Nome do balanceador de carga criado automaticamente. O valor pode conter de 1 a 64 caracteres. Somente letras, dígitos, sublinhados (_), hifens (-) e pontos (.) são permitidos. Padrão: cce-lb+service.UID |
type |
Não |
String |
Tipo de rede do balanceador de carga.
Padrão: inner |
bandwidth_name |
Sim para balanceadores de carga de rede pública |
String |
Nome da largura de banda. O valor padrão é cce-bandwidth-******. O valor pode conter de 1 a 64 caracteres. Somente letras, dígitos, sublinhados (_), hifens (-) e pontos (.) são permitidos. |
bandwidth_chargemode |
Não |
String |
Modo de cobrança de largura de banda.
Padrão: bandwidth |
bandwidth_size |
Sim para balanceadores de carga de rede pública |
Integer |
Tamanho da largura de banda. O valor padrão é de 1 a 2000 Mbit/s. Configure este parâmetro com base na faixa de largura de banda permitida em sua região.
O incremento mínimo para ajuste de largura de banda varia dependendo do intervalo de largura de banda.
|
bandwidth_sharetype |
Sim para balanceadores de carga de rede pública |
String |
Modo de compartilhamento de largura de banda.
|
eip_type |
Sim para balanceadores de carga de rede pública |
String |
Tipo de EIP.
|
vip_subnet_cidr_id |
Não |
String |
Sub-rede onde o balanceador de carga está localizado. Este campo é suportado por clusters de v1.21 ou posterior. Se esse parâmetro não for especificado, o balanceador de carga do ELB e o cluster estarão na mesma sub-rede. |
available_zone |
Sim |
Array of strings |
AZ onde o balanceador de carga está localizado. Você pode obter todas as AZs suportadas consultando a lista de AZ. Esse parâmetro está disponível apenas para balanceadores de carga compartilhados. |
l4_flavor_name |
Sim |
String |
Nome do flavor do balanceador de carga da camada 4. Você pode obter todos os tipos suportados consultando a lista de flavors. Esse parâmetro está disponível apenas para balanceadores de carga compartilhados. |
l7_flavor_name |
Não |
String |
Nome do flavor do balanceador de carga da camada-7. Você pode obter todos os tipos suportados consultando a lista de flavors. Esse parâmetro está disponível apenas para balanceadores de carga compartilhados. O valor deste parâmetro deve ser o mesmo de l4_flavor_name, ou seja, ambos são especificações elásticas ou especificações fixas. |
elb_virsubnet_ids |
Não |
Array of strings |
Sub-rede onde o servidor back-end do balanceador de carga está localizado. Se esse parâmetro for deixado em branco, a sub-rede do cluster padrão será usada. Os balanceadores de carga ocupam um número diferente de endereços IP de sub-rede com base em suas especificações. Não use os blocos CIDR de sub-rede de outros recursos (como clusters e nós) como o bloco CIDR do balanceador de carga. Esse parâmetro está disponível apenas para balanceadores de carga compartilhados. Exemplo: "elb_virsubnet_ids": [ "14567f27-8ae4-42b8-ae47-9f847a4690dd" ] |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
delay |
Não |
String |
Tempo de espera inicial (em segundos) para iniciar a verificação de integridade. Intervalo de valores: 1 a 50. Valor padrão: 5 |
timeout |
Não |
String |
Tempo limite de verificação de integridade, em segundos. Intervalo de valores: 1 a 50. Valor padrão: 10 |
max_retries |
Não |
String |
Número máximo de tentativas de verificação de integridade. Intervalo de valores: 1 a 10. Valor padrão: 3 |
protocol |
Não |
String |
Protocolo de verificação de integridade. Opções de valor: TCP ou HTTP |
path |
Não |
String |
URL de verificação de integridade. Este parâmetro precisa ser configurado quando o protocolo é HTTP. Valor padrão: / O valor pode conter de 1 a 10.000 caracteres. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
target_service_port |
Sim |
String |
Porta para verificação de integridade especificada por spec.ports. O valor consiste no protocolo e no número da porta, por exemplo, TCP:80. |
monitor_port |
Não |
String |
Porta re-especificada para verificação de integridade. Se esse parâmetro não for especificado, a porta de serviço será usada por padrão.
NOTA:
Certifique-se de que a porta esteja no estado de escuta no nó onde o pod está localizado. Caso contrário, o resultado da verificação de integridade será afetado. |
delay |
Não |
String |
Tempo de espera inicial (em segundos) para iniciar a verificação de integridade. Intervalo de valores: 1 a 50. Valor padrão: 5 |
timeout |
Não |
String |
Tempo limite de verificação de integridade, em segundos. Intervalo de valores: 1 a 50. Valor padrão: 10 |
max_retries |
Não |
String |
Número máximo de tentativas de verificação de integridade. Intervalo de valores: 1 a 10. Valor padrão: 3 |
protocol |
Não |
String |
Protocolo de verificação de integridade. Valor padrão: protocolo do Serviço associado Opções de valor: TCP, UDP ou HTTP |
path |
Não |
String |
URL de verificação de saúde. Este parâmetro precisa ser configurado quando o protocolo é HTTP. Valor padrão: / O valor pode conter de 1 a 10.000 caracteres. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
persistence_timeout |
Sim |
String |
Tempo limite de sessão persistente, em minutos. Esse parâmetro é válido somente quando elb.session-affinity-mode é definido como SOURCE_IP. Intervalo de valores: 1 a 60. Valor padrão: 60 |