استكشاف وممارسة مكوّن الشبكة Calico
يستكشف هذا المقال بعمق تكوين وممارسة مكوّن الشبكة Calico في مجموعة Kubernetes، ويحلل طرق استكشاف الأخطاء وإصلاحها الشائعة واستراتيجيات تحسين الشبكة.
Categories:
استكشاف وممارسة مكوّن الشبكة 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
اعتبارات تعديل التكوين
- بعد تعديل IPPool، يجب إعادة تشغيل مكوّن calico-node لتفعيل التكوين
- قد يؤدي تغيير CIDR إلى انقطاع شبكة Pods الموجودة، لذا يجب التعامل بحذر
- يجب مراعاة أداء الشبكة والتوافق عند اختيار وضع VXLAN/IPIP
خطوات التكوين التفصيلية
تعديل تكوين IPPool
- احصل على التكوين الحالي:
kubectl get ippools.crd.projectcalico.org -o yaml - عدّل التكوين:
kubectl edit ippools.crd.projectcalico.org default-ipv4-ippool - شرح المعلمات الرئيسية:
cidr: نطاق CIDR لشبكة PodvxlanMode: Always لتمكين VXLANipipMode: Never لتعطيل IPIPnatOutgoing: 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
توصيات تحسين الأداء
- استخدم BGP بدلاً من VXLAN في المجموعات الكبيرة
- قم بتمكين مستوى البيانات eBPF لتحسين الأداء
- قم بتعيين حجم كتلة عنوان IP بشكل معقول