Score:0

Kubernetes: ที่อยู่ IP ของ Pod อยู่นอกช่วงที่ระบุใน --pod-network-cidr

ธง vn

หลังจากอัปเกรดเป็น v1.24.0 (หลังจากลบ Dockershim) ฉันต้องติดตั้ง นักเทียบท่าคริ, จากนั้นฉันก็ทำสิ่งต่อไปนี้:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.0.196

ฉันเลือกแล้ว สักหลาด เป็นปลั๊กอินเครือข่าย:

ใช้ kubectl -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

จนถึงตอนนี้ทุกอย่างทำงานตามที่คาดไว้ แต่หลังจากเปิดใช้งานการตั้งเวลาบนโหนดหลัก เข้าร่วมโหนดผู้ปฏิบัติงาน และปรับใช้พ็อดและบริการของฉัน ฉันสังเกตเห็นปัญหาเครือข่ายที่แปลกประหลาดซึ่ง โหนดพอร์ต และ คลัสเตอร์ไอพี บริการไม่ทำงานระหว่างโหนด (ไม่มีปัญหาเมื่อใช้โหนดเดียว)

ต่อมาฉันพบว่าพ็อดได้รับที่อยู่ IP จาก เครือข่ายนักเทียบท่า (172.17.0.*) และไม่ได้มาจาก --pod-network-cidr=10.244.0.0/16:

masterzulu@master-zulu:~$ kubectl รับพ็อด --all-namespaces -o กว้าง
สถานะพร้อมชื่อ NAMESPACE เริ่มอายุ IP NODE ใหม่          

django-space django-588cb669d4-46b4w 1/1 วิ่ง 0 3m35s 172.17.0.4 มาสเตอร์ซูลู
django-space postgres-deployment-b58d5ff94-hs7t4 1/1 วิ่ง 0 3m35s 172.17.0.5 มาสเตอร์ซูลู
ระบบ kube coredns-6d4b75cb6d-8gw6c 1/1 ทำงาน 0 7m9s 172.17.0.2 มาสเตอร์ซูลู
ระบบ kube coredns-6d4b75cb6d-nxlq9 1/1 ทำงาน 0 7m9s 172.17.0.3 มาสเตอร์ซูลู

ผ้าสักหลาด DaemonSet ทำงาน:

ระบบ kube kube-flannel-ds-tqgvk 1/1 ทำงาน 0 5m51s 192.168.3.132 master-zulu

และ podCIDR ถูกตั้งค่า:

masterzulu@master-zulu:~$ kubectl รับไม่มี master-zulu -o json | jq '.spec.podCIDR'
"10.244.0.0/24"

ฉันพยายามเพิ่ม --network-plugin=cni ตั้งค่าสถานะเป็นการกำหนดค่าการเริ่มต้น kubelet แต่ฉันได้รับข้อผิดพลาดเนื่องจากการตั้งค่าสถานะนี้ถูกลบพร้อมกับนักเทียบท่าและการตั้งค่าสถานะอื่น ๆ ใน v1.24.0

นี่คือสถานะของ นักเทียบท่าคริ:

â cri-docker.service - อินเทอร์เฟซ CRI สำหรับ Docker Application Container Engine
     โหลดแล้ว: โหลดแล้ว (/etc/systemd/system/cri-docker.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน)
     ใช้งานอยู่: ใช้งานอยู่ (ทำงาน) ตั้งแต่วันพุธที่ 2022-05-25 21:36:57 BST; 5 ชม. 34 นาทีที่แล้ว
ทริกเกอร์โดย: â cri-docker.socket
       เอกสาร: https://docs.mirantis.com
   PID หลัก: 1098 (cri-dockerd)
      งาน: 15
     หน่วยความจำ: 53.4M
     CGroup: /system.slice/cri-docker.service
             ââ1098 /usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=

26 พฤษภาคม 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="ไม่สามารถอ่าน pod IP จากปลั๊กอิน/นักเทียบท่า: ไม่พบสถานะเครือข่ายสำหรับระบบ kube/coredns-6d4b75cb6d-nxlq9 ผ่านปลั๊กอิน: สถานะเครือข่ายไม่ถูกต้องสำหรับ"
26 พฤษภาคม 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="ไม่สามารถอ่าน pod IP จากปลั๊กอิน/นักเทียบท่า: ไม่พบสถานะเครือข่ายสำหรับระบบ kube/coredns-6d4b75cb6d-nxlq9 ผ่านปลั๊กอิน: สถานะเครือข่ายไม่ถูกต้องสำหรับ"
26 พฤษภาคม 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="ไม่สามารถอ่าน pod IP จากปลั๊กอิน/นักเทียบท่า: ไม่พบสถานะเครือข่ายสำหรับระบบ kube/coredns-6d4b75cb6d-8gw6c ผ่านปลั๊กอิน: สถานะเครือข่ายไม่ถูกต้องสำหรับ"
26 พฤษภาคม 01:53:13 master-zulu cri-dockerd[1098]: time="2022-05-26T01:53:13+01:00" level=info msg="จะพยายามเขียนไฟล์ปรับแต่งอีกครั้ง /var /lib/docker/containers/8ee7640d48c129058259b4b7632a0f6173ad8a9e2d5368cf3c9f29d1ea7db13e/resolv.conf เป็น [nameserver 192.168.3.48 nameserver 192.168.0.1]"
26 พฤษภาคม 01:55:30 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:30+01:00" level=info msg="จะพยายามเขียนไฟล์ config /var ใหม่อีกครั้ง /lib/docker/containers/f378aff3d077030215ef664d72132b189f8412a8d432e5a554cdbfbb37c3ea19/resolv.conf เป็น [nameserver 10.96.0.10 ค้นหา django-space.svc.cluster.local svc.cluster.local cluster.local ตัวเลือก ndots:5]"
26 พฤษภาคม 01:55:30 น. master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:30+01:00" level=info msg="ไม่สามารถอ่าน pod IP จากปลั๊กอิน/นักเทียบท่า: ไม่พบสถานะเครือข่ายสำหรับ django-space/django-588cb669d4-46b4w ผ่านปลั๊กอิน: สถานะเครือข่ายไม่ถูกต้องสำหรับ"
26 พฤษภาคม 01:55:31 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:31+01:00" level=info msg="ไม่สามารถอ่าน pod IP จากปลั๊กอิน/นักเทียบท่า: ไม่พบสถานะเครือข่ายสำหรับ django-space/django-588cb669d4-46b4w ผ่านปลั๊กอิน: สถานะเครือข่ายไม่ถูกต้องสำหรับ"
26 พฤษภาคม 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="จะพยายามเขียนไฟล์ปรับแต่งอีกครั้ง /var /lib/docker/containers/9523255b7991855027185cecbc8420bbe1268fcef21c2ddcb4d76851bce7e3a0/resolv.conf as [nameserver 10.96.0.10 ค้นหา django-space.svc.cluster.local svc.cluster.local cluster.local options ndots:5]"
26 พฤษภาคม 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="ไม่สามารถอ่าน pod IP จากปลั๊กอิน/นักเทียบท่า: ไม่พบสถานะเครือข่ายสำหรับ django-space/postgres-deployment-b58d5ff94-hs7t4 ผ่านปลั๊กอิน: สถานะเครือข่ายไม่ถูกต้องสำหรับ"
26 พฤษภาคม 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="ไม่สามารถอ่าน pod IP จากปลั๊กอิน/นักเทียบท่า: ไม่พบสถานะเครือข่ายสำหรับ django-space/postgres-deployment-b58d5ff94-hs7t4 ผ่านปลั๊กอิน: สถานะเครือข่ายไม่ถูกต้องสำหรับ"

ไม่มีใครรู้ว่าฉันควรทำอย่างไรเพื่อแก้ปัญหานี้?

อัปเดต:

cni0 อินเทอร์เฟซหายไปในต้นแบบ k8s:

masterzulu@master-zulu:~$ ifconfig -a
นักเทียบท่า 0: ค่าสถานะ = 4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 172.17.0.1 netmask 255.255.0.0 ออกอากาศ 172.17.255.255
        inet6 fe80::42:e9ff:fec1:dd1b คำนำหน้า 64 scopeid 0x20<link>
        อีเธอร์ 02:42:e9:c1:dd:1b txqueuelen 0 (อีเธอร์เน็ต)
        แพ็คเก็ต RX 5140 ไบต์ 418818 (418.8 KB)
        ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 5475 ไบต์ 522703 (522.7 KB)
        ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.0.196 netmask 255.255.255.0 ออกอากาศ 192.168.0.255
        inet6 fe80::e808:144d:a0dc:60a6 คำนำหน้า 64 scopeid 0x20<ลิงค์>
        อีเธอร์ 98:40:bb:3e:f2:1c txqueuelen 1000 (อีเธอร์เน็ต)
        แพ็คเก็ต RX 6332 ไบต์ 515688 (515.6 KB)
        ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 6684 ไบต์ 631167 (631.1 KB)
        ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
        inet 10.244.0.0 netmask 255.255.255.255 ออกอากาศ 0.0.0.0
        inet6 fe80::494:d8ff:fe1b:4aab คำนำหน้า 64 scopeid 0x20<ลิงค์>
        อีเธอร์ 06:94:d8:1b:4a:ab txqueuelen 0 (อีเธอร์เน็ต)
        แพ็คเก็ต RX 0 ไบต์ 0 (0.0 B)
        ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 0 ไบต์ 0 (0.0 B)
        ข้อผิดพลาด TX 0 หลุด 129 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
Score:0
ธง vn

หลังจากการสืบสวนฉันพบว่า นักเทียบท่าคริ บริการขาดบางส่วน:

CGroup: /system.slice/cri-docker.service
         ââ1098 /usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=

ฉันเพิ่มพวกเขาด้วยตนเอง /etc/systemd/system/cri-docker.service:

...
ExecStart=/usr/local/bin/cri-dockerd --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache - -cni-conf-dir=/etc/cni/net.d --pod-infra-container-image=k8s.gcr.io/pause:3.7
...

บริการโหลดซ้ำ:

sudo systemctl daemon โหลดซ้ำ
sudo systemctl รีสตาร์ท cri-docker.service

ณ จุดนี้ cri-dockerd ได้รับการกำหนดค่าอย่างถูกต้อง แต่ปัญหายังคงมีอยู่ ภายหลังฉันสังเกตเห็นว่า /opt/cni/bin ว่างเปล่า (ไม่มีปลั๊กอินเครือข่ายคอนเทนเนอร์):

masterzulu@master-zulu:~$ sudo /usr/local/bin/cri-dockerd
INFO[0000] กำลังเชื่อมต่อกับนักเทียบท่าบน Endpoint unix:///var/run/docker.sock
INFO[0000] เริ่มไคลเอนต์นักเทียบท่าด้วยการหมดเวลาคำขอ 0 วินาที
INFO[0000] โหมด Hairpin ตั้งค่าเป็นไม่มี
ERRO[0000] เกิดข้อผิดพลาดในการตรวจสอบรายการการกำหนดค่า CNI ({
  "ชื่อ": "cbr0",
  "cniVersion": "0.3.1",
  "ปลั๊กอิน": [
    {
      "ประเภท": "สักหลาด",
      "ผู้รับมอบสิทธิ์": {
        "โหมดกิ๊บ": จริง,
        "isDefaultGateway": จริง
      }
    },
    {
      "ประเภท": "พอร์ตแมป",
      "ความสามารถ": {
        "portMappings": จริง
      }
    }
  ]
}
): [ไม่พบปลั๊กอิน "portmap" ในเส้นทาง [/opt/cni/bin]]
INFO[0000] เครือข่าย Docker cri จัดการโดยปลั๊กอินเครือข่าย kubernetes.io/no-op
...
ข้อมูล[0000] การตั้งค่า cgroupDriver cgroupfs
INFO[0000] Docker cri ได้รับการกำหนดค่ารันไทม์ &RuntimeConfig{NetworkConfig:&NetworkConfig{PodCidr:,},}
INFO[0000] การเริ่มต้นแบ็กเอนด์ GRPC สำหรับอินเทอร์เฟซ Docker CRI
INFO[0000] เริ่มแบ็กเอนด์ cri-dockerd grpc

ฉันคิดว่าฉันลบ /opt/cni/bin โดยไม่ได้ตั้งใจ ดังนั้นฉันจึงเพิ่มเนื้อหาอีกครั้ง (รับไฟล์ รุ่นล่าสุด):

cd /tmp && mkdir cni-plugins && wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz && cd cni-plugins && tar zxfv ../cni-plugins-linux-amd64-v1.1.1.tgz
sudo cp /tmp/cni-plugins/* /opt/cni/bin/

ls /opt/cni/bin
บริดจ์แบนด์วิธ ไฟร์วอลล์ dhcp flannel โฮสต์-อุปกรณ์ โฮสต์-โลคัล ipvlan วนกลับ พอร์ตแมป macvlan ptp sbr การปรับแบบคงที่ vlan vrf

หลังจากรีสตาร์ท นักเทียบท่าคริ บริการ ทุกอย่างเริ่มทำงานตามที่คาดไว้:

masterzulu@master-zulu:~$ kubectl รับพ็อด -Ao กว้าง
สถานะพร้อมชื่อ NAMESPACE เริ่มอายุ IP NODE ใหม่
django-space django-588cb669d4-4zz7f 1/1 วิ่ง 0 11 วินาที 10.244.0.4 มาสเตอร์ซูลู
django-space postgres-deployment-b58d5ff94-scmrx 1/1 ทำงาน 0 12s 10.244.0.5 มาสเตอร์ซูลู
kube-system coredns-6d4b75cb6d-rnjlm 1/1 วิ่ง 0 73m 10.244.0.2 มาสเตอร์ซูลู
kube-system coredns-6d4b75cb6d-s6zl7 1/1 วิ่ง 0 73m 10.244.0.3 มาสเตอร์ซูลู

cni0 ขึ้น:

masterzulu@master-zulu:~$ ifconfig -a
cni0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
        inet 10.244.0.1 netmask 255.255.255.0 ออกอากาศ 10.244.0.255
        inet6 fe80::8c8:84ff:fe78:d999 คำนำหน้า 64 scopeid 0x20<ลิงค์>
        อีเธอร์ 0a:c8:84:78:d9:99 txqueuelen 1,000 (อีเธอร์เน็ต)
        แพ็คเก็ต RX 27714 ไบต์ 5010722 (5.0 MB)
        ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 26936 ไบต์ 2898949 (2.8 MB)
        ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

นักเทียบท่าคริ สถานะ:

masterzulu@master-zulu:~$ sudo systemctl สถานะ cri-docker
â cri-docker.service - อินเทอร์เฟซ CRI สำหรับ Docker Application Container Engine
     โหลดแล้ว: โหลดแล้ว (/etc/systemd/system/cri-docker.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน)
     ใช้งานอยู่: ใช้งานอยู่ (ทำงาน) ตั้งแต่ ศ. 2022-05-27 22:39:06 BST; 1 ชม. 57 นาทีที่แล้ว
ทริกเกอร์โดย: â cri-docker.socket
       เอกสาร: https://docs.mirantis.com
   PID หลัก: 187399 (cri-dockerd)
      งาน: 11
     หน่วยความจำ: 17.1M
     CGroup: /system.slice/cri-docker.service
             ââ187399 /usr/local/bin/cri-dockerd --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib /cni/cache --cni-conf-dir=/etc/cni/net.d --po>

28 พฤษภาคม 00:36:20 น. master-zulu cri-dockerd[187399]: time="2022-05-28T00:36:20+01:00" level=info msg="Using CNI configuration file /etc/cni/net .d/10-flannel.conflist"

ข้อสรุปของฉัน

การขาดงานของ --network-plugin=cni ใน นักเทียบท่าคริ args เริ่มต้นหรือปัญหาอื่น ๆ ใน ซีเอ็นไอ configs อาจทำให้เกิดปัญหานี้โดยที่ นักเทียบท่าคริ เห็นว่า ซีเอ็นไอ หายไปและใช้อินเทอร์เฟซ นักเทียบท่า0 โดยตรงเพื่อให้พ็อดได้รับ IP จากช่วงนี้ 172.17.0.x.

หวังว่านี่จะช่วยทุกคนที่มีปัญหาเดียวกัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา