Calico Ağ Eklentisi Keşfi ve Pratik Uygulaması
Bu makale, Kubernetes kümesindeki Calico ağ eklentisinin yapılandırmasını ve pratik uygulamasını derinlemesine inceliyor, yaygın sorun giderme yöntemlerini ve ağ optimizasyon stratejilerini analiz ediyor.
Categories:
Calico Ağ Eklentisi Keşfi ve Pratik Uygulaması
Genel Bakış
Calico, Kubernetes ekosisteminde yaygın olarak kullanılan bir Konteyner Ağ Arayüzü (CNI) eklentisidir ve yüksek performanslı ağ bağlantısı ile esnek ağ ilkesi yönetimi sunar. Bu makale, üretim ortamı deneyimlerine dayanarak, Calico’nun temel işlevlerini ve yapılandırma noktalarını derinlemesine analiz eder.
Çekirdek İşlev Mimarisi
Calico, konteynerler arası iletişimi gerçekleştirmek için üç katmanlı yönlendirme modelini kullanır; temel bileşenleri şunlardır:
- Felix: Her düğümde çalışan bir arka plan programı (daemon), yönlendirme yapılandırması ve ACL kurallarından sorumludur
- BIRD: Yönlendirme dağıtım bileşeni, düğümler arası yönlendirme bilgi alışverişini gerçekleştirir
- confd: Dinamik yapılandırma oluşturma aracı
- CNI eklentisi: Kubernetes ağ modeliyle entegrasyon sağlar
Yapılandırma Yönetimi ve Pratik Uygulama
IP Adres Havuzu Yapılandırması
Ağ Mimarisi Prensipleri
graph TD
subgraph Kubernetes Kümesi
node1[Node1] -->|BGP Yönlendirme| node2[Node2]
node1 -->|VXLAN Tüneli| node3[Node3]
node2 -->|IPIP Tüneli| 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
Yapılandırma Değişikliği Dikkat Edilecek Hususlar
- IPPool değiştirildikten sonra yapılandırmanın geçerli olması için calico-node bileşeni yeniden başlatılmalıdır
- CIDR değişikliği mevcut Pod ağ kesintisine neden olabilir, dikkatli操作 yapılmalıdır
- VXLAN/IPIP modu seçimi ağ performansı ve uyumluluk dikkate alınarak yapılmalıdır
Detaylı Yapılandırma Adımları
IPPool Yapılandırmasını Değiştirme
- Mevcut yapılandırmayı alın:
kubectl get ippools.crd.projectcalico.org -o yaml - Yapılandırmayı düzenleyin:
kubectl edit ippools.crd.projectcalico.org default-ipv4-ippool - Temel parametre açıklamaları:
cidr: Pod ağ CIDR aralığıvxlanMode: Always ile VXLAN’ı etkinleştiriripipMode: Never ile IPIP’i devre dışı bırakırnatOutgoing: true ile giden NAT’ı etkinleştirir
Yaygın Sorun Giderme
Düğümler Arası İletişim Başarısızlığı
flowchart TD
A[Düğümler arası ağ kopukluğu] --> B{Modu kontrol et}
B -->|VXLAN| C[UDP 4789 portunu doğrula]
B -->|IPIP| D[Protokol numarası 4'ü doğrula]
C --> E[Güvenlik duvarı yapılandırması]
D --> E
E --> F[Sorun çözüldü]Yapılandırma Doğrulama Komutları
# Calico düğüm durumunu kontrol et
calicoctl node status
# Yönlendirme tablosunu görüntüle
ip route show
Performans Optimizasyon Önerileri
- Büyük kümelerde VXLAN yerine BGP kullanın
- Performansı artırmak için eBPF veri düzlemini etkinleştirin
- IP adres bloğu boyutunu mantıklı bir şekilde ayarlayın
Referans Dokümanlar
- Calico Resmi Dokümantasyonu - VXLAN/IPIP Modu Yapılandırması
- Kubernetes Ağ Modeli Derinlemesine Analiz