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.

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

  1. Setelah memodifikasi IPPool, perlu me-restart komponen calico-node agar konfigurasi berlaku
  2. Perubahan CIDR mungkin menyebabkan gangguan jaringan Pod yang sudah ada, perlu operasi hati-hati
  3. Pemilihan mode VXLAN/IPIP perlu mempertimbangkan performa jaringan dan kompatibilitas

Langkah Konfigurasi Detail

Modifikasi Konfigurasi IPPool

  1. Dapatkan konfigurasi saat ini:
    kubectl get ippools.crd.projectcalico.org -o yaml
    
  2. Edit konfigurasi:
    kubectl edit ippools.crd.projectcalico.org default-ipv4-ippool
    
  3. Penjelasan parameter utama:
    • cidr: Rentang CIDR jaringan Pod
    • vxlanMode: Always mengaktifkan VXLAN
    • ipipMode: Never menonaktifkan IPIP
    • natOutgoing: 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

  1. Klaster besar menggunakan BGP menggantikan VXLAN
  2. Mengaktifkan data plane eBPF meningkatkan performa
  3. Mengatur ukuran blok alamat IP secara wajar

Dokumen Referensi