Calico नेटवर्क प्लगइन की खोज और अभ्यास

यह लेख कुबेरनेट्स क्लस्टर में Calico नेटवर्क प्लगइन के कॉन्फ़िगरेशन और अभ्यास पर गहराई से चर्चा करता है, साथ ही सामान्य समस्या निवारण विधियों और नेटवर्क अनुकूलन रणनीतियों का भी विश्लेषण करता है।

Calico नेटवर्क प्लगइन की खोज और अभ्यास

अवलोकन

Calico कुबेरनेट्स इकोसिस्टम में व्यापक रूप से उपयोग किया जाने वाला कंटेनर नेटवर्क इंटरफेस (CNI) प्लगइन है, जो उच्च प्रदर्शन वाले नेटवर्क कनेक्शन और लचीले नेटवर्क नीति प्रबंधन को प्रदान करता है। यह लेख उत्पादन वातावरण के अभ्यास के आधार पर, Calico के मुख्य कार्यों और कॉन्फ़िगरेशन बिंदुओं का गहन विश्लेषण करता है।

मुख्य कार्यात्मक वास्तुकला

Calico कंटेनरों के बीच संचार को लागू करने के लिए तीन-स्तरीय राउटिंग मॉडल का उपयोग करता है, जिसमें मुख्य घटक शामिल हैं:

  • Felix: प्रत्येक नोड पर चलने वाला डेमॉन प्रक्रिया, जो राउटिंग कॉन्फ़िगरेशन और ACL नियमों के लिए जिम्मेदार है
  • BIRD: राउटिंग वितरण घटक, जो नोड्स के बीच राउटिंग जानकारी के आदान-प्रदान को लागू करता है
  • confd: गतिशील कॉन्फ़िगरेशन जनरेशन टूल
  • CNI प्लगइन: कुबेरनेट्स नेटवर्क मॉडल के साथ एकीकरण

कॉन्फ़िगरेशन प्रबंधन और अभ्यास

IP पता पूल कॉन्फ़िगरेशन

नेटवर्क वास्तुकला के सिद्धांत

graph TD
    subgraph कुबेरनेट्स क्लस्टर
        node1[नोड1] -->|BGP राउटिंग| node2[नोड2]
        node1 -->|VXLAN टनल| node3[नोड3]
        node2 -->|IPIP टनल| node3
    end
    node1 --> pod1[पॉड]
    node2 --> pod2[पॉड]
    node3 --> pod3[पॉड]
[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 में बदलाव से मौजूदा पॉड्स का नेटवर्क बाधित हो सकता है, इसलिए सावधानी से कार्य करें
  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 रेंज
    • 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. बड़े क्लस्टरों में VXLAN के बजाय BGP का उपयोग करें
  2. प्रदर्शन बढ़ाने के लिए eBPF डेटा प्लेन सक्षम करें
  3. IP पता ब्लॉक का आकार उचित रूप से सेट करें

संदर्भ दस्तावेज़