全部产品
Search
文档中心

Container Service for Kubernetes:Mengonfigurasi rantai CNI kustom

更新时间:Nov 11, 2025

Container Network Interface (CNI) adalah spesifikasi untuk mengonfigurasi antarmuka jaringan di Kubernetes. Rantai CNI merupakan mode yang memungkinkan penggunaan beberapa plug-in CNI secara berantai guna mengonfigurasi jaringan dengan lebih fleksibel. Di kluster Container Service for Kubernetes (ACK), rantai CNI dapat menghubungkan beberapa 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 keluarannya ke plug-in berikutnya hingga semua plug-in dalam rantai menyelesaikan tugasnya.

Peringatan

ACK tidak menjamin bahwa plugin CNI dapat bekerja sama satu sama lain. Mengonfigurasi rantai CNI kustom adalah operasi berisiko tinggi. Pastikan Anda memahami cara kerja rantai CNI dan berhati-hati saat mengonfigurasi rantai CNI. Kesalahan konfigurasi dapat menyebabkan gangguan bisnis.

Prasyarat

Sebuah kluster ACK dikelola telah dibuat dan kluster tersebut menggunakan Terway. Untuk informasi lebih lanjut, lihat Buat kluster ACK dikelola.

Batasan

Versi plugin Terway harus 1.5.6 atau lebih baru. Untuk informasi lebih lanjut tentang cara memperbarui komponen, lihat Kelola komponen.

Konfigurasikan rantai CNI kustom

Untuk menggunakan rantai CNI, tambahkan plugin CNI yang akan digunakan ke file konfigurasi Terway.

  1. Jalankan perintah berikut untuk mengedit file konfigurasi eni-config.

    kubectl edit cm -nkube-system eni-config

    Parameter

    Deskripsi

    10-terway.conf

    Konfigurasi CNI Terway. Jangan modifikasi konfigurasi ini.

    Penting

    Jangan modifikasi file konfigurasi asli.

    10-terway.conflist

    Konfigurasi rantai CNI kustom.

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

    Penting

    Konfigurasi dalam topik ini adalah contoh. Jangan langsung gunakan konfigurasi karena ini 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 kubectl rollout restart -n kube-system daemonset.apps/terway-eniip untuk membuat ulang Pod Terway.

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

Casus penggunaan

Peringatan

ACK tidak menjamin bahwa plugin CNI dapat bekerja sama satu sama lain. Mengonfigurasi rantai CNI kustom adalah operasi berisiko tinggi. Pastikan Anda memahami cara kerja rantai CNI dan berhati-hati saat mengonfigurasi rantai CNI. Kesalahan konfigurasi dapat menyebabkan gangguan bisnis.

Casus penggunaan berikut hanya untuk referensi.

Konfigurasikan portmap

Plugin portmap digunakan untuk memetakan port internal pod ke port host, sehingga memungkinkan pod mengekspos layanan tertentu ke akses eksternal.

Catatan

Jika Anda memerlukan akses Internet, pastikan port yang sesuai telah dibuka untuk lalu lintas masuk di grup keamanan.

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 skenario akses Internet, konfigurasi berikut diperlukan:

    Item Konfigurasi

    Non-Datapath V2

    Datapath V2

    masqAll

    Tidak diperlukan

    Diperlukan

    symmetric_routing

    Diperlukan

    Diperlukan

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

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

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "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

Meskipun fitur dual-stack IPv6 tidak diaktifkan untuk kluster Anda, antarmuka jaringan kontainer secara otomatis diberi alamat link-lokal IPv6 dari rentang fe80::/64 saat pembuatan. Ini merupakan perilaku bawaan kernel sistem operasi. Perilaku ini biasanya tidak berbahaya dan tidak memengaruhi operasi bisnis normal.

Namun, jika aplikasi Anda mengalami kesalahan saat menangani alamat jaringan, aplikasi mungkin gagal mengenali alamat link-local IPv6 sebagai alamat IP pod. Akibatnya, aplikasi mencoba menggunakan alamat link-local IPv6 untuk komunikasi. Alamat link-local hanya digunakan untuk komunikasi antar perangkat pada link yang sama dan tidak dapat digunakan untuk komunikasi antar jaringan. Jika tidak ditangani dengan benar, aplikasi mungkin mengalami pengecualian. Jika kode aplikasi Anda mengandung cacat dalam skenario ini, laporkan kepada vendor aplikasi terlebih dahulu dan cari solusi.

Jika Anda tetap perlu menonaktifkan alamat link-lokal IPv6 di 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}
    }