All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan rantai CNI kustom

Last Updated:May 20, 2026

Container Network Interface (CNI) adalah spesifikasi untuk mengonfigurasi antarmuka jaringan di Kubernetes. Rantai CNI memungkinkan penggunaan beberapa plug-in CNI guna mengonfigurasi jaringan secara lebih fleksibel. Di kluster Container Service for Kubernetes (ACK), rantai CNI dapat menghubungkan berbagai plug-in CNI, masing-masing menangani tugas jaringan tertentu seperti alokasi alamat IP atau routing. Saat ACK membuat kontainer, rantai CNI memanggil plug-in pertama dan meneruskan hasilnya ke plug-in berikutnya hingga seluruh plug-in dalam rantai menyelesaikan tugasnya.

Prasyarat

  • Anda memiliki ACK managed cluster yang menggunakan plug-in jaringan Terway.

  • Versi Terway adalah v1.5.6 atau lebih baru, dan kluster tidak berada dalam mode jaringan ENI eksklusif.

Peringatan

ACK tidak menjamin kompatibilitas antar beberapa plug-in CNI. Mengonfigurasi rantai CNI kustom merupakan operasi berisiko tinggi. Sebelum melanjutkan, pastikan Anda memahami sepenuhnya fungsionalitas setiap plug-in CNI dan berhati-hati untuk menghindari kesalahan konfigurasi yang dapat menyebabkan gangguan bisnis.

Konfigurasikan rantai CNI kustom

Untuk menggunakan rantai CNI, tambahkan plug-in CNI yang akan digunakan ke file konfigurasi Terway.

  1. Jalankan perintah berikut untuk mengedit ConfigMap eni-config.

    kubectl edit cm -nkube-system eni-config

    Parameter

    Deskripsi

    10-terway.conf

    Konfigurasi CNI Terway. Jangan mengubah konfigurasi ini.

    Penting

    Jangan mengubah file konfigurasi asli.

    10-terway.conflist

    Konfigurasi rantai CNI kustom.

    Konfigurasi CNI pertama dalam plugins harus merupakan konfigurasi yang didefinisikan dalam 10-terway.conf.

    Penting

    Konfigurasi dalam topik ini hanya sebagai contoh. Jangan langsung menggunakan konfigurasi ini karena dapat menyebabkan kesalahan konfigurasi.

    Pastikan isi blok konfigurasi dalam format JSON.

    File konfigurasi

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "capabilities": {"bandwidth": true}
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "externalSetMarkChain":"KUBE-MARK-MASQ"
              }
            ]
          }
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }
  2. Jalankan perintah kubectl rollout restart -n kube-system daemonset.apps/terway-eniip untuk membuat ulang Pod Terway.

    Jika konfigurasi benar, konfigurasi plug-in kustom Anda akan terlihat di file etc/cni/net.d/10-terway.conflist pada node.

Kasus penggunaan

Konfigurasikan portmap

Plug-in portmap digunakan untuk memetakan port internal Pod ke port host, sehingga Pod dapat mengekspos layanan tertentu agar dapat diakses dari luar.

Catatan

Jika Anda memerlukan akses jaringan publik, pastikan aturan masuk security group dikonfigurasi untuk mengizinkan lalu lintas pada port yang sesuai.

Aturan tersebut mungkin tidak kompatibel dengan kebijakan jaringan Kubernetes. Kami menyarankan Anda menguji konfigurasi secara menyeluruh sebelum menerapkannya di lingkungan produksi.

Contoh konfigurasi

  • Akses menggunakan alamat IP pribadi dan port node:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "capabilities": {"bandwidth": true} 
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "externalSetMarkChain":"KUBE-MARK-MASQ"
              }
            ]
          }
    
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }
  • Akses menggunakan alamat IP publik dan port:

    Untuk akses jaringan publik, konfigurasi berikut diperlukan.

    Parameter

    Non-Datapath V2

    Datapath V2

    masqAll

    Tidak diperlukan

    Diperlukan

    symmetric_routing

    Diperlukan

    Diperlukan

    • masqAll: Parameter plug-in portmap yang memerlukan portmap v1.7.1 atau lebih baru.

    • symmetric_routing: Parameter plug-in Terway yang memerlukan Terway v1.15.0 atau lebih baru.

    • Untuk kluster Datapath V2 dengan pengganti kube-proxy yang diaktifkan, plug-in portmap tidak diperlukan.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "name": "terway-chain",
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "symmetric_routing": true,
                "capabilities": {"bandwidth": true} 
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "masqAll": false
              }
            ]
          }
    
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }

Nonaktifkan alamat link-local IPv6 untuk kontainer

Di dalam kontainer, meskipun fitur dual-stack IPv6 tidak diaktifkan untuk kluster Anda, antarmuka jaringan kontainer tetap secara otomatis diberi alamat link-local IPv6 dalam subnet fe80::/64 saat dibuat. Ini merupakan perilaku bawaan kernel sistem operasi, yang biasanya tidak berbahaya dan tidak mengganggu operasi bisnis normal.

Namun, jika aplikasi Anda mengalami error saat menangani alamat jaringan, aplikasi tersebut mungkin gagal mengenali alamat link-local IPv6 sebagai alamat IP Pod. Akibatnya, aplikasi mencoba menggunakan alamat link-local IPv6 untuk komunikasi. Karena alamat link-local hanya berlaku untuk komunikasi antar perangkat dalam satu link dan tidak dapat digunakan untuk komunikasi antar jaringan, hal ini dapat menyebabkan exception. Jika kode aplikasi Anda memiliki cacat dalam skenario tersebut, laporkan terlebih dahulu ke vendor aplikasi dan mintalah solusi.

Jika Anda tetap perlu menonaktifkan alamat link-local IPv6 di dalam kontainer, Anda dapat melakukannya dengan mengonfigurasi plug-in tuning.

Contoh konfigurasi

kind: ConfigMap
apiVersion: v1
metadata:
  name: eni-config
  namespace: kube-system
data:
  10-terway.conflist: |
      {
        "plugins": [
          {
            "cniVersion": "0.4.0",
            "name": "terway",
            "type": "terway",
            "capabilities": {"bandwidth": true}
          },
          {
            "type": "tuning",
            "sysctl": {
              "net.ipv6.conf.all.disable_ipv6": "1",
              "net.ipv6.conf.default.disable_ipv6": "1",
              "net.ipv6.conf.lo.disable_ipv6": "1"
            }
          }
        ]
      }
  10-terway.conf: |
    {
      "cniVersion": "0.4.0",
      "name": "terway",
      "type": "terway",
      "capabilities": {"bandwidth": true}
    }