Configuração da verificação de integridade para várias portas
O campo de anotação relacionado à verificação de integridade do Serviço LoadBalancer é atualizado de Kubernetes.io/elb.health-check-option para Kubernetes.io/elb.health-check-options. Cada porta de Serviço pode ser configurada separadamente e você pode configurar apenas algumas portas. Se o protocolo de porta não precisar ser configurado separadamente, o campo de anotação original ainda estará disponível e não precisará ser modificado.
Restrições
- Este recurso entra em vigor apenas nas seguintes versões:
- v1.19: v1.19.16-r5 ou mais recente
- v1.21: v1.21.8-r0 ou mais recente
- v1.23: v1.23.6-r0 ou mais recente
- v1.25: v1.25.2-r0 ou mais recente
- kubernetes.io/elb.health-check-option e kubernetes.io/elb.health-check-options não podem ser configurados ao mesmo tempo.
- O campo target_service_port é obrigatório e deve ser exclusivo.
- Para uma porta TCP, o protocolo de verificação de integridade só pode ser TCP ou HTTP. Para uma porta UDP, o protocolo de verificação de integridade deve ser UDP.
Procedimento
apiVersion: v1 kind: Service metadata: name: nginx namespace: default labels: app: nginx version: v1 annotations: kubernetes.io/elb.class: union # Load balancer type kubernetes.io/elb.id: <your_elb_id> # ELB ID. Replace it with the actual value. kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm kubernetes.io/elb.health-check-flag: 'on' # Enable ELB health check. kubernetes.io/elb.health-check-options: '[ { "protocol": "TCP", "delay": "5", "timeout": "10", "max_retries": "3", "target_service_port": "TCP:1", // (Mandatory) Port for health check specified by spec.ports. The value consists of the protocol and port number, for example, TCP:80. "monitor_port": "22" // (Optional) Re-specified port for health check. If this parameter is not specified, the service port is used by default. Ensure that the port is in the listening state on the node where the pod is located. Otherwise, the health check result will be affected. }, { "protocol": "HTTP", "delay": "5", "timeout": "10", "max_retries": "3", "path": "/", // Health check URL. This parameter needs to be configured when HTTP is used. "target_service_port": "TCP:2", "monitor_port": "22" } ]' spec: selector: app: nginx version: v1 externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 1 nodePort: 0 port: 1 protocol: TCP - name: cce-service-1 targetPort: 2 nodePort: 0 port: 2 protocol: TCP type: LoadBalancer loadBalancerIP: **.**.**.**
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. |