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 đề.