Les passerelles Service Mesh (ASM) constituent le point d'entrée du trafic pour vos activités professionnelles. Il est crucial d'améliorer la haute disponibilité des passerelles ASM afin d'éviter les interruptions de service. Cette rubrique explique comment optimiser la haute disponibilité des passerelles ASM.
Prérequis
Une instance ASM a été créée. Pour plus d'informations, consultez la section Créer une instance ASM.
Un cluster Container Service for Kubernetes (ACK) ou un cluster ACK Serverless a été créé. Pour plus d'informations, consultez les sections Créer un cluster ACK managé ou Créer un cluster ACK Serverless.
Améliorer la haute disponibilité des passerelles ASM dans un cluster ACK
Dans un cluster ACK, configurez une politique d'anti-affinité de pod dans le fichier YAML lors de la création d'une passerelle ASM. Cette configuration permet de répartir les pods de la passerelle ASM sur différents nœuds ou zones, ce qui améliore la haute disponibilité de la passerelle.
-
Configurez le paramètre podAntiAffinity de la passerelle ASM pour distribuer les pods de la passerelle sur différents nœuds.
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: name: ingressgateway-1 namespace: istio-system spec: clusterIds: - "c954ee9df88f64f229591f0ea4c61****" cpu: targetAverageUtilization: 80 externalTrafficPolicy: Local maxReplicas: 4 minReplicas: 2 ports: - name: status-port port: 15020 targetPort: 15020 - name: http2 port: 80 targetPort: 80 - name: https port: 443 targetPort: 80 - name: tls port: 15443 targetPort: 15443 replicaCount: 1 resources: limits: cpu: '2' memory: 2G requests: cpu: 200m memory: 256Mi sds: enabled: true resources: requests: cpu: 100m memory: 128Mi limits: cpu: 2000m memory: 1024Mi serviceType: LoadBalancer affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - istio-ingressgateway-1 topologyKey: kubernetes.io/hostname weight: 100 rollingMaxSurge: "100%" rollingMaxUnavailable: "25%"preferredDuringSchedulingIgnoredDuringExecution : indique que l'anti-affinité de pod est une politique d'affinité souple. Si aucun nœud ne répond aux exigences configurées, le pod peut tout de même être planifié.
matchExpressions : définissez key sur app, operator sur In et values sur istio-ingressgateway-1. Ce paramétrage spécifie qu'un pod ne peut pas être déployé sur le même nœud que les pods portant le libellé
app=istio-ingressgateway-1. Autrement dit, chaque nœud ne peut exécuter qu'un seul pod avec le libelléapp=istio-ingressgateway-1.-
topologyKey : spécifie la dimension dans laquelle l'anti-affinité de pod s'applique.
Dans cet exemple,
kubernetes.io/hostnameest spécifié, ce qui indique que la politique s'applique au domaine de topologie des nœuds.
-
Configurez le paramètre podAntiAffinity de la passerelle ASM pour distribuer les pods de la passerelle sur différentes zones.
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: name: ingressgateway-1 namespace: istio-system spec: clusterIds: - "c954ee9df88f64f229591f0ea4c61****" cpu: targetAverageUtilization: 80 externalTrafficPolicy: Local maxReplicas: 4 minReplicas: 2 ports: - name: status-port port: 15020 targetPort: 15020 - name: http2 port: 80 targetPort: 80 - name: https port: 443 targetPort: 80 - name: tls port: 15443 targetPort: 15443 replicaCount: 1 resources: limits: cpu: '2' memory: 2G requests: cpu: 200m memory: 256Mi sds: enabled: true resources: requests: cpu: 100m memory: 128Mi limits: cpu: 2000m memory: 1024Mi serviceType: LoadBalancer affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - istio-ingressgateway-1 topologyKey: topology.kubernetes.io/zone weight: 100 rollingMaxSurge: "100%" rollingMaxUnavailable: "25%"preferredDuringSchedulingIgnoredDuringExecution : indique que l'anti-affinité de pod est une politique d'affinité souple. Si aucun nœud ne répond aux exigences configurées, le pod peut tout de même être planifié.
matchExpressions : définissez key sur app, operator sur In et values sur istio-ingressgateway-1. Ce paramétrage spécifie qu'un pod ne peut pas être déployé dans la même zone que les pods portant le libellé
app=istio-ingressgateway-1. Autrement dit, chaque zone ne peut exécuter qu'un seul pod avec le libelléapp=istio-ingressgateway-1.-
topologyKey : spécifie la dimension dans laquelle l'anti-affinité de pod s'applique.
Dans cet exemple,
topology.kubernetes.io/zoneest spécifié, ce qui indique que la politique s'applique au domaine de topologie des zones.
Améliorer la haute disponibilité des passerelles ASM dans un cluster ACK Serverless
Le cluster ACK Serverless ne prend pas en charge les politiques de planification par anti-affinité de pod. Toutefois, vous pouvez créer des pods Elastic Container Instance (ECI) dans un cluster ACK Serverless et les répartir sur différentes zones afin d'améliorer la haute disponibilité de la passerelle ASM.
Configurez plusieurs zones dans le cluster ACK Serverless. Pour plus d'informations, consultez la section Créer des ECI entre les zones.
-
Utilisez l'
annotation de poddans la passerelle ASM pour associer les pods aux zones.apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: name: ingressgateway namespace: istio-system spec: clusterIds: - "c954ee9df88f64f229591f0ea4c61****" cpu: targetAverageUtilization: 80 externalTrafficPolicy: Local maxReplicas: 4 minReplicas: 2 ports: - name: status-port port: 15020 targetPort: 15020 - name: http2 port: 80 targetPort: 80 - name: https port: 443 targetPort: 80 - name: tls port: 15443 targetPort: 15443 replicaCount: 1 resources: limits: cpu: '2' memory: 2G requests: cpu: 200m memory: 256Mi sds: enabled: true resources: requests: cpu: 100m memory: 128Mi limits: cpu: 2000m memory: 1024Mi serviceType: LoadBalancer podAnnotations: k8s.aliyun.com/eci-vswitch: "vsw-bp1b07j0miob3khtn****,vsw-bp12b85hh323se8ft****" k8s.aliyun.com/eci-schedule-strategy: "VSwitchRandom" rollingMaxSurge: "100%" rollingMaxUnavailable: "25%"k8s.aliyun.com/eci-vswitch : identifiants des différents vSwitches dans le Virtual Private Cloud (VPC). Les vSwitches sont utilisés pour associer les pods aux zones.
k8s.aliyun.com/eci-schedule-strategy : politique de planification pour les pods ECI. Dans cette rubrique, vous devez utiliser la politique
VSwitchRandom, qui planifie aléatoirement les pods ECI sur plusieurs zones.