全部产品
Search
文档中心

Container Service for Kubernetes:Meningkatkan performa fitur NetworkPolicy untuk kluster ACK besar dalam mode Terway

更新时间:Jul 06, 2025

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.

    Catatan

    Setelah menonaktifkan fitur NetworkPolicy, Anda tidak dapat lagi menggunakan kebijakan jaringan untuk mengontrol komunikasi antar pod.

Prasyarat

Terapkan Typha sebagai pengulang

  1. Masuk ke Konsol ACK.

  2. 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.

  3. 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: bgppeer
    Catatan
    • Ganti {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 apiVersion dari PodDisruptionBudget berdasarkan versi Kubernetes kluster. Jika versi Kubernetes kluster adalah 1.21 atau lebih baru, atur nilai parameter apiVersion ke policy/v1. Jika versi Kubernetes kluster lebih awal dari 1.21, atur nilai parameter apiVersion ke policy/v1beta1.

  4. Jalankan perintah berikut untuk menerapkan Typha sebagai pengulang:

    kubectl apply -f calico-typha.yaml
  5. Jalankan perintah berikut untuk memodifikasi file konfigurasi eni-config dari plug-in Terway:

    kubectl edit cm eni-config -n kube-system

    Tambahkan konfigurasi pengulang felix_relay_service: calico-typha ke file dan atur nilai parameter disable_network_policy ke "false". Jika parameter ini tidak tersedia, tidak ada konfigurasi tambahan yang diperlukan. Konfigurasi kedua parameter ini harus sesuai dengan parameter eni_conf.

      felix_relay_service: calico-typha
      disable_network_policy: "false" # Jika parameter ini tidak tersedia, Anda tidak perlu menambahkan pengaturan.
  6. Jalankan perintah berikut untuk memulai ulang Terway:

    kubectl get pod -n kube-system  | grep terway | awk '{print $1}' | xargs kubectl delete -n kube-system pod

    Output 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.

  1. 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"
  2. Jalankan perintah berikut untuk memulai ulang Terway:

    kubectl get pod -n kube-system  | grep terway | awk '{print $1}' | xargs kubectl delete -n kube-system pod

    Output 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.