Adicione annotations ao YAML do seu Service Kubernetes para configurar instâncias de Network Load Balancer (NLB), listeners e server groups sem acessar o console.
Pré-requisitos
Antes de começar, verifique se você tem:
Um componente CCM na versão 2.5.0 ou posterior no cluster ACK. Para atualizar, consulte Gerenciar componentes
Um Service com
spec.loadBalancerClassdefinido comoalibabacloud.com/nlb. Sem esse campo, o ACK cria um Classic Load Balancer (CLB) por padrão
Após a criação de um Service, não é possível alterar spec.loadBalancerClass. Instâncias CLB e NLB não são conversíveis entre si.
Índice de annotations
Todas as annotations usam o prefixo service.beta.kubernetes.io/alibaba-cloud-loadbalancer-. A tabela abaixo lista todas as annotations por categoria.
|
Categoria |
Annotation (apenas sufixo) |
Obrigatório |
Versão mínima do CCM |
|
Instância NLB |
Sim |
2.5.0 |
|
|
Não |
2.5.0 |
||
|
Não |
2.5.0 |
||
|
Não |
2.5.0 |
||
|
Não |
2.5.0 |
||
|
Não |
2.5.0 |
||
|
Não |
— |
||
|
Não |
2.5.0 |
||
|
Não |
2.9.1 |
||
|
Não |
2.9.1 |
||
|
Não |
2.10.0 |
||
|
Listener |
Não |
2.6.0 |
|
|
Não |
2.5.0 |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
2.5.0 |
||
|
Não |
2.9.1 |
||
|
Não |
2.9.1 |
||
|
Não |
2.9.1 |
||
|
Não |
2.5.0 |
||
|
Não |
2.5.0 |
||
|
Não |
2.11.4 |
||
|
Server group |
Não |
2.5.0 |
|
|
Não |
2.5.0 |
||
|
Não |
— |
||
|
Não |
2.5.0 |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
2.8.0 |
||
|
Não |
— |
||
|
Não |
— |
||
|
Não |
2.11.1 |
Operações de instância NLB
Criar uma instância NLB pública
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Zonas da instância NLB. Especifique pelo menos duas zonas diferentes em uma lista separada por vírgulas no formato |
Nenhum |
2.5.0 |
Para garantir alta disponibilidade, selecione vSwitches em pelo menos duas zonas diferentes.
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Criar uma instância NLB privada
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Tipo de rede da instância NLB. Valores válidos: |
|
2.5.0 |
Para garantir alta disponibilidade, selecione vSwitches em pelo menos duas zonas diferentes.
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Especificar um nome
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Nome da instância NLB. Deve ter de 2 a 128 caracteres, começar com uma letra ou caractere chinês e pode conter dígitos, pontos (.), sublinhados (_) e hifens (-). |
Nenhum |
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Especificar um grupo de recursos
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Grupo de recursos da instância NLB. Após a definição, o grupo de recursos não pode ser alterado. Consulte o ID do seu grupo de recursos no console de Gerenciamento de Recursos da Alibaba Cloud. |
Nenhum |
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "${your-resource-group-id}"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Criar uma instância NLB dual-stack
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Versão IP da instância NLB. Não pode ser alterada após a criação da instância. Valores válidos: |
|
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Adicionar tags
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Tags personalizadas para adicionar à instância NLB. Separe múltiplas tags com vírgulas, por exemplo, |
Nenhum |
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Usar uma instância NLB existente
Defina ambas as annotations juntas.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Sim |
ID da instância NLB existente. |
Nenhum |
— |
|
|
Não |
Controla se o CCM gerencia os listeners na instância existente. |
|
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Associar uma instância de Internet Shared Bandwidth
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id
|
Descrição |
Padrão |
Versão mínima do CCM |
|
ID da instância de Internet Shared Bandwidth a ser associada à instância NLB. Consulte o ID do pacote de largura de banda no console VPC. |
Nenhum |
2.9.1 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id: "cbwp-xxxxxxxxxx"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Especificar o tipo de rede IPv6
Use ambas as annotations juntas para configurar uma instância NLB dual-stack com um tipo de rede IPv6 específico.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Sim |
Versão IP. Deve ser |
|
2.5.0 |
|
|
Não |
Tipo de rede IPv6. |
|
2.9.1 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type: internet
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Reter a instância NLB ao excluir o serviço
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete
|
Descrição |
Versão mínima do CCM |
|
Retém a instância NLB criada pelo Service quando você exclui o Service LoadBalancer. Quando ativado, as tags |
2.10.0 |
Exclua o Service para acionar a retenção em vez de alterar o tipo de serviço. Alterar o tipo pode fazer com que o serviço seja reassociado incorretamente à instância NLB retida.
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Operações de listener
Definir grupos de segurança
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Grupos de segurança a serem atribuídos ao listener. Separe múltiplos IDs de grupos de segurança com vírgulas, por exemplo, |
Nenhum |
2.6.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Configurar protocolos TCP e UDP para um listener
Este recurso requer Kubernetes 1.24 ou posterior. Para instruções de atualização, consulte Atualizar um cluster ACK.
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: udp
port: 80
protocol: UDP
targetPort: 81
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Criar um listener TCP
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Criar um listener UDP
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
name: nginx
namespace: default
spec:
ports:
- name: udp
port: 80
protocol: UDP
targetPort: 80
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Criar um listener TCP sobre SSL
Defina ambas as annotations juntas.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Sim |
Protocolo e porta do listener. Separe múltiplos valores com vírgulas, por exemplo, |
Nenhum |
2.5.0 |
|
|
Sim |
ID do certificado do servidor. Crie e visualize certificados no console do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Service. O formato combinado do ID do certificado é |
Nenhum |
— |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
# Chinese mainland regions: ${your-cert-id}-cn-hangzhou
# Regions outside the Chinese mainland: ${your-cert-id}-ap-southeast-1
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${the-combined-certificate-id}"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Ativar autenticação mútua
Defina todas as quatro annotations juntas.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Sim |
Protocolo e porta do listener. Por exemplo, |
Nenhum |
2.5.0 |
|
|
Sim |
ID do certificado do servidor. Visualize-o no console do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Service. |
Nenhum |
— |
|
|
Sim |
ID do certificado CA. Visualize-o no console do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Service. |
Nenhum |
— |
|
|
Sim |
Ativa ou desativa a autenticação mútua. |
Nenhum |
— |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
# Chinese mainland regions: ${your-cert-id}-cn-hangzhou
# Regions outside the Chinese mainland: ${your-cert-id}-ap-southeast-1
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${the-combined-certificate-id}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-id}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert: "on"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Definir uma política de segurança TLS
Defina todas as três annotations juntas.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Sim |
Protocolo e porta do listener. Por exemplo, |
Nenhum |
2.5.0 |
|
|
Sim |
ID do certificado do servidor. Visualize-o no console do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Service. |
Nenhum |
— |
|
|
Não |
Política de segurança TLS. Políticas de sistema e personalizadas são compatíveis. Valores válidos: |
|
— |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
# Chinese mainland regions: ${your-cert-id}-cn-hangzhou
# Regions outside the Chinese mainland: ${your-cert-id}-ap-southeast-1
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${the-combined-certificate-id}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_0"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Definir Proxy Protocol
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Transmite endereços IP do cliente para servidores backend via Proxy Protocol. |
|
2.5.0 |
Antes de ativar o Proxy Protocol, certifique-se de que o Proxy Protocol v2 esteja habilitado no serviço backend. Caso contrário, as solicitações de acesso falharão.
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Transportar informações adicionais via Proxy Protocol
Use proxy-protocol junto com uma ou mais das seguintes annotations para passar metadados do PrivateLink aos servidores backend.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Sim |
Habilita o Proxy Protocol. Deve ser definido como |
|
2.5.0 |
|
|
Não |
Transmite o VpcId para servidores backend via Proxy Protocol. |
|
2.9.1 |
|
|
Não |
Transmite o PrivateLinkEpId para servidores backend via Proxy Protocol. |
|
2.9.1 |
|
|
Não |
Transmite o PrivateLinkEpsId para servidores backend via Proxy Protocol. |
|
2.9.1 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled: "on"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Definir o máximo de novas conexões por segundo
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Número máximo de novas conexões por segundo na instância NLB. Valores válidos: 0–1.000.000. |
Nenhum |
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps: "100"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Definir o tempo limite de conexão ociosa
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Período de tempo limite de conexão ociosa em segundos. Valores válidos: 10–900. |
900 |
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Configurar um intervalo de portas de listener
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range
|
Descrição |
Versão mínima do CCM |
|
Configura o encaminhamento de todas as portas na instância NLB. O listener monitora um intervalo de portas e encaminha o tráfego para as portas correspondentes do servidor backend. Formato: |
2.11.4 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range: "80-100:80,400-500:443"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80 # Health check port on the backend server. Must be an integer.
- name: https
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Operações de server group
Definir um algoritmo de agendamento
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Algoritmo de agendamento para distribuir tráfego aos servidores backend. Valores válidos: |
|
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "sch"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Configurar connection draining
Defina ambas as annotations juntas.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Sim |
Habilita o connection draining. |
|
2.5.0 |
|
|
Sim |
Período de tempo limite do connection draining em segundos. Valores válidos: 10–900. |
Nenhum |
— |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Ativar preservação de IP do cliente
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Preserva o endereço IP original do cliente ao encaminhar tráfego para servidores backend. |
|
2.5.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Configurar health checks TCP
Health checks TCP são habilitados por padrão. Use as seguintes annotations para personalizar o comportamento.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Não |
Habilita ou desabilita health checks. |
|
— |
|
|
Não |
Protocolo do health check. |
|
— |
|
|
Não |
Porta do servidor backend usada para health checks. Valores válidos: 0–65535. |
|
— |
|
|
Não |
Tempo limite máximo de resposta para um health check em segundos. Valores válidos: 1–300. |
|
— |
|
|
Não |
Número de verificações bem-sucedidas consecutivas antes que um servidor backend seja declarado saudável. Valores válidos: 2–10. |
|
— |
|
|
Não |
Número de verificações com falha consecutivas antes que um servidor backend seja declarado não saudável. Valores válidos: 2–10. |
|
— |
|
|
Não |
Intervalo entre health checks consecutivos em segundos. Valores válidos: 1–50. |
|
— |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "tcp"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "8"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Configurar health checks HTTP
Health checks TCP são habilitados por padrão. Para alternar para health checks HTTP, defina health-check-type como http e configure as annotations necessárias abaixo.
|
Annotation |
Obrigatório |
Descrição |
Padrão |
Versão mínima do CCM |
|
|
Não |
Habilita ou desabilita health checks. |
|
2.5.0 |
|
|
Sim |
Defina como |
|
— |
|
|
Sim |
Caminho para health checks HTTP. Deve começar com |
Nenhum |
— |
|
|
Sim |
Nome de domínio para health checks HTTP. |
Nenhum |
— |
|
|
Não |
Porta do servidor backend usada para health checks. Valores válidos: 0–65535. |
|
— |
|
|
Não |
Tempo limite máximo de resposta para um health check em segundos. Valores válidos: 1–300. |
|
— |
|
|
Não |
Número de verificações bem-sucedidas consecutivas antes que um servidor backend seja declarado saudável. Valores válidos: 2–10. |
|
— |
|
|
Não |
Número de verificações com falha consecutivas antes que um servidor backend seja declarado não saudável. Valores válidos: 2–10. |
|
— |
|
|
Não |
Intervalo entre health checks consecutivos em segundos. Valores válidos: 1–50. |
|
— |
|
|
Não |
Método HTTP para health checks. |
Nenhum |
— |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "http"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri: "/test/index.html"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.test.com"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head" # Optional.
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Definir o tipo de server group
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type
|
Descrição |
Padrão |
Versão mínima do CCM |
|
Tipo de server group. |
|
2.8.0 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type: "Ip"
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Reutilizar um server group existente
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
Reutiliza um server group existente. Esta annotation tem efeito apenas ao reutilizar uma instância NLB existente. Para um exemplo de uso, consulte Implantar serviços entre clusters reutilizando uma instância SLB existente.
Definir o peso de tráfego para um serviço
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
Define o peso de tráfego para o serviço atual quando múltiplos serviços compartilham a mesma instância NLB. Esta annotation tem efeito apenas ao reutilizar um server group existente. Para um exemplo de uso, consulte Implantar serviços entre clusters reutilizando uma instância SLB existente.
Ignorar atualizações de peso do servidor backend
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
|
Descrição |
Versão mínima do CCM |
|
Ignora a atualização de pesos dos servidores backend no server group durante a sincronização do serviço. Use esta annotation ao gerenciar pesos de servidores backend manualmente. |
2.11.1 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer