Điểm:0

Kubernetes: Pod IP address is out of range specified in --pod-network-cidr

lá cờ vn

After upgrading to v1.24.0 (after Dockershim removal), I had to install cri-dockerd, then I did the following:

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

I have chosen flannel as Network Plugin:

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

Until now everything worked as expected, but after enabling scheduling on master node, joining a worker node and deploying my pods and services, I noticed a strange network issue where NodePort and ClusterIP services were not working between nodes (no issues when using one node).

Later I found out that pods are getting IP addresses from docker network (172.17.0.*) and not from --pod-network-cidr=10.244.0.0/16:

masterzulu@master-zulu:~$ kubectl get pods --all-namespaces -o wide
NAMESPACE      NAME                                  READY   STATUS    RESTARTS   AGE     IP              NODE          

django-space   django-588cb669d4-46b4w               1/1     Running   0          3m35s   172.17.0.4      master-zulu
django-space   postgres-deployment-b58d5ff94-hs7t4   1/1     Running   0          3m35s   172.17.0.5      master-zulu
kube-system    coredns-6d4b75cb6d-8gw6c              1/1     Running   0          7m9s    172.17.0.2      master-zulu
kube-system    coredns-6d4b75cb6d-nxlq9              1/1     Running   0          7m9s    172.17.0.3      master-zulu

flannel DaemonSet is runnig:

kube-system    kube-flannel-ds-tqgvk                 1/1     Running   0          5m51s   192.168.3.132   master-zulu

and podCIDR is set:

masterzulu@master-zulu:~$ kubectl get no master-zulu -o json | jq '.spec.podCIDR'
"10.244.0.0/24"

I tried adding the --network-plugin=cni flag to kubelet startup config but I'm getting an error since this flag is removed along with dockershim and other flags in v1.24.0 .

here's the status of cri-docker:

● cri-docker.service - CRI Interface for Docker Application Container Engine
     Loaded: loaded (/etc/systemd/system/cri-docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-05-25 21:36:57 BST; 5h 34min ago
TriggeredBy: ● cri-docker.socket
       Docs: https://docs.mirantis.com
   Main PID: 1098 (cri-dockerd)
      Tasks: 15
     Memory: 53.4M
     CGroup: /system.slice/cri-docker.service
             └─1098 /usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=

May 26 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="Failed to read pod IP from plugin/docker: Couldn't find network status for kube-system/coredns-6d4b75cb6d-nxlq9 through plugin: invalid network status for"
May 26 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="Failed to read pod IP from plugin/docker: Couldn't find network status for kube-system/coredns-6d4b75cb6d-nxlq9 through plugin: invalid network status for"
May 26 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="Failed to read pod IP from plugin/docker: Couldn't find network status for kube-system/coredns-6d4b75cb6d-8gw6c through plugin: invalid network status for"
May 26 01:53:13 master-zulu cri-dockerd[1098]: time="2022-05-26T01:53:13+01:00" level=info msg="Will attempt to re-write config file /var/lib/docker/containers/8ee7640d48c129058259b4b7632a0f6173ad8a9e2d5368cf3c9f29d1ea7db13e/resolv.conf as [nameserver 192.168.3.48 nameserver 192.168.0.1]"
May 26 01:55:30 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:30+01:00" level=info msg="Will attempt to re-write config file /var/lib/docker/containers/f378aff3d077030215ef664d72132b189f8412a8d432e5a554cdbfbb37c3ea19/resolv.conf as [nameserver 10.96.0.10 search django-space.svc.cluster.local svc.cluster.local cluster.local options ndots:5]"
May 26 01:55:30 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:30+01:00" level=info msg="Failed to read pod IP from plugin/docker: Couldn't find network status for django-space/django-588cb669d4-46b4w through plugin: invalid network status for"
May 26 01:55:31 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:31+01:00" level=info msg="Failed to read pod IP from plugin/docker: Couldn't find network status for django-space/django-588cb669d4-46b4w through plugin: invalid network status for"
May 26 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="Will attempt to re-write config file /var/lib/docker/containers/9523255b7991855027185cecbc8420bbe1268fcef21c2ddcb4d76851bce7e3a0/resolv.conf as [nameserver 10.96.0.10 search django-space.svc.cluster.local svc.cluster.local cluster.local options ndots:5]"
May 26 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="Failed to read pod IP from plugin/docker: Couldn't find network status for django-space/postgres-deployment-b58d5ff94-hs7t4 through plugin: invalid network status for"
May 26 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="Failed to read pod IP from plugin/docker: Couldn't find network status for django-space/postgres-deployment-b58d5ff94-hs7t4 through plugin: invalid network status for"

Does anyone know what should I do to solve this issue?

Update:

cni0 interface is missing on k8s master:

masterzulu@master-zulu:~$ ifconfig -a
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:e9ff:fec1:dd1b  prefixlen 64  scopeid 0x20<link>
        ether 02:42:e9:c1:dd:1b  txqueuelen 0  (Ethernet)
        RX packets 5140  bytes 418818 (418.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5475  bytes 522703 (522.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.196  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::e808:144d:a0dc:60a6  prefixlen 64  scopeid 0x20<link>
        ether 98:40:bb:3e:f2:1c  txqueuelen 1000  (Ethernet)
        RX packets 6332  bytes 515688 (515.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6684  bytes 631167 (631.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.244.0.0  netmask 255.255.255.255  broadcast 0.0.0.0
        inet6 fe80::494:d8ff:fe1b:4aab  prefixlen 64  scopeid 0x20<link>
        ether 06:94:d8:1b:4a:ab  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 129 overruns 0  carrier 0  collisions 0
Điểm:0
lá cờ vn

Sau một số cuộc điều tra, tôi thấy rằng cri-dockerd dịch vụ bị thiếu một số đối số:

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

Tôi đã thêm chúng theo cách thủ công vào /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
...

Tải lại dịch vụ:

Sudo systemctl daemon-tải lại
Sudo systemctl khởi động lại cri-docker.service

tại thời điểm này, cri-dockerd được cấu hình đúng, nhưng sự cố vẫn tiếp diễn, sau đó tôi nhận thấy rằng /opt/cni/bin trống (không có plugin mạng vùng chứa):

masterzulu@master-zulu:~$ sudo /usr/local/bin/cri-dockerd
THÔNG TIN[0000] Đang kết nối với docker trên Endpoint unix:///var/run/docker.sock
THÔNG TIN [0000] Bắt đầu máy khách docker với thời gian chờ yêu cầu 0 giây
THÔNG TIN[0000] Chế độ kẹp tóc được đặt thành không
ERRO[0000] Lỗi khi xác thực danh sách cấu hình CNI ({
  "tên": "cbr0",
  "cniVersion": "0.3.1",
  "bổ sung": [
    {
      "loại": "flannel",
      "đại biểu": {
        "chế độ kẹp tóc": đúng,
        "isDefaultGateway": đúng
      }
    },
    {
      "type": "sơ đồ cổng",
      "khả năng": {
        "portMappings": đúng
      }
    }
  ]
}
): [không thể tìm plugin "portmap" trong đường dẫn [/opt/cni/bin]]
THÔNG TIN[0000] Docker cri mạng được quản lý bởi plugin mạng kubernetes.io/no-op
...
THÔNG TIN[0000] Đang đặt cgroupDriver cgroupfs
THÔNG TIN[0000] Docker cri đã nhận cấu hình thời gian chạy &RuntimeConfig{NetworkConfig:&NetworkConfig{PodCidr:,},}
THÔNG TIN[0000] Bắt đầu chương trình phụ trợ GRPC cho giao diện Docker CRI.
THÔNG TIN[0000] Bắt đầu chương trình phụ trợ cri-dockerd grpc

Tôi nghĩ rằng tôi đã xóa nhầm /opt/cni/bin, vì vậy tôi đã thêm lại nội dung của nó (lấy phát hành mới nhất):

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
cầu băng thông tường lửa dhcp flannel Host-device Host-local ipvlan loopback macvlan portmap ptp sbr điều chỉnh tĩnh vlan vrf

sau khi khởi động lại cri-docker service, mọi thứ bắt đầu hoạt động như mong đợi:

masterzulu@master-zulu:~$ kubectl get pods -Ao wide
NAMESPACE NAME TÌNH TRẠNG SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI IP NODE
django-space django-588cb669d4-4zz7f 1/1 Chạy 0 11s 10.244.0.4 master-zulu
django-space postgres-deployment-b58d5ff94-scmrx 1/1 Đang chạy 0 12 giây 10.244.0.5 master-zulu
kube-system coredns-6d4b75cb6d-rnjlm 1/1 Đang chạy 0 73m 10.244.0.2 master-zulu
kube-system coredns-6d4b75cb6d-s6zl7 1/1 Chạy 0 73m 10.244.0.3 master-zulu

cni0 lên:

masterzulu@master-zulu:~$ ifconfig -a
cni0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
        inet 10.244.0.1 netmask 255.255.255.0 phát sóng 10.244.0.255
        inet6 fe80::8c8:84ff:fe78:d999 tiền tốlen 64 phạm vi 0x20<link>
        ether 0a:c8:84:78:d9:99 txqueuelen 1000 (Ethernet)
        Gói RX 27714 byte 5010722 (5,0 MB)
        Lỗi RX 0 bị rớt 0 tràn 0 khung hình 0
        Gói TX 26936 byte 2898949 (2,8 MB)
        Lỗi TX 0 bị rớt 0 tràn 0 sóng mang 0 va chạm 0

cri-docker trạng thái:

masterzulu@master-zulu:~$ sudo systemctl status cri-docker
â cri-docker.service - Giao diện CRI cho Docker Application Container Engine
     Đã tải: đã tải (/etc/systemd/system/cri-docker.service; đã bật; giá trị đặt trước của nhà cung cấp: đã bật)
     Hoạt động: hoạt động (đang chạy) kể từ Thứ Sáu 2022-05-27 22:39:06 BST; 1 giờ 57 phút trước
TriggeredBy: â cri-docker.socket
       Tài liệu: https://docs.mirantis.com
   PID chính: 187399 (cri-dockerd)
      Nhiệm vụ: 11
     Bộ nhớ: 17.1M
     Nhóm C: /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>

Ngày 28 tháng 5 00:36:20 master-zulu cri-dockerd[187399]: time="2022-05-28T00:36:20+01:00" level=info msg="Sử dụng tệp cấu hình CNI /etc/cni/net .d/10-flannel.conflist"

kết luận của tôi

sự thiếu vắng của --mạng-plugin=cni Trong cri-dockerd startup args hoặc bất kỳ vấn đề nào khác trong CNI configs có thể gây ra sự cố này khi cri-docker cho rằng CNI bị thiếu và sử dụng giao diện docker0 trực tiếp để các nhóm nhận được IP cao hơn từ phạm vi này 172.17.0.x.

Hy vọng điều này sẽ giúp bất cứ ai có cùng một vấn đề.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.