通过下面的命令启用 dsr
helm upgrade cilium cilium/cilium --version 1.11.5 \
--install \
--namespace kube-system \
--set kubeProxyReplacement=strict \
--set k8sServiceHost=k8s-api \
--set k8sServicePort=6443 \
--set ipam.operator.clusterPoolIPv4PodCIDR="192.168.0.0/16" \
--set bpf.masquerade=true \
--set loadBalancer.mode=hybrid \
--set autoDirectNodeRoutes=true \
--set tunnel=disabled \
--set ipv4NativeRoutingCIDR="192.168.0.0/16"
部署后 cilium pod 正常运行,但其他 pod 都 CrashLoopBackOff,查看 kubernetes 集群日志发现下面的错误
network is not ready: container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
请问如何解决?
重启服务器后部分 pod 正常启动,但还有100个左右的 pod 处于 CrashLoopBackOff,现在的错误日志变成
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "2317003a32c1cc65d58b6dde918b74b493cfc9fc94fd7a833aff0909420dd713": plugin type="cilium-cni" name="cilium" failed (add): Unable to create endpoint: [PUT /endpoint/{id}][429] putEndpointIdTooManyRequests
根据错误日志提示,是 cilium-cni 插件未初始化导致的问题。你可以尝试重启 kubelet 进程,让它重新加载 cilium-cni 插件。
步骤如下:
登录到 Kubernetes 节点。
停止 kubelet 进程。
bash
sudo systemctl stop kubelet
删除 cilium-cni 插件的配置文件。
bash
sudo rm -rf /etc/cni/net.d/cilium-cni.conf
启动 kubelet 进程。
bash
sudo systemctl start kubelet
等待一段时间,让 kubelet 加载 cilium-cni 插件并初始化,然后查看 pod 是否能够正常启动。如果仍然存在问题,可以进一步排查是否有其他插件或配置与 cilium-cni 产生冲突。