استكشاف وممارسة مكوّن الشبكة Calico

يستكشف هذا المقال بعمق تكوين وممارسة مكوّن الشبكة Calico في مجموعة Kubernetes، ويحلل طرق استكشاف الأخطاء وإصلاحها الشائعة واستراتيجيات تحسين الشبكة.

استكشاف وممارسة مكوّن الشبكة Calico

نظرة عامة

Calico هو مكوّن واجهة شبكة الحاوية (CNI) مستخدم على نطاق واسع في نظام Kubernetes البيئي، يوفر اتصالاً شبكياً عالي الأداء وإدارة مرنة لسياسات الشبكة. يستند هذا المقال إلى ممارسات بيئة الإنتاج، ويحلل بعمق الوظائف الأساسية ونقاط تكوين Calico.

بنية الوظائف الأساسية

يستخدم Calico نموذج التوجيه من الطبقة الثالثة لتحقيق الاتصال بين الحاويات، وتشمل المكونات الرئيسية ما يلي:

  • Felix: عملية شيطانية تعمل على كل عقدة، مسؤولة عن تكوين التوجيه وقواعد ACL
  • BIRD: مكوّن توزيع التوجيه، يحقق تبادل معلومات التوجيه بين العقد
  • confd: أداة إنشاء التكوين الديناميكي
  • CNI plugin: مكوّن يربط بنموذج شبكة Kubernetes

إدارة التكوين والممارسة

تكوين تجمع عناوين IP

مبادئ بنية الشبكة

graph TD
    subgraph Kubernetes集群
        node1[Node1] -->|BGP路由| node2[Node2]
        node1 -->|VXLAN隧道| node3[Node3]
        node2 -->|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

اعتبارات تعديل التكوين

  1. بعد تعديل IPPool، يجب إعادة تشغيل مكوّن calico-node لتفعيل التكوين
  2. قد يؤدي تغيير CIDR إلى انقطاع شبكة Pods الموجودة، لذا يجب التعامل بحذر
  3. يجب مراعاة أداء الشبكة والتوافق عند اختيار وضع VXLAN/IPIP

خطوات التكوين التفصيلية

تعديل تكوين IPPool

  1. احصل على التكوين الحالي:
    kubectl get ippools.crd.projectcalico.org -o yaml
    
  2. عدّل التكوين:
    kubectl edit ippools.crd.projectcalico.org default-ipv4-ippool
    
  3. شرح المعلمات الرئيسية:
    • cidr: نطاق CIDR لشبكة Pod
    • vxlanMode: Always لتمكين VXLAN
    • ipipMode: Never لتعطيل IPIP
    • natOutgoing: true لتمكين NAT الصادر

استكشاف الأخطاء وإصلاحها الشائعة

فشل الاتصال بين العقد

flowchart TD
    A[节点间网络不通] --> B{检查模式}
    B -->|VXLAN| C[验证 UDP 4789 端口]
    B -->|IPIP| D[验证协议号 4]
    C --> E[防火墙配置]
    D --> E
    E --> F[问题解决]

أوامر التحقق من التكوين

# تحقق من حالة عقدة Calico
calicoctl node status

# عرض جدول التوجيه
ip route show

توصيات تحسين الأداء

  1. استخدم BGP بدلاً من VXLAN في المجموعات الكبيرة
  2. قم بتمكين مستوى البيانات eBPF لتحسين الأداء
  3. قم بتعيين حجم كتلة عنوان IP بشكل معقول

الوثائق المرجعية