Service Mesh (ASM) ağ geçitleri, iş yüklerinizin trafik giriş noktası olarak hizmet verir. Hizmet kesintilerini önlemek amacıyla ASM ağ geçitlerinin yüksek kullanılabilirliğini artırmak büyük önem taşır. Bu konuda, ASM ağ geçitlerinin yüksek kullanılabilirliğinin nasıl artırılacağı açıklanmaktadır.
Ön koşullar
Bir ASM örneği oluşturun. Daha fazla bilgi için bkz. ASM örneği oluşturma.
Bir Container Service for Kubernetes (ACK) kümesi veya bir ACK Serverless kümesi oluşturun. Daha fazla bilgi için bkz. Yönetilen ACK kümesi oluşturma veya ACK Serverless kümesi oluşturma.
ACK kümesinde ASM ağ geçidi yüksek kullanılabilirliğini artırma
ACK kümesinde, bir ASM ağ geçidi oluştururken YAML dosyasında pod anti-affinity ilkesi yapılandırın. Bu işlem, ASM ağ geçidine ait podları farklı düğümlere veya alanlara dağıtarak ağ geçidinin yüksek kullanılabilirliğini artırır.
-
ASM ağ geçidine ait podları farklı düğümlere dağıtmak için ASM ağ geçidinin podAntiAffinity parametresini yapılandırın.
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: Pod anti-affinity değerinin yumuşak bir yakınlık ilkesi olduğunu belirtir. Yapılandırılan gereksinimleri karşılayan bir düğüm bulunmasa bile pod yine de zamanlanabilir.
matchExpressions: key değerini app, operator değerini In ve values değerini istio-ingressgateway-1 olarak ayarlayın. Bu ayar, bir podun
app=istio-ingressgateway-1etiketine sahip diğer podlarla aynı düğümde çalıştırılamayacağını belirtir. Diğer bir deyişle, her düğümde yalnızcaapp=istio-ingressgateway-1etiketine sahip tek bir pod çalıştırılabilir.-
topologyKey: Pod anti-affinity özelliğinin geçerli olduğu boyutu belirtir.
Bu örnekte,
kubernetes.io/hostnamedeğeri belirtilmiştir; bu da ilkenin düğüm topoloji alanında etkili olduğunu gösterir.
-
ASM ağ geçidine ait podları farklı alanlara dağıtmak için ASM ağ geçidinin podAntiAffinity parametresini yapılandırın.
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: Pod anti-affinity değerinin yumuşak bir yakınlık ilkesi olduğunu belirtir. Yapılandırılan gereksinimleri karşılayan bir düğüm bulunmasa bile pod yine de zamanlanabilir.
matchExpressions: key değerini app, operator değerini In ve values değerini istio-ingressgateway-1 olarak ayarlayın. Bu ayar, bir podun
app=istio-ingressgateway-1etiketine sahip diğer podlarla aynı alanda çalıştırılamayacağını belirtir. Diğer bir deyişle, her alanda yalnızcaapp=istio-ingressgateway-1etiketine sahip tek bir pod çalıştırılabilir.-
topologyKey: Pod anti-affinity özelliğinin geçerli olduğu boyutu belirtir.
Bu örnekte,
topology.kubernetes.io/zonedeğeri belirtilmiştir; bu da ilkenin alan topoloji alanında etkili olduğunu gösterir.
ACK Serverless kümesi içinde ASM ağ geçidi yüksek kullanılabilirliğini artırma
ACK Serverless kümesi pod anti-affinity zamanlama ilkelerini desteklemez. Ancak, ACK Serverless kümesi içinde Elastic Container Instance (ECI) podları oluşturularak bunlar farklı alanlara dağıtılabilir ve böylece ASM ağ geçidinin yüksek kullanılabilirliği artırılabilir.
ACK Serverless kümesi içinde birden çok alan yapılandırın. Daha fazla bilgi için bkz. Alanlar arasında ECI oluşturma.
-
Podları alanlarla ilişkilendirmek için ASM ağ geçidinde
pod annotationkullanın.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: Sanal özel cloud (VPC) içindeki farklı vSwitch'lerin kimlikleri. Bu vSwitch'ler, podları alanlarla ilişkilendirmek için kullanılır.
k8s.aliyun.com/eci-schedule-strategy: ECI podları için zamanlama ilkesi. Bu konuda, ECI podlarını rastgele olarak birden çok alana zamanlayan
VSwitchRandomilkesi kullanılmalıdır.