Gateway masuk dari instance Service Mesh (ASM) berfungsi sebagai titik masuk trafik bisnis. Untuk mencegah ketidaktersediaan bisnis, gateway masuk harus tersedia. Topik ini menjelaskan cara meningkatkan ketersediaan untuk layanan gateway masuk dari instance ASM.
Prasyarat
Sebuah instance ASM telah dibuat. Untuk informasi lebih lanjut, lihat Buat Instance ASM.
Sebuah kluster Container Service for Kubernetes (ACK) atau kluster ACK Serverless telah dibuat. Untuk informasi lebih lanjut, lihat Buat Kluster ACK yang Dikelola atau Buat Kluster ACK Serverless.
Meningkatkan ketersediaan untuk layanan gateway masuk yang diterapkan di kluster ACK
Anda dapat menggunakan file YAML untuk membuat dan mengonfigurasi gateway masuk untuk instance ASM. Saat Anda membuat gateway masuk dan menerapkannya di kluster ACK, Anda dapat mengonfigurasi kebijakan anti-afinitas pod dalam file YAML gateway masuk untuk menetapkan pod gateway masuk ke node atau zona yang berbeda. Ini meningkatkan ketersediaan gateway masuk.
Tetapkan parameter podAntiAffinity untuk menetapkan pod gateway masuk ke node yang berbeda.
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: Mengaktifkan afinitas pod lunak. Ini menentukan bahwa Anda dapat menjadwalkan pod meskipun pod tidak memenuhi persyaratan tertentu.
matchExpressions: Kebijakan yang digunakan untuk menetapkan pod. Tetapkan parameter key menjadi app, parameter operator menjadi In, dan parameter values menjadi istio-ingressgateway-1. Ini menentukan bahwa pod gateway masuk tidak dapat ditempatkan pada node yang sama dengan pod yang memiliki label
app=istio-ingressgateway-1. Akibatnya, setiap node hanya dapat berisi satu pod dengan labelapp=istio-ingressgateway-1.topologyKey: Dimensi tempat kebijakan anti-afinitas pod berlaku.
Dalam contoh ini, nilainya diatur ke
kubernetes.io/hostname, yang menunjukkan bahwa kebijakan anti-afinitas pod berlaku pada node.
Tetapkan parameter podAntiAffinity untuk menetapkan pod gateway masuk ke zona yang berbeda.
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: Mengaktifkan afinitas pod lunak. Ini menentukan bahwa Anda dapat menjadwalkan pod meskipun pod tidak memenuhi persyaratan tertentu.
matchExpressions: Kebijakan yang digunakan untuk menetapkan pod. Tetapkan parameter key menjadi app, parameter operator menjadi In, dan parameter values menjadi istio-ingressgateway-1. Ini menentukan bahwa pod gateway masuk tidak dapat ditempatkan di zona yang sama dengan pod yang memiliki label
app=istio-ingressgateway-1. Akibatnya, setiap zona hanya dapat berisi satu pod dengan labelapp=istio-ingressgateway-1.topologyKey: Dimensi tempat kebijakan anti-afinitas pod berlaku.
Dalam contoh ini, parameter ini diatur ke
topology.kubernetes.io/zone, yang menunjukkan bahwa kebijakan anti-afinitas pod berlaku pada zona.
Meningkatkan ketersediaan untuk layanan gateway masuk yang diterapkan di kluster ACK Serverless
Kluster Kubernetes tanpa server tidak mendukung kebijakan anti-afinitas pod. Untuk meningkatkan ketersediaan untuk layanan gateway masuk yang diterapkan di kluster ACK Serverless, Anda dapat membuat pod Elastic Container Instance (ECI) di kluster dan menetapkan pod ke zona yang berbeda.
Konfigurasikan beberapa zona di kluster ACK Serverless Anda. Untuk informasi lebih lanjut, lihat Buat ECI Lintas Zona.
Tetapkan parameter
podAnnotationsuntuk gateway masuk yang diterapkan di kluster ACK Serverless untuk mengaitkan zona dengan gateway masuk ini.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: ID vSwitch yang termasuk dalam virtual private cloud (VPC) zona yang akan dikaitkan.
k8s.aliyun.com/eci-schedule-strategy: Kebijakan penjadwalan pod ECI. Dalam contoh ini, nilainya diatur ke VSwitchRandom, yang menunjukkan bahwa pod ECI ditetapkan ke zona secara acak.