CNI (Container Network Interface) adalah standar plug-in jaringan Kubernetes. CNI Chain menghubungkan beberapa plug-in CNI secara berurutan: setiap plug-in menangani tugas tertentu seperti alokasi IP atau routing, lalu meneruskan output ke plug-in berikutnya hingga semua tugas selesai. Topik ini menjelaskan cara mengonfigurasi rantai CNI kustom di kluster ACK Terway.
Prasyarat
-
ACK managed cluster dengan plug-in jaringan Terway telah dibuat.
-
Terway v1.5.6 atau yang lebih baru. Kluster tidak menggunakan mode jaringan ENI eksklusif.
ACK tidak menjamin kompatibilitas antar plug-in CNI. Rantai CNI kustom merupakan operasi berisiko tinggi. Pahami setiap plug-in sebelum melanjutkan untuk menghindari gangguan bisnis.
Konfigurasikan rantai CNI kustom
Tambahkan plug-in CNI ke file konfigurasi Terway.
-
Edit ConfigMap
eni-config:kubectl edit cm -nkube-system eni-configParameter
Deskripsi
10-terway.conf
Konfigurasi CNI Terway. Jangan dimodifikasi.
PentingJangan modifikasi file ini.
10-terway.conflist
Konfigurasi rantai CNI kustom.
Entri pertama dalam
pluginsharus sesuai dengan10-terway.conf.PentingIni adalah contoh konfigurasi. Jangan gunakan langsung.
Blok konfigurasi harus 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} } -
Jalankan
kubectl rollout restart -n kube-system daemonset.apps/terway-eniipuntuk membangun ulang Pod Terway.Jika dikonfigurasi dengan benar, verifikasi konfigurasi plug-in kustom di
etc/cni/net.d/10-terway.conflistpada node.
Kasus penggunaan
Konfigurasikan portmap
Plug-in portmap memetakan port Pod ke port host untuk akses eksternal.
Untuk akses jaringan publik, konfigurasikan aturan inbound security group agar mengizinkan traffic pada port yang diperlukan.
Aturan ini mungkin bertentangan dengan kebijakan jaringan Kubernetes. Lakukan pengujian menyeluruh sebelum menerapkan di lingkungan produksi.
Contoh konfigurasi
-
Akses menggunakan alamat IP pribadi dan port sebuah 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:
Akses jaringan publik memerlukan konfigurasi berikut.
Parameter
Non-Datapath V2
Datapath V2
masqAll
Tidak diperlukan
Diperlukan
symmetric_routing
Diperlukan
Diperlukan
-
masqAll: Parameter plug-in portmap. Memerlukan portmap v1.7.1 atau yang lebih baru.
-
symmetric_routing: Parameter plug-in Terway. Memerlukan Terway v1.15.0 atau yang lebih baru.
-
Kluster Datapath V2 dengan pengganti kube-proxy tidak memerlukan plug-in portmap.
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-lokal IPv6 untuk kontainer
Meskipun fitur dual-stack IPv6 tidak diaktifkan, kontainer secara otomatis menerima alamat link-lokal IPv6 di subnet fe80::/64. Perilaku default kernel ini biasanya tidak berbahaya.
Jika suatu aplikasi salah menangani alamat jaringan, aplikasi tersebut mungkin menggunakan alamat link-lokal IPv6 untuk komunikasi lintas jaringan. Alamat link-lokal hanya berfungsi dalam satu link yang sama, sehingga menyebabkan kegagalan. Laporkan masalah semacam ini ke vendor aplikasi terlebih dahulu.
Untuk menonaktifkan alamat link-lokal IPv6 di kontainer, konfigurasikan 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}
}