Dalam kluster Container Service for Kubernetes (ACK) dengan plug-in jaringan Terway terpasang, Anda dapat menggunakan fitur NetworkPolicy untuk mengontrol komunikasi antar pod. Pada kluster ACK besar yang menggunakan Terway, proxy NetworkPolicy dapat meningkatkan beban manajemen kluster. Untuk mengatasi masalah ini, optimalkan fitur NetworkPolicy. Topik ini menjelaskan cara meningkatkan performa fitur NetworkPolicy pada kluster ACK besar dalam mode Terway.
Informasi latar belakang
Terway mengimplementasikan fitur NetworkPolicy menggunakan agen Felix dari Calico. Dalam kluster ACK besar, agen Felix di setiap node mengambil aturan proxy dari server API, meningkatkan beban server tersebut. Untuk mengurangi beban server API, Anda dapat menonaktifkan fitur NetworkPolicy atau menerapkan komponen Typha sebagai pengulang.
Berikut adalah cara untuk meningkatkan performa fitur NetworkPolicy pada kluster ACK besar:
Terapkan Typha sebagai pengulang.
Nonaktifkan fitur NetworkPolicy.
CatatanSetelah menonaktifkan fitur NetworkPolicy, Anda tidak dapat lagi menggunakan kebijakan jaringan untuk mengontrol komunikasi antar pod.
Prasyarat
Kluster ACK dengan Terway terpasang dan lebih dari 100 node telah dibuat. Untuk informasi lebih lanjut, lihat Buat Kluster ACK Dikelola.
File kubeconfig kluster diperoleh dan klien kubectl terhubung ke kluster.
Terapkan Typha sebagai pengulang
Masuk ke Konsol ACK.
Perbarui Terway ke versi terbaru. Untuk informasi lebih lanjut, lihat Kelola Komponen.
Komponen yang digunakan dalam mode Terway berbeda-beda. Untuk informasi lebih lanjut, lihat Bandingkan Mode Terway.
Buat file bernama calico-typha.yaml dan salin konten berikut ke dalamnya untuk menerapkan Typha sebagai pengulang.
apiVersion: v1 kind: Service metadata: name: calico-typha namespace: kube-system labels: k8s-app: calico-typha spec: ports: - port: 5473 protocol: TCP targetPort: calico-typha name: calico-typha selector: k8s-app: calico-typha --- apiVersion: apps/v1 kind: Deployment metadata: name: calico-typha namespace: kube-system labels: k8s-app: calico-typha spec: replicas: 3 # Ubah nilai parameter replicas berdasarkan ukuran kluster. Buat 1 replika untuk setiap 200 node. Anda harus membuat setidaknya tiga replika. revisionHistoryLimit: 2 selector: matchLabels: k8s-app: calico-typha template: metadata: labels: k8s-app: calico-typha annotations: cluster-autoscaler.kubernetes.io/safe-to-evict: 'true' spec: nodeSelector: kubernetes.io/os: linux hostNetwork: true tolerations: - operator: Exists serviceAccountName: terway priorityClassName: system-cluster-critical containers: -image: registry-vpc.{REGION-ID}.aliyuncs.com/acs/typha:v3.20.2 # Ganti {REGION-ID} dengan ID wilayah kluster. name: calico-typha ports: - containerPort: 5473 name: calico-typha protocol: TCP env: - name: TYPHA_LOGSEVERITYSCREEN value: "info" - name: TYPHA_LOGFILEPATH value: "none" - name: TYPHA_LOGSEVERITYSYS value: "none" - name: TYPHA_CONNECTIONREBALANCINGMODE value: "kubernetes" - name: TYPHA_DATASTORETYPE value: "kubernetes" - name: TYPHA_HEALTHENABLED value: "true" livenessProbe: httpGet: path: /liveness port: 9098 host: localhost periodSeconds: 30 initialDelaySeconds: 30 readinessProbe: httpGet: path: /readiness port: 9098 host: localhost periodSeconds: 10 --- apiVersion: policy/v1 # Jika versi Kubernetes kluster lebih awal dari 1.21, atur nilai parameter apiVersion ke policy/v1beta1. kind: PodDisruptionBudget metadata: name: calico-typha namespace: kube-system labels: k8s-app: calico-typha spec: maxUnavailable: 1 selector: matchLabels: k8s-app: calico-typha --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: bgppeers.crd.projectcalico.org spec: scope: Cluster group: crd.projectcalico.org versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: apiVersion: type: string names: kind: BGPPeer plural: bgppeers singular: bgppeerCatatanGanti {REGION-ID} dengan ID wilayah yang sesuai.
Ubah nilai parameter replicas berdasarkan ukuran kluster. Buat satu replika untuk setiap 200 node. Minimal tiga replika harus dibuat.
Ubah nilai parameter
apiVersiondariPodDisruptionBudgetberdasarkan versi Kubernetes kluster. Jika versi Kubernetes kluster adalah 1.21 atau lebih baru, atur nilai parameterapiVersionkepolicy/v1. Jika versi Kubernetes kluster lebih awal dari 1.21, atur nilai parameterapiVersionkepolicy/v1beta1.
Jalankan perintah berikut untuk menerapkan Typha sebagai pengulang:
kubectl apply -f calico-typha.yamlJalankan perintah berikut untuk memodifikasi file konfigurasi eni-config dari plug-in Terway:
kubectl edit cm eni-config -n kube-systemTambahkan konfigurasi pengulang
felix_relay_service: calico-typhake file dan atur nilai parameterdisable_network_policyke"false". Jika parameter ini tidak tersedia, tidak ada konfigurasi tambahan yang diperlukan. Konfigurasi kedua parameter ini harus sesuai dengan parametereni_conf.felix_relay_service: calico-typha disable_network_policy: "false" # Jika parameter ini tidak tersedia, Anda tidak perlu menambahkan pengaturan.Jalankan perintah berikut untuk memulai ulang Terway:
kubectl get pod -n kube-system | grep terway | awk '{print $1}' | xargs kubectl delete -n kube-system podOutput yang diharapkan:
pod "terway-eniip-8hmz7" deleted pod "terway-eniip-dclfn" deleted pod "terway-eniip-rmctm" deleted ...
Nonaktifkan fitur NetworkPolicy
Jika Anda tidak lagi memerlukan kebijakan jaringan, Anda dapat menonaktifkan fitur NetworkPolicy untuk mengurangi beban server API. Beban berat disebabkan oleh proxy NetworkPolicy.
Jalankan perintah berikut untuk memodifikasi file konfigurasi eni-config dari plug-in Terway, dan tambahkan pengaturan disable_network_policy: "true" untuk menonaktifkan fitur NetworkPolicy.
kubectl edit cm -n kube-system eni-config #Tambah atau modifikasi (jika kunci ini ada) pengaturan berikut: disable_network_policy: "true"Jalankan perintah berikut untuk memulai ulang Terway:
kubectl get pod -n kube-system | grep terway | awk '{print $1}' | xargs kubectl delete -n kube-system podOutput yang diharapkan:
pod "terway-eniip-8hmz7" deleted pod "terway-eniip-dclfn" deleted pod "terway-eniip-rmctm" deleted ...
Hasil
Setelah operasi selesai, proxy NetworkPolicy mulai menggunakan komponen Typha, mengurangi beban pada server API. Anda dapat memantau lalu lintas yang didistribusikan ke instance Server Load Balancer (SLB) untuk memastikan bahwa beban pada server API berkurang.