Pour activer des fonctionnalités d'équilibrage de charge avancées, configurez les instances CLB, les écouteurs et les groupes de serveurs backend en ajoutant des annotations à votre fichier YAML de Service.
Index
|
Catégorie |
Catégorie de fonctionnalité |
Lien de configuration |
|
Créer un équilibreur de charge |
||
|
Spécifier une instance existante |
||
|
Configurer l'équilibreur de charge |
|
|
|
Activer la protection de l'instance |
||
|
Paramètres de persistance de session |
||
|
Configuration du port et du protocole |
||
|
Configuration avancée |
||
|
Gestion de la configuration |
||
Remarques sur l'utilisation des annotations
Les valeurs des annotations sont sensibles à la casse.
Avant d'utiliser les annotations, vérifiez la version du composant CCM prise en charge pour chaque fonctionnalité décrite dans cette rubrique. Pour mettre à niveau le composant CCM, consultez Composants. Pour consulter l'historique des modifications du composant CCM, reportez-vous à Cloud Controller Manager.
-
Depuis le 11 septembre 2019, le préfixe du champ
annotationsest passé dealicloudàalibaba-cloud.Exemple :
Avant la mise à jour :
service.beta.kubernetes.io/alicloud-loadbalancer-idAprès la mise à jour :
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idLe système reste compatible avec le préfixe
alicloud. Aucune modification n'est requise.
Opérations CLB typiques
Créer une instance SLB orientée Internet
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Créer une instance SLB orientée réseau interne
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
|
Description |
Version CCM prise en charge |
|
Spécifiez l'instance SLB comme étant orientée réseau interne. Valeurs valides :
Valeur par défaut : Consultez la section Spécifier le vSwitch pour l'instance SLB pour spécifier manuellement un vSwitch pour le CLB. Si aucun vSwitch n'est spécifié, le système en sélectionne automatiquement un en fonction de la version du CCM :
|
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Spécification de l'instance SLB
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type |
Méthode de facturation de l'instance. Valeurs possibles :
Valeur par défaut : Important
|
v2.4.0 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec |
Spécification de l'instance SLB. Utilisez ce paramètre pour créer une instance SLB avec une spécification donnée ou mettre à jour la spécification d'une instance SLB existante. Valeurs possibles :
Valeur par défaut : Pour obtenir la liste complète des valeurs valides, consultez CreateLoadBalancer. Important
Si vous modifiez la spécification SLB dans la console CLB (opération uniquement possible pour les instances SLB facturées par spécification), le CCM risque de rétablir la spécification d'origine. Procédez avec prudence. |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayBySpec"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Utilisation d'une instance SLB existante
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
|
Description |
Version CCM prise en charge |
|
Important
ID de l'instance SLB. Utilisez cette annotation pour spécifier un CLB existant.
|
v1.9.3.81-gca19cd4-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Utilisation d'une instance SLB existante avec écrasement forcé des écouteurs
Annotation : Plusieurs, comme indiqué dans le tableau suivant. L'écrasement forcé des écouteurs existants supprime les écouteurs en conflit.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id |
Important
Afin d'éviter tout comportement inattendu, tel qu'une indisponibilité du cluster ou une interruption du trafic, ne réutilisez pas les instances CLB du serveur API ni les instances CLB créées par le CCM. Créez manuellement une nouvelle instance depuis la console Classic Load Balancer (CLB). ID de l'instance SLB. Utilisez cette annotation pour spécifier un CLB existant.
|
v1.9.3.81-gca19cd4-aliyun et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners |
Lors de la liaison à une instance SLB existante, détermine s'il faut synchroniser les configurations des écouteurs CLB en fonction du service.
Valeur par défaut : Important
Lors de la réutilisation d'un CLB existant et de la définition de |
v1.9.3.81-gca19cd4-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Spécification des zones principale et secondaire lors de la création d'une instance SLB
Annotation : Plusieurs, comme indiqué dans le tableau suivant. Les zones principale et secondaire ne peuvent pas être modifiées après la création.
Certaines régions ne prennent pas en charge les zones principale et secondaire pour les instances SLB. Consultez la page de création CLB pour plus de détails.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid |
ID de la zone du serveur backend principal. |
v1.9.3.10-gfb99107-aliyun et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid |
ID de la zone du serveur backend de secours. |
v1.9.3.10-gfb99107-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "cn-hangzhou-k"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "cn-hangzhou-j"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Création d'une instance SLB facturée au volume de bande passante
Annotation : Plusieurs, comme indiqué dans le tableau suivant. Les deux annotations sont obligatoires.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type |
Méthode de facturation de l'instance SLB. Valeurs possibles :
Valeur par défaut : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth |
Bande passante de l'instance SLB, représentant la bande passante de crête. Valeur par défaut : 50. S'applique uniquement aux instances SLB orientées Internet. Pour connaître les autres limites, consultez Modifier la méthode de facturation pour une instance SLB orientée Internet. |
v1.9.3.10-gfb99107-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "2"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Spécifier un vSwitch pour l'instance SLB
Annotation : Plusieurs, comme indiqué dans le tableau ci-dessous. Les deux annotations sont requises.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type |
Spécifiez l'instance SLB comme étant interne. Valeurs valides :
Valeur par défaut : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id |
ID du vSwitch de l'instance SLB. Le vSwitch doit appartenir au même VPC que le cluster Kubernetes. Lorsque vous définissez ce paramètre, définissez également Connectez-vous à la console Virtual Private Cloud pour interroger l'ID du vSwitch. |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Spécifier une adresse IP pour un SLB interne
Annotation : Plusieurs, comme indiqué dans le tableau ci-dessous. Les trois annotations sont requises.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type |
Spécifiez l'instance SLB comme étant interne. Valeurs valides :
Valeur par défaut : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id |
ID du vSwitch de l'instance SLB. Le vSwitch doit appartenir au même VPC que le cluster Kubernetes. Lorsque vous définissez ce paramètre, définissez également Connectez-vous à la console Virtual Private Cloud pour interroger l'ID du vSwitch. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip |
Adresse IP de l'instance SLB interne.
|
v2.7.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip: "192.168.x.x"
name: nginx
namespace: default
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
name: http
selector:
app: nginx
Ajouter des tags supplémentaires à l'instance SLB
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
|
Description |
Version CCM prise en charge |
|
Liste des tags à ajouter. Séparez plusieurs tags par des virgules anglaises (,). Exemple : Important
Après avoir ajouté cette annotation pour spécifier des tags supplémentaires, toute modification manuelle des tags apportée à l'instance SLB correspondante dans la console risque d'être écrasée. |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Créer une instance SLB IPv6
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
|
Description |
Version CCM prise en charge |
|
Version IP de l'instance SLB. Le type d'IP ne peut pas être modifié après la création. Lorsque vous utilisez cette fonctionnalité, assurez-vous que le mode proxy kube-proxy de votre cluster est IPVS. Valeurs valides :
Valeur par défaut : |
v1.9.3.220-g24b1885-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Activer la protection contre la suppression pour l'instance SLB
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection
|
Description |
Version CCM prise en charge |
|
Protection contre la suppression pour l'instance SLB. Valeurs valides :
Valeur par défaut : Important
Pour les instances SLB créées par des services de type LoadBalancer, même si vous activez manuellement la protection contre la suppression dans la console CLB, vous pouvez toujours supprimer l'instance SLB associée en exécutant |
v1.9.3.313-g748f81e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Activer le mode lecture seule de la configuration pour l'instance SLB
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection
|
Description |
Version CCM prise en charge |
|
Protection contre la modification de la configuration pour l'instance SLB. Valeurs valides :
Valeur par défaut : |
v1.9.3.313-g748f81e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Spécifier le nom de l'instance SLB
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
|
Description |
Version CCM prise en charge |
|
Nom de l'instance SLB. 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 (-). |
v1.9.3.313-g748f81e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "your-svc-name"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Spécifiez le groupe de ressources pour l'instance SLB
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
|
Description |
Version CCM prise en charge |
|
ID du groupe de ressources de l'instance SLB. Une fois spécifié, l'ID du groupe de ressources ne peut plus être modifié. Consultez l'ID du groupe de ressources dans la console Alibaba Cloud Resource Management. |
v1.9.3.313-g748f81e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "rg-xxxx"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Définissez le nom d'hôte pour le Service
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez les différentes valeurs par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname |
Définissez un nom d'hôte pour le Service. Le nom d'hôte doit respecter les règles de dénomination DNS. Prenez note des points suivants :
|
v2.3.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname: "${your_service_hostname}"
name: nginx-svc
namespace: default
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Résultat attendu :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc loadBalancer 47.100.XX.XX www.example.com 80:30248/TCP,443:32670/TCP 10s
Créez une instance SLB facturée à l'utilisation
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type
|
Description |
Version CCM prise en charge |
|
Méthode de facturation de l'instance. Valeurs valides :
Valeur par défaut : Important
|
v2.4.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayByCLCU"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Opérations typiques sur les écouteurs
Configurez le délai d'expiration de la persistance de session pour TCP SLB
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout
|
Description |
Version CCM prise en charge |
|
Délai d'expiration de la persistance de session. S'applique uniquement aux écouteurs TCP. Si l'instance SLB comporte plusieurs écouteurs TCP, ce paramètre s'applique par défaut à tous les écouteurs TCP. Unité : secondes. Plage valide : [0, 3600]. Valeur par défaut : 0 (persistance de session désactivée). Pour plus d'informations, consultez CreateLoadBalancerTCPListener. |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "1800"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Configurer la persistance de session (insertion de cookie) pour les écouteurs HTTP et HTTPS
Annotation : Plusieurs, comme indiqué dans le tableau suivant. Les quatre annotations sont requises lors de l'insertion de cookies.
S'applique uniquement aux instances SLB HTTP et HTTPS.
Si plusieurs écouteurs HTTP ou HTTPS sont configurés, la persistance de session s'applique par défaut à tous les écouteurs HTTP et HTTPS.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session |
Active la persistance de session. S'applique uniquement aux écouteurs HTTP et HTTPS. Valeurs valides :
Valeur par défaut : Pour plus d'informations, consultez les rubriques CreateLoadBalancerHTTPListener et CreateLoadBalancerHTTPSListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type |
Méthode de gestion des cookies. S'applique uniquement aux écouteurs HTTP et HTTPS. Requis lorsque
Pour plus d'informations, consultez les rubriques CreateLoadBalancerHTTPListener et CreateLoadBalancerHTTPSListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout |
Délai d'expiration du cookie. Requis lorsque Pour plus d'informations, consultez les rubriques CreateLoadBalancerHTTPListener et CreateLoadBalancerHTTPSListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie |
Nom du cookie configuré sur le serveur. Longueur : 1 à 200 caractères. Ne peut contenir que des lettres ASCII et des chiffres. Ne doit pas contenir de virgules (,), de points-virgules (;), d'espaces, ni commencer par un signe dollar ($). Requis lorsque Pour plus d'informations, consultez les rubriques CreateLoadBalancerHTTPListener et CreateLoadBalancerHTTPSListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez les différentes valeurs par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type: "insert"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout: "1800"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurer un groupe de politiques de contrôle d'accès pour SLB
Annotation : Plusieurs, comme indiqué dans le tableau suivant. Les trois annotations sont requises.
Avant d'utiliser cette annotation pour créer un équilibreur de charge SLB avec contrôle d'accès, créez un groupe de politiques de contrôle d'accès dans la console Classic Load Balancer CLB et notez son ID (acl-id).
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status |
Active le contrôle d'accès. Valeurs valides :
Valeur par défaut : |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id |
ID du groupe de politiques de contrôle d'accès associé à l'écouteur. Requis lorsque |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type |
Type de contrôle d'accès. Valeurs valides :
|
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: "${YOUR_ACL_ID}" # Does not support multiple policy groups.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Spécifier le port de redirection pour SLB
La redirection de port permet de rediriger les requêtes HTTP vers des ports HTTPS.
Annotation : Plusieurs, comme indiqué dans le tableau suivant. Les trois annotations sont requises.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez les différentes valeurs par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID du certificat sur Alibaba Cloud. Connectez-vous à la console CLB et consultez l'ID du certificat sur la page Certificates. Remarque
Pour créer un certificat, consultez la rubrique Sélectionner un certificat émis par Alibaba Cloud. |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port |
Redirige les requêtes HTTP vers un port HTTPS spécifié. Exemple : |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port: "80:443"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 80
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Définir l'algorithme de planification pour SLB
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
|
Description |
Version CCM prise en charge |
|
Algorithme de planification. Valeurs valides :
Valeur par défaut : Pour connaître les autres valeurs valides, consultez le champ |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Créer un écouteur UDP
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Créer un écouteur HTTP
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port
Contrôle d'intégrité : les contrôles d'intégrité des écouteurs HTTP sont désactivés par défaut. Pour garantir la disponibilité du service principal, configurez des contrôles d'intégrité HTTP ou TCP pour le port de l'écouteur.
Accès depuis le cluster : Lorsque vous accédez au service via l'adresse IP CLB depuis l'intérieur du cluster, le trafic des requêtes peut être tronqué en interne, ce qui entraîne des problèmes d'accès. Consultez la section Définir le nom d'hôte pour le service afin de forcer le trafic à passer par le CLB en ajoutant une annotation. Pour plus de détails, voir Remarques sur l'accès à l'adresse IP externe du service LoadBalancer depuis l'intérieur du cluster.
|
Description |
Version CCM prise en charge |
|
Séparez plusieurs valeurs par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Créer un écouteur HTTPS
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
Les requêtes HTTPS sont déchiffrées au niveau du CLB et envoyées aux pods principaux sous forme de requêtes HTTP.
Contrôle d'intégrité : les contrôles d'intégrité des écouteurs HTTPS sont désactivés par défaut. Pour garantir la disponibilité du service principal, configurez des contrôles d'intégrité HTTP ou TCP pour le port de l'écouteur.
Accès depuis le cluster : Lorsque vous accédez au service via l'adresse IP CLB depuis l'intérieur du cluster, le trafic des requêtes peut être tronqué en interne, ce qui entraîne des problèmes d'accès. Consultez la section Définir le nom d'hôte pour le service afin de forcer le trafic à passer par le CLB en ajoutant une annotation. Pour plus de détails, voir Remarques sur l'accès à l'adresse IP externe du service LoadBalancer depuis l'intérieur du cluster.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez plusieurs valeurs par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID du certificat sur Alibaba Cloud. Connectez-vous à la console CLB et affichez l'ID du certificat sur la page Certificates. Remarque
Pour créer un certificat, consultez la section Sélectionner un certificat émis par Alibaba Cloud. |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Erreur de protocole SSL lors de l'accès à CLB depuis un cluster
Symptômes
Après avoir créé un écouteur HTTPS pour un service, celui-ci fonctionne correctement lorsqu'il est accessed depuis l'extérieur du cluster. Toutefois, lorsque vous utilisez curl pour accéder au port HTTPS du CLB associé au service depuis un nœud ou un pod à l'intérieur du cluster, l'erreur suivante est renvoyée :
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
Cause
Ce problème survient en raison des règles IP Virtual Server (IPVS) sur le nœud :
Configuration du service : Un écouteur HTTPS sur un CLB ne prend en charge que le protocole HTTP pour les services principaux. Par conséquent, le service doit être configuré pour transférer le trafic du port
port: 443vers le porttargetPort: 80. ACK crée alors une règle IPVS sur le nœud. Cette règle transfère directement le trafic du port443vers le port principal80.Transfert de couche 4 : IPVS opère au niveau de la couche 4 de la pile de protocoles TCP/IP. Il ne fait que transférer les paquets de données TCP et n'analyse pas les protocoles de la couche application tels que TLS ou HTTPS.
Incompatibilité de protocole : Le client (curl) envoie une requête HTTPS contenant des données de handshake TLS. IPVS transfère directement cette requête vers le port HTTP
80du service principal. Comme ce port n'est pas configuré pour TLS, il ne peut pas analyser la requête TLS. En conséquence, le service principal renvoie une erreur HTTP400et le client signale une erreur de protocole SSL.
Solution
Ajoutez l'annotation service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname au service. Cette annotation empêche la génération de règles IPVS sur les nœuds et force le trafic au sein du cluster à passer par le CLB. Cela garantit que le CLB gère correctement le handshake TLS. Pour plus d'informations, consultez la section .
Configurer des certificats de nom de domaine supplémentaires pour l'écouteur HTTPS
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez plusieurs valeurs par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID du certificat sur Alibaba Cloud. Connectez-vous à la console CLB et affichez l'ID du certificat sur la page Certificates. Remarque
Pour créer un certificat, consultez la section Sélectionner un certificat émis par Alibaba Cloud. |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions |
Spécifiez les noms de domaine supplémentaires et les ID de certificat au format Connectez-vous à la console CLB et affichez l'ID du certificat sur la page Certificates. |
v2.13.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions: "${DOMAIN_1}:${CERT_ID_1},${DOMAIN_2}:${CERT_ID_2}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Créer un écouteur avec vérification d'état
Configurer la vérification d'état TCP
Annotation : Plusieurs, comme indiqué dans le tableau suivant. Toutes les annotations sont obligatoires.
Les vérifications d'état sont activées par défaut pour les ports TCP.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch |
Active les vérifications d'état pour les écouteurs TCP et UDP. Valeurs possibles :
Valeur par défaut : |
v2.6.0 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type |
Type de vérification d'état. Valeurs possibles :
Valeur par défaut : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout |
Délai d'attente de réponse lors de la vérification d'état, applicable au mode TCP. Si l'instance ECS backend ne répond pas correctement dans le délai spécifié, la vérification d'état échoue. Unité : secondes. Plage valide : [1, 300]. Si la valeur de |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
Nombre de vérifications d'état consécutives réussies nécessaires pour faire passer l'état de santé du serveur backend de Plage valide : [2, 10]. Valeur par défaut : 3. Pour plus d'informations, consultez CreateLoadBalancerTCPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
Nombre de vérifications d'état consécutives échouées nécessaires pour faire passer l'état de santé du serveur backend de success à fail. Plage valide : [2, 10]. Valeur par défaut : 3. Pour plus d'informations, consultez CreateLoadBalancerTCPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
Intervalle entre les vérifications d'état. Unité : secondes. Plage valide : [1, 50]. Valeur par défaut : 2. Pour plus d'informations, consultez CreateLoadBalancerTCPListener. |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "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: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurer la vérification d'état UDP
Annotation : Plusieurs, comme indiqué dans le tableau suivant. Toutes les annotations sont obligatoires.
Les vérifications d'état sont activées par défaut pour les ports UDP.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch |
Active les vérifications d'état pour les écouteurs TCP et UDP. Valeurs possibles :
Valeur par défaut : |
v2.6.0 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout |
Délai d'attente de réponse lors de la vérification d'état, applicable au mode TCP. Si l'instance ECS backend ne répond pas correctement dans le délai spécifié, la vérification d'état échoue. Unité : secondes. Plage valide : [1, 300]. Si la valeur de |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
Nombre de vérifications d'état consécutives réussies nécessaires pour faire passer l'état de santé du serveur backend de fail à success. Plage valide : [2, 10]. Valeur par défaut : 3. Pour plus d'informations, consultez CreateLoadBalancerUDPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
Nombre de vérifications d'état consécutives échouées nécessaires pour faire passer l'état de santé du serveur backend de success à fail. Plage valide : [2, 10]. Valeur par défaut : 3. Pour plus d'informations, consultez CreateLoadBalancerUDPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
Intervalle entre les vérifications d'état. Unité : secondes. Plage valide : [1, 50]. Valeur par défaut : 2. Pour plus d'informations, consultez CreateLoadBalancerUDPListener. |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Désactiver la vérification d'état pour les écouteurs TCP et UDP
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch
|
Description |
Version CCM prise en charge |
|
Active les vérifications d'état pour les écouteurs TCP et UDP. Valeurs possibles :
Valeur par défaut : |
v2.6.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "off" # Disable health check
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Configurer la vérification d'état HTTP
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag |
Valeurs valides :
Valeur par défaut : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type |
Type de vérification d'état. Valeurs valides :
Valeur par défaut : Pour plus d'informations, consultez CreateLoadBalancerHTTPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri |
URI pour les vérifications d'état. Non requis lorsque le type de vérification d'état est TCP. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode |
Codes d'état HTTP indiquant une vérification réussie. Séparez plusieurs codes d'état par des virgules anglaises. Valeurs valides :
Valeur par défaut : Pour plus d'informations, consultez CreateLoadBalancerHTTPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain |
Nom de domaine pour les vérifications d'état. Valeurs valides :
Pour plus d'informations, consultez CreateLoadBalancerHTTPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout |
Délai d'attente d'une réponse à la vérification d'état, applicable au mode HTTP. Si le serveur ECS backend ne répond pas correctement dans le délai spécifié, la vérification d'état échoue. Unité : secondes. Plage valide : [1, 300]. Si la valeur de Pour plus d'informations, consultez CreateLoadBalancerHTTPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
Nombre de vérifications d'état réussies consécutives requises pour faire passer l'état de santé du serveur backend de l'échec à la réussite. Plage valide : [2, 10]. Valeur par défaut : 3. Pour plus d'informations, consultez CreateLoadBalancerHTTPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
Nombre de vérifications d'état échouées consécutives requises pour faire passer l'état de santé du serveur backend de la réussite à l'échec. Plage valide : [2, 10]. Valeur par défaut : 3. Pour plus d'informations, consultez CreateLoadBalancerHTTPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
Intervalle de vérification d'état. Unité : secondes. Plage valide : [1, 50]. Valeur par défaut : 2. Pour plus d'informations, consultez CreateLoadBalancerHTTPListener. |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez plusieurs valeurs par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method |
Méthode de vérification d'état pour les écouteurs HTTP. Valeurs valides :
|
v2.3.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
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-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
# Set HTTP status code for health check (optional)
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode: "http_4xx"
# Set domain for health check (optional)
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.aliyun.com"
# Set health check method (optional)
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurer la vidange de connexion pour l'écouteur
Annotation : Plusieurs, comme indiqué dans le tableau suivant. Toutes les annotations sont requises.
S'applique uniquement aux protocoles TCP et UDP.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain |
Activer la vidange de connexion. Valeurs valides :
|
v2.0.1 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout |
Définir le délai d'expiration de la vidange de connexion. Unité : secondes. Plage valide : [10, 900]. |
v2.0.1 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
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:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurer des en-têtes de requête supplémentaires pour l'écouteur
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
S'applique uniquement aux protocoles HTTP et HTTPS.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez plusieurs valeurs par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto |
Configurer l'obtention du protocole de l'écouteur CLB via l'en-tête X-Forwarded-Proto. Valeurs valides :
Valeur par défaut : |
v2.1.0 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport |
Configurer l'obtention du port de l'écouteur de l'instance SLB via l'en-tête XForwardedFor_SLBPORT. Valeurs valides :
Valeur par défaut : |
v2.9.1 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport |
Configurer l'obtention du port client accédant à l'instance SLB via l'en-tête XForwardedFor_ClientSrcPort. Valeurs valides :
Valeur par défaut : |
v2.9.1 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport: "on"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Définir le délai d'inactivité pour l'écouteur
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
S'applique uniquement aux protocoles HTTP et HTTPS.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez plusieurs valeurs par des virgules (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout |
Définit le délai d'inactivité de la connexion pour l'écouteur. Unité : secondes. Plage valide : [1, 60]. Valeur par défaut : 15 |
v2.1.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Désactiver HTTP/2 pour l'écouteur
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
S'applique uniquement au protocole HTTPS.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez plusieurs valeurs par des virgules (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID du certificat sur Alibaba Cloud. Connectez-vous à la console CLB et consultez l'ID du certificat sur la page Certificates. Remarque
Pour créer un certificat, consultez Sélectionner un certificat émis par Alibaba Cloud. |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled |
Activez HTTP/2. Valeurs valides :
Valeur par défaut : |
v2.1.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled: "off"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Définir le délai d'expiration des requêtes pour l'écouteur
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
S'applique uniquement aux protocoles HTTP et HTTPS.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez plusieurs valeurs par des virgules (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout |
Définit le délai d'expiration des requêtes. Unité : secondes. Plage valide : [1, 180]. Valeur par défaut : 60 Si le serveur backend ne répond pas dans le délai imparti, SLB arrête d'attendre et renvoie une erreur HTTP 504 au client. |
v2.3.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Définir le délai d'expiration de la connexion pour l'écouteur
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout
S'applique uniquement au protocole TCP.
|
Description |
Version CCM prise en charge |
|
Délai d'expiration de la connexion. Unité : secondes. Plage valide : [10, 900]. Pour plus d'informations, consultez CreateLoadBalancerTCPListener. |
v2.3.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurer la stratégie de sécurité pour l'écouteur
Annotation : Plusieurs, comme indiqué dans le tableau suivant.
S'applique uniquement au protocole HTTPS.
|
Annotation |
Description |
Version CCM prise en charge |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Séparez plusieurs valeurs par des virgules (,). Exemple : |
v1.9.3 et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID du certificat sur Alibaba Cloud. Connectez-vous à la console CLB et consultez l'ID du certificat sur la page Certificates. Remarque
Pour créer un certificat, consultez Sélectionner un certificat émis par Alibaba Cloud. |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy |
La stratégie de sécurité inclut les versions TLS facultatives et les suites de chiffrement pour HTTPS. Pour plus d'informations, consultez CreateLoadBalancerHTTPSListener. Valeurs valides :
Valeur par défaut : |
v2.4.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_2"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurer les protocoles TCP et UDP pour l'écouteur
Cette fonctionnalité nécessite une version Kubernetes du cluster v1.24 ou ultérieure. Pour les instructions de mise à niveau, consultez Mettre à niveau la version Kubernetes du cluster ACK.
apiVersion: v1
kind: Service
metadata:
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
type: LoadBalancer
Configurer le Proxy Protocol pour les écouteurs TCP et UDP
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
Lors de l'accès au service via l'IP CLB depuis le cluster, le trafic des requêtes peut être tronqué en interne, ce qui entraîne des problèmes d'accès. Consultez Définir le nom d'hôte pour le service pour forcer le trafic à passer par le CLB en ajoutant une annotation. Pour plus de détails, consultez Remarques sur l'accès à l'IP externe du service LoadBalancer depuis le cluster.
|
Description |
Version CCM prise en charge |
|
Configurez le Proxy Protocol pour les écouteurs TCP et UDP. Lorsqu'il est activé, le Proxy Protocol transmet l'adresse source du client aux serveurs backend. Valeurs valides :
Valeur par défaut : Important
Cette fonctionnalité ne prend pas en charge la migration transparente. La modification du Proxy Protocol nécessite une interruption de service. Configurez avec prudence. |
v2.6.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Opérations typiques sur les groupes de serveurs backend
Utiliser des nœuds de travail avec des libellés spécifiques comme serveurs backend
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label
|
Description |
Version CCM prise en charge |
|
Spécifiez les nœuds de travail à monter sur le backend du CLB à l'aide de libellés. Séparez plusieurs libellés par des virgules anglaises (,). Exemple : |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: "failure-domain.beta.kubernetes.io/zone=ap-southeast-5a"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Utiliser les nœuds où résident les pods comme serveurs backend
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
La valeur par défaut de externalTrafficPolicy est le mode Cluster, qui monte tous les nœuds du cluster sur le backend. Le mode Local ne monte que les nœuds où résident les pods.
|
Description |
Version CCM prise en charge |
|
Algorithme de planification. Valeurs possibles :
Valeur par défaut : |
v1.9.3 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Supprimer les nœuds à l'état unschedulable du backend du CLB
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
|
Description |
Version CCM prise en charge |
|
Supprimez les nœuds SchedulingDisabled du backend du CLB. Valeurs possibles :
Valeur par défaut : |
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Monter directement les ENI des pods sur le backend du CLB
Annotation : service.beta.kubernetes.io/backend-type
|
Description |
Valeur par défaut |
Version CCM prise en charge |
|
Type de serveur backend du CLB. Valeurs possibles :
|
|
v1.9.3.164-g2105d2e-aliyun et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/backend-type: "eni"
name: nginx
spec:
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Réutiliser un groupe de serveurs virtuel existant
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
Prend en charge la réutilisation des groupes de serveurs virtuels existants. S'applique uniquement lors de la réutilisation d'instances CLB existantes. Pour des exemples d'utilisation, consultez Réaliser un déploiement de service inter-clusters en réutilisant des instances SLB existantes.
Définir le poids du trafic pour le Service
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
Dans les scénarios où plusieurs Services réutilisent le même CLB, utilisez cette annotation pour définir le poids du trafic pour le Service actuel. Cette annotation s'applique uniquement lors de la réutilisation de groupes de serveurs virtuels existants. Pour des exemples d'utilisation, consultez Réaliser un déploiement de service inter-clusters en réutilisant des instances SLB existantes.
Ignorer les mises à jour du poids des serveurs backend
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
|
Description |
Version CCM prise en charge |
|
Ignorez la mise à jour des poids des serveurs backend dans le groupe de serveurs virtuels lors de la synchronisation du Service. Utilisez ce paramètre lorsque vous gérez manuellement les poids des serveurs backend en dehors du CCM. Valeurs possibles :
Valeur par défaut : |
v2.11.1 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Définir le poids par défaut des serveurs backend
Annotation : service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight
|
Description |
Version CCM prise en charge |
|
Définissez le poids par défaut des serveurs dans le groupe de serveurs. Des poids plus élevés entraînent un trafic de requêtes plus important. Plage valide : [0, 100]. Si non spécifié, le système utilise le poids par défaut correspondant au type de réseau actuel. Ce paramètre ne s'applique pas lorsque l'instance backend est une instance ECS et que la propriété |
v2.14.0 et versions ultérieures |
apiVersion: v1
kind: Service
metadata:
annotations:
# Set default server weight in server group to 35
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer