Eksplorasi dan Praktik Plugin Jaringan Calico
Artikel ini mengeksplorasi secara mendalam plugin jaringan Calico dalam klaster Kubernetes, menganalisis metode troubleshooting umum dan strategi optimasi jaringan.
Categories:
Eksplorasi dan Praktik Plugin Jaringan Calico
Ringkasan
Calico adalah plugin antarmuka jaringan container (CNI) yang banyak digunakan dalam ekosistem Kubernetes, menyediakan konektivitas jaringan berkinerja tinggi dan manajemen kebijakan jaringan yang fleksibel. Artikel ini berdasarkan praktik lingkungan produksi, menganalisis secara mendalam fungsi inti dan poin konfigurasi Calico.
Arsitektur Fungsi Inti
Calico mengadopsi model routing tiga lapis untuk mengimplementasikan komunikasi antar container, komponen utamanya meliputi:
- Felix: Proses daemon yang berjalan di setiap node, bertanggung jawab atas konfigurasi routing dan aturan ACL
- BIRD: Komponen distribusi routing, mengimplementasikan pertukaran informasi routing antar node
- confd: Alat generasi konfigurasi dinamis
- Plugin CNI: Menghubungkan dengan model jaringan Kubernetes
Manajemen Konfigurasi dan Praktik
Konfigurasi Pool Alamat IP
Prinsip Arsitektur Jaringan
graph TD
subgraph Klaster Kubernetes
node1[Node1] -->|Routing BGP| node2[Node2]
node1 -->|Tunnel VXLAN| node3[Node3]
node2 -->|Tunnel IPIP| node3
end
node1 --> pod1[Pod]
node2 --> pod2[Pod]
node3 --> pod3[Pod][root@k8s-03:~/.kube 20:41 $]k get ippools.crd.projectcalico.org -o yaml
apiVersion: v1
items:
- apiVersion: crd.projectcalico.org/v1
kind: IPPool
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"crd.projectcalico.org/v1","kind":"IPPool","metadata":{"annotations":{},"generation":1,"name":"default-ipv4-ippool"},"spec":{"allowedUses":["Workload","Tunnel"],"blockSize":26,"cidr":"192.168.0.0/16","ipipMode":"Never","natOutgoing":true,"nodeSelector":"all()","vxlanMode":"Always"}}
projectcalico.org/metadata: '{"uid":"0891de51-013e-4a44-9cb6-0c142f480567","creationTimestamp":"2023-05-26T07:36:30Z"}'
creationTimestamp: "2023-05-26T07:36:30Z"
generation: 3
name: default-ipv4-ippool
resourceVersion: "37479"
uid: de7868c1-ad93-4441-aa22-9198d07822f5
spec:
allowedUses:
- Workload
- Tunnel
blockSize: 26
cidr: 192.168.0.0/16
ipipMode: Never
natOutgoing: true
nodeSelector: all()
vxlanMode: Always
kind: List
metadata:
resourceVersion: ""
[root@k8s-03:~/.kube 20:41 $]k edit ippools.crd.projectcalico.org default-ipv4-ippool
Catatan Modifikasi Konfigurasi
- Setelah memodifikasi IPPool, perlu me-restart komponen calico-node agar konfigurasi berlaku
- Perubahan CIDR mungkin menyebabkan gangguan jaringan Pod yang sudah ada, perlu operasi hati-hati
- Pemilihan mode VXLAN/IPIP perlu mempertimbangkan performa jaringan dan kompatibilitas
Langkah Konfigurasi Detail
Modifikasi Konfigurasi IPPool
- Dapatkan konfigurasi saat ini:
kubectl get ippools.crd.projectcalico.org -o yaml - Edit konfigurasi:
kubectl edit ippools.crd.projectcalico.org default-ipv4-ippool - Penjelasan parameter utama:
cidr: Rentang CIDR jaringan PodvxlanMode: Always mengaktifkan VXLANipipMode: Never menonaktifkan IPIPnatOutgoing: true mengaktifkan NAT keluar
Troubleshooting Umum
Kegagalan Komunikasi Antar Node
flowchart TD
A[Jaringan antar node tidak tersambung] --> B{Periksa mode}
B -->|VXLAN| C[Verifikasi port UDP 4789]
B -->|IPIP| D[Verifikasi nomor protokol 4]
C --> E[Konfigurasi firewall]
D --> E
E --> F[Masalah terpecahkan]Perintah Verifikasi Konfigurasi
# Periksa status node Calico
calicoctl node status
# Lihat tabel routing
ip route show
Saran Optimasi Performa
- Klaster besar menggunakan BGP menggantikan VXLAN
- Mengaktifkan data plane eBPF meningkatkan performa
- Mengatur ukuran blok alamat IP secara wajar