Vous pouvez utiliser des annotations dans le fichier YAML d'un Service pour activer des fonctionnalités d'équilibrage de charge supplémentaires pour son Network Load Balancer (NLB), telles que la spécification du type de réseau du NLB, l'activation de la protection contre les modifications et la configuration de l'authentification mutuelle. Cette rubrique explique comment utiliser ces annotations pour configurer le NLB. Les configurations sont organisées selon trois types de ressources : l'instance NLB, les écouteurs et les groupes de serveurs.
Index
Catégorie | Catégorie de fonctionnalité | Lien de configuration |
Création | ||
Configuration de l'instance | ||
Création | ||
Configuration de l'écouteur | ||
Configuration de sécurité | ||
Configuration du serveur | ||
Notes
Assurez-vous que votre cluster est en version v1.24 ou ultérieure et que le module complémentaire Cloud Controller Manager (CCM) est en version v2.5.0 ou ultérieure. Pour mettre à niveau le cluster, consultez Mettre à niveau manuellement un cluster ; pour mettre à niveau le module complémentaire, consultez Gérer les composants.
Dans la définition du Service, définissez
spec.loadBalancerClasssuralibabacloud.com/nlb. Si ce paramètre n'est pas spécifié, un Classic Load Balancer (CLB) est créé par défaut.Une fois un Service créé, vous ne pouvez pas modifier le champ
spec.loadBalancerClass. Vous ne pouvez pas convertir le type d'équilibreur de charge de CLB en NLB ou vice versa.Vous ne pouvez pas gérer les instances NLB dans la console ACK. Vous devez utiliser les commandes
kubectlpour effectuer toutes les opérations de gestion.
Opérations NLB
Créer un NLB public
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
Description | Versions CCM prises en charge |
Spécifie la zone, le vSwitch, l'adresse IP privée et les informations EIP pour le NLB. Le format est le suivant :
| Zones et IDs de vSwitch : v2.5.0 ou ultérieure Adresses IP privées et EIP : v2.12.1 ou ultérieure |
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:
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
Créer un NLB privé
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
Description | Versions CCM prises en charge |
Spécifie le type de réseau du NLB. Vous pouvez modifier la valeur de cette annotation pour basculer le NLB entre public et privé. Valeurs valides :
Par défaut : Vous pouvez vous connecter à la console NLB pour afficher les régions et zones prises en charge. Au moins deux zones sont requises. Plusieurs zones sont séparées par des virgules, par exemple | v2.5.0 ou ultérieure |
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:
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
Spécifier une adresse IP privée
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
Description | Versions CCM prises en charge |
Spécifie la zone, le vSwitch, l'adresse IP privée et les informations EIP pour le NLB. Le format est le suivant :
|
|
apiVersion: v1
kind: Service
metadata:
annotations:
# For example, cn-hangzhou-k:vsw-i123456:10.1.0.1,cn-hangzhou-j:vsw-j654321:10.2.0.1
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}:${private-ipv4-A},${zone-B}:${vsw-B}:${private-ipv4-B}"
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
Spécifier un ID d'instance EIP
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
Description | Versions CCM prises en charge |
Spécifie la zone, le vSwitch, l'adresse IP privée et les informations EIP pour le NLB. Le format est le suivant :
| Zones et IDs de vSwitch : v2.5.0 ou ultérieure Adresses IP privées et EIP : v2.12.1 ou ultérieure |
apiVersion: v1
kind: Service
metadata:
annotations:
# If you do not need a private IP address, leave the private IP address field empty.
# For example, cn-hangzhou-k:vsw-i123456::eip-12345,cn-hangzhou-j:vsw-j654321::eip-54321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}::${eip-A},${zone-B}:${vsw-B}::${eip-B}"
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
Spécifier le nom de l'équilibreur de charge
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
|
Description |
Versions CCM prises en charge |
|
Spécifie le nom de l'instance d'équilibreur de charge. Le nom doit comporter entre 2 et 128 caractères, commencer par une lettre ou un caractère chinois et peut contenir des chiffres, des points (.), des traits de soulignement (_) et des traits d'union (-). |
v2.5.0 ou ultérieure |
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}" # The name of the NLB instance.
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
Spécifier un groupe de ressources
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
|
Description |
Versions CCM prises en charge |
|
Spécifie le groupe de ressources pour l'équilibreur de charge. L'ID du groupe de ressources ne peut pas être modifié après sa définition. Vous pouvez trouver l'ID du groupe de ressources dans la console Resource Management. |
v2.5.0 ou ultérieure |
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}" # The ID of the resource group.
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
Créer un NLB à pile double
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
Pour attacher des serveurs backend IPv6, consultez Attacher des serveurs backend IPv6.
Description | Versions CCM prises en charge |
Le mode kube-proxy du cluster doit être IPVS. Spécifie la version du protocole IP du NLB. La version du protocole IP ne peut pas être modifiée après la création. Valeurs valides :
Par défaut : | v2.5.0 ou ultérieure |
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:
externalTrafficPolicy: Local
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
Ajouter des tags supplémentaires
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
Description | Versions CCM prises en charge |
Vous pouvez ajouter des tags supplémentaires. Séparez plusieurs tags par une virgule (,). Par exemple, Important Après l'ajout de cette annotation, toute modification manuelle des tags appliquée à l'instance d'équilibreur de charge dans la console sera écrasée. | v2.5.0 ou ultérieure |
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:
externalTrafficPolicy: Local
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
Utiliser un équilibreur de charge existant
N'ajoutez pas et ne modifiez pas l'annotation de réutilisation pour un service LoadBalancer existant. Cette opération pourrait entraîner l'échec de la réutilisation ou empêcher la libération de l'équilibreur de charge créé par le CCM.
Annotation : Plusieurs annotations sont utilisées, comme décrit dans le tableau suivant.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | Spécifie l'ID de l'équilibreur de charge existant. | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | Indique s'il faut synchroniser les configurations des écouteurs NLB en fonction de la configuration du service. Valeurs possibles :
Valeur par défaut : |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # The ID of the NLB instance.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "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
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Associer un package de bande passante partagé
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id
|
Description |
Versions CCM prises en charge |
|
Spécifie l'ID du package de bande passante partagé à associer. Vous pouvez trouver l'ID du package de bande passante partagé dans la console VPC. |
v2.9.1 ou ultérieure |
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:
externalTrafficPolicy: Local
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
Configurer le transfert inter-zones
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled
Description | Versions CCM prises en charge |
Indique s'il faut activer le transfert inter-zones. Valeurs possibles :
Valeur par défaut : | v2.13.0 ou ultérieure |
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-cross-zone-enabled: "off"
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
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Configurer une liste d'autorisation d'adresses IP source
Champ : .spec.loadBalancerRanges
Description | Versions CCM prises en charge |
Cette fonctionnalité s'applique uniquement aux instances NLB créées et gérées par le CCM. Elle n'est pas prise en charge pour les instances réutilisées. Lorsque vous configurez ce champ, le CCM crée automatiquement un groupe de sécurité, définit les règles d'accès requises et associe le groupe de sécurité à l'instance NLB. Si vous ne configurez pas ce champ ou si vous le laissez vide, aucun groupe de sécurité n'est associé. Valeur par défaut : Vide Important
| v2.14.0 ou ultérieure |
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:
# Specify the allowed source IP address CIDR blocks.
loadBalancerSourceRanges:
- 10.0.0.0/8
- 172.16.0.0/16
externalTrafficPolicy: Local
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
Spécifier le type de réseau IPv6
Annotation : Plusieurs annotations sont utilisées, comme décrit dans le tableau suivant.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version | Le mode kube-proxy du cluster doit être IPVS. Cette annotation spécifie la version du protocole IP pour le NLB. La version du protocole IP ne peut pas être modifiée après la création. Valeurs possibles :
Valeur par défaut : | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type | Spécifie le type de réseau de l'adresse IPv6 du NLB. Valeurs possibles :
Valeur par défaut : Remarque Pour utiliser une adresse IPv6 publique, une passerelle IPv6 doit exister dans le VPC où l'instance NLB est déployée. Pour plus d'informations, consultez Créer et gérer une passerelle IPv6. | v2.9.1 ou ultérieure |
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 # Specify the IPv6 network type as public.
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
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Opérations sur les écouteurs
Définir un groupe de sécurité pour l'écouteur
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids
|
Description |
Versions CCM prises en charge |
|
Spécifie les ID des groupes de sécurité à associer à l'écouteur. Séparez plusieurs ID par une virgule (,), par exemple |
v2.6.0 ou ultérieure |
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" # Separate multiple security group IDs with a comma (,).
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
Configurer un écouteur TCP et UDP
|
Description |
Versions CCM prises en charge |
|
Cette fonctionnalité nécessite Kubernetes v1.24 ou une version ultérieure. Pour plus d'informations sur la mise à niveau d'un cluster, consultez Mettre à niveau un cluster ACK Kubernetes. |
S.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.
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
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
Créer un écouteur 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:
externalTrafficPolicy: Local
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
Créer un écouteur UDP
Si vous ne spécifiez pas de vérification d'état lors de la création d'un écouteur UDP, une vérification d'état TCP est activée par défaut pour le groupe de serveurs. Pour les écouteurs UDP, nous vous recommandons d'utiliser une annotation pour spécifier explicitement une vérification d'état UDP ou pour désactiver les vérifications d'état.
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:
externalTrafficPolicy: Local
ports:
- name: udp
port: 80
protocol: UDP
targetPort: 80
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Créer un écouteur TCPSSL
Annotation : Reportez-vous au tableau suivant pour connaître les annotations requises.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Spécifie le protocole de l'écouteur. Pour spécifier plusieurs protocoles, séparez-les par une virgule (,), par exemple | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Pour obtenir l'ID, connectez-vous à la console Certificate Management Service, créez un certificat et recherchez l'ID sur la page SSL Certificate Management. La figure suivante montre un exemple :
|
Actuellement, les écouteurs TCP/SSL ne prennent pas en charge les groupes de serveurs avec la persistance de l'adresse IP du client activée. Cela signifie que vous ne pouvez pas configurer simultanément les annotations service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:${port}" et service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on". Si vous devez obtenir les adresses IP des clients via NLB, consultez la rubrique Obtenir les adresses IP réelles des clients sur les serveurs backend via NLB.
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"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Configurer une plage de ports d'écouteur
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range
Description | Versions CCM prises en charge |
Cette fonctionnalité nécessite le plug-in réseau Terway. Vous pouvez configurer un écouteur pour qu'il écoute sur une plage de ports spécifiée. L'instance NLB transfère ensuite le trafic de cette plage de ports vers la même plage de ports sur les serveurs backend. Par exemple, si vous configurez la plage de ports 80-100, le trafic vers les ports 80 à 100 sur l'instance NLB est transféré vers les ports 80 à 100 sur les serveurs backend. Le format est Le paramètre | v2.11.4 ou ultérieure |
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.
# Configure listeners for the 80-100 and 400-500 port ranges.
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
# This port configuration is mapped to the 80-100 range.
port: 80
protocol: TCP
# The targetPort specifies the health check port for the backend servers and must be an integer.
targetPort: 80
- name: https
# This port configuration is mapped to the 400-500 range.
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Activer l'authentification mutuelle
Annotation : Reportez-vous au tableau suivant pour connaître les annotations requises.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Spécifie le protocole de l'écouteur. Pour spécifier plusieurs protocoles, séparez-les par une virgule (,), par exemple | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Pour obtenir l'ID, connectez-vous à la console Certificate Management Service, créez un certificat et recherchez l'ID sur la page SSL Certificate Management. La figure suivante montre un exemple :
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id | Pour obtenir l'ID, connectez-vous à la console Certificate Management Service et recherchez l'ID dans les détails du certificat sur la page PCA Certificate Management.
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert | Indique s'il faut activer l'authentification mutuelle. Valeurs possibles :
Valeur par défaut : |
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"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
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:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Définir une politique de sécurité TLS
Annotation : Reportez-vous au tableau suivant pour connaître les annotations requises.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Spécifie le protocole de l'écouteur. Pour spécifier plusieurs protocoles, séparez-les par une virgule (,), par exemple | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Pour obtenir l'ID, connectez-vous à la console Certificate Management Service, créez un certificat et recherchez l'ID sur la page SSL Certificate Management. La figure suivante montre un exemple :
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy | L'ID de la politique de sécurité TLS. Vous pouvez utiliser des politiques de sécurité prédéfinies ou personnalisées. Valeurs possibles :
Valeur par défaut : |
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"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_0"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Activer Proxy Protocol
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
Description | Versions CCM prises en charge |
Indique s'il faut utiliser Proxy Protocol pour transmettre les adresses IP des clients aux serveurs backend. Valeurs possibles :
Valeur par défaut : Important Avant d'activer Proxy Protocol, assurez-vous que vos services backend prennent en charge Proxy Protocol v2. Sinon, les connexions échoueront. Configurez ce paramètre avec précaution. | v2.5.0 ou ultérieure |
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:
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
Transmettre des informations supplémentaires via Proxy Protocol
Annotation : Reportez-vous au tableau suivant pour connaître les annotations requises.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol | Indique s'il faut utiliser Proxy Protocol pour transmettre les adresses IP des clients aux serveurs backend. Valeurs possibles :
Valeur par défaut : Important Avant d'activer Proxy Protocol, assurez-vous que vos services backend prennent en charge Proxy Protocol v2. Sinon, les connexions échoueront. Configurez ce paramètre avec précaution. | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled | Indique s'il faut utiliser Proxy Protocol pour transmettre le VpcId aux serveurs backend. Valeurs possibles :
Valeur par défaut : | v2.9.1 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled | Indique s'il faut utiliser Proxy Protocol pour transmettre le PrivateLinkEpId aux serveurs backend. Valeurs possibles :
Valeur par défaut : | v2.9.1 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled | Indique s'il faut utiliser Proxy Protocol pour transmettre le PrivateLinkEpsId aux serveurs backend. Valeurs possibles :
Valeur par défaut : | v2.9.1 ou ultérieure |
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:
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
Définir une limite de taux de connexion pour l'écouteur
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps
|
Description |
Versions CCM prises en charge |
|
Le nombre maximal de nouvelles connexions par seconde pour une instance Network Load Balancer (NLB). La valeur doit être un entier compris entre 0 et 1 000 000. Une valeur de 0 indique qu'il n'y a aucune limite. |
v2.5.0 ou ultérieure |
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:
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
Définir le délai d'inactivité d'un écouteur
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout
|
Description |
Versions CCM prises en charge |
|
Délai d'expiration des connexions inactives, en secondes. Valeurs valides : 10 à 900. Valeur par défaut : 900 |
v2.5.0 ou ultérieure |
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:
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
Définir une stratégie ALPN
Annotation : Reportez-vous au tableau suivant pour connaître les annotations requises.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Spécifie le protocole de l'écouteur. Pour spécifier plusieurs protocoles, séparez-les par une virgule (,), par exemple | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Pour obtenir l'ID, connectez-vous à la console Certificate Management Service, créez un certificat et recherchez l'ID sur la page SSL Certificate Management. La figure suivante illustre un exemple :
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn | Indique s'il faut activer la négociation de protocole au niveau de la couche application (ALPN). Valeurs valides :
Valeur par défaut : | v2.10.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy | Stratégie ALPN. Valeurs valides :
Pour plus d'informations, consultez le paramètre |
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"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy: "HTTP1Only"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Configurer des certificats supplémentaires
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Spécifie le protocole de l'écouteur. Pour spécifier plusieurs protocoles, séparez-les par une virgule (,), par exemple | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Pour obtenir l'ID, connectez-vous à la console Certificate Management Service, créez un certificat et recherchez l'ID sur la page SSL Certificate Management. La figure suivante illustre un exemple :
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids | IDs des certificats supplémentaires. Séparez les IDs de plusieurs certificats par une virgule (,). Pour obtenir les IDs, connectez-vous à la console Certificate Management Service, créez les certificats et recherchez leurs IDs sur la page SSL Certificate Management. La figure suivante illustre un exemple :
| v2.13.0 ou ultérieure |
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"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids: "${CertIdentifier-1},${CertIdentifier-2}" # Separate multiple additional certificate IDs with a comma (,).
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Opérations typiques pour les groupes de serveurs
Algorithme de planification
annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
Description | Versions CCM prises en charge |
Algorithme de planification. Valeurs valides :
Valeur par défaut : Pour plus d'informations sur les valeurs de cette annotation, consultez le paramètre | v2.5.0 ou ultérieure |
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:
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
Vidage de connexion
annotation : Plusieurs annotations sont disponibles, comme décrit dans le tableau suivant.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain | Indique s'il faut activer le vidage de connexion. Si cette option est activée, le comportement suivant se produit lorsqu'un serveur backend est supprimé ou échoue aux vérifications d'état :
Valeur par défaut : | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout | Délai d'expiration pour le vidage de connexion.
|
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:
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
Préservation de l'adresse IP du client
annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip
Description | Versions CCM prises en charge |
Indique s'il faut activer la préservation de l'adresse IP du client. Valeurs valides :
Valeur par défaut : | v2.5.0 ou ultérieure |
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:
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
Vérifications d'état TCP
annotation : Plusieurs annotations sont disponibles, comme décrit dans le tableau suivant. Pour configurer les vérifications d'état TCP, toutes les annotations suivantes sont requises. Par défaut, les vérifications d'état sont activées pour les ports TCP.
Annotation | Description |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | Indique s'il faut activer les vérifications d'état. Valeurs valides :
Valeur par défaut : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | Protocole de vérification d'état. Valeurs valides :
Valeur par défaut : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port | Port du serveur backend utilisé pour les vérifications d'état. Valeurs valides : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | Temps maximal d'attente pour une réponse de vérification d'état. Unité : secondes. Valeurs valides : Valeur par défaut : 5 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | Nombre de vérifications d'état réussies consécutives nécessaires pour qu'un serveur backend soit considéré comme sain. Valeurs valides : Valeur par défaut : 2 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | Nombre de vérifications d'état échouées consécutives nécessaires pour qu'un serveur backend soit considéré comme non sain. Valeurs valides : Valeur par défaut : 2 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | Intervalle entre les vérifications d'état consécutives. Unité : secondes. Valeurs valides : Valeur par défaut : 5 |
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:
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
Contrôles d'état UDP
annotation : Plusieurs annotations sont disponibles et toutes sont obligatoires. Pour utiliser les contrôles d'état UDP, vérifiez que tous les ports définis dans le Service utilisent le protocole UDP.
Annotation | Description |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | Indique s'il faut activer les contrôles d'état. Valeurs possibles :
Valeur par défaut : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | Le protocole de contrôle d'état. Valeurs possibles :
Valeur par défaut : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port | Le port du serveur utilisé pour les contrôles d'état. Valeurs possibles : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | Le délai d'attente de réponse pour un seul contrôle d'état. En cas de dépassement du délai, le contrôle actuel est considéré comme ayant échoué. Unité : secondes. Plage de valeurs : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | Un serveur backend est considéré comme sain après avoir réussi le nombre spécifié de contrôles d'état consécutifs. Valeurs possibles : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | Valeur par défaut : 2 Le serveur backend est considéré comme non sain après ce nombre d'échecs consécutifs des contrôles d'état. Valeurs possibles : |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | L'intervalle entre les contrôles d'état consécutifs. Unité : secondes. Plage de valeurs : Cette valeur doit être supérieure à la valeur de |
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: "udp"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "3"
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:
externalTrafficPolicy: Local
ports:
- name: udp
port: 80
protocol: UDP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
Contrôles d'état HTTP
annotation : Plusieurs annotations sont disponibles, comme décrit dans le tableau suivant. Pour configurer les contrôles d'état HTTP, toutes les annotations suivantes sont requises. Par défaut, les contrôles d'état utilisent le protocole TCP.
Annotation | Description | Versions CCM prises en charge |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | Indique s'il faut activer les contrôles d'état. Valeurs possibles :
Valeur par défaut : | v2.5.0 ou ultérieure |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | Le protocole de contrôle d'état. Valeurs possibles :
Valeur par défaut : | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | Le chemin d'accès pour le contrôle d'état. Il doit comporter entre 1 et 80 caractères, commencer par une barre oblique ( Remarque Ce paramètre n'est valide que lorsque | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain | Le nom de domaine utilisé pour les contrôles d'état. Valeurs possibles :
Remarque Ce paramètre n'est valide que lorsque | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port | Le port du serveur backend utilisé pour les contrôles d'état. Valeurs possibles : | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | Le temps maximal d'attente pour une réponse de contrôle d'état. Unité : secondes. Valeurs possibles : Valeur par défaut : 5 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | Le nombre de contrôles d'état réussis consécutifs requis pour qu'un serveur backend soit considéré comme sain. Valeurs possibles : Valeur par défaut : 2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | Le nombre d'échecs consécutifs des contrôles d'état requis pour qu'un serveur backend soit considéré comme non sain. Valeurs possibles : Valeur par défaut : 2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | L'intervalle entre les contrôles d'état consécutifs. Unité : secondes. Valeurs possibles : Valeur par défaut : 5 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method | La méthode de contrôle d'état. Valeurs possibles :
Remarque Ce paramètre n'est valide que lorsque |
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"
# Set the health check method. This annotation is optional.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
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
Type de groupe de serveurs
annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type
Description | Versions CCM prises en charge |
Le type de groupe de serveurs. Valeurs possibles :
Valeur par défaut : Pour plus d'informations sur les types de groupes de serveurs NLB, consultez Groupes de serveurs. | v2.8.0 ou ultérieure |
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:
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
Serveurs backends IPv6
annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-ip-version
Description | Versions CCM prises en charge |
La version IP des serveurs backends dans le groupe de serveurs.
Valeur par défaut : ipv4 Remarque Lorsque vous ajoutez à la fois des serveurs backends IPv4 et IPv6 à un groupe de serveurs, l'utilisation du quota de pods est doublée. |
|
Réutilisation d'un groupe de serveurs
annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
Cette annotation vous permet de réutiliser un groupe de serveurs existant. Elle prend effet uniquement lorsque vous réutilisez une instance NLB existante. Pour un exemple, consultez Déployer des services entre clusters en réutilisant un équilibreur de charge.
Pondération du trafic de service
annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
Dans les scénarios où plusieurs Services réutilisent la même instance NLB, vous pouvez utiliser cette annotation pour définir la pondération du trafic pour le Service actuel. Cette annotation prend effet uniquement lorsque vous réutilisez un groupe de serveurs existant. Pour un exemple, consultez Déployer des services entre clusters en réutilisant un équilibreur de charge.
Ignorer les mises à jour de pondération
annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
Description | Versions CCM prises en charge |
Lorsqu'elle est définie sur
Valeur par défaut : | v2.11.1 ou ultérieure |
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
Pondération par défaut des serveurs backends
annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight
Description | Versions CCM prises en charge |
La pondération par défaut des serveurs backends dans le groupe de serveurs. Une pondération plus élevée signifie que le serveur reçoit une part plus importante du trafic entrant. Le montant augmente. Valeurs possibles : Cette configuration ne prend pas effet lorsque l'instance backend est une instance ECS et que la stratégie | v2.14.0 ou ultérieure |
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
# Sets the default weight of servers in the server group to 35.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
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

