Kubernetes 1.24+ 失败,法兰绒给"cni plugin not initialized"



我正在 Ubuntu 20.04 上进行单节点 kubernetes 安装(因此删除了control-plane(或 1.24 之前的污点master)。对于 1.23 之后的 kubernetes 版本,网络不会初始化。一切都适用于 1.24 之前的版本。我做错了什么吗?

我的初始化命令是:

sudo kubeadm init --apiserver-advertise-address=$IP_TO_BIND_TO --pod-network-cidr=10.244.0.0/16

我使用以下方法应用法兰绒:

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

节点保持"未就绪",describe nodes给我:

...
Ready                False   Wed, 21 Sep 2022 08:27:47 -0400   Wed, 21 Sep 2022 08:27:32 -0400   KubeletNotReady              container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
...

文件/etc/cni/net.d/10-flannel.conflist在那里,包含:

{
"name": "cbr0",
"cniVersion": "0.3.1",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",
"capabilities": {
"portMappings": true
}
}
]
}

法兰绒正在运行;kubectl get pods --all-namespaces给出:

AMESPACE      NAME                                  READY   STATUS    RESTARTS   AGE
kube-flannel   kube-flannel-ds-22w4k                 1/1     Running   0          42s
kube-system    coredns-565d847f94-fl2b6              0/1     Pending   0          42s
kube-system    coredns-565d847f94-qnzs4              0/1     Pending   0          42s
kube-system    etcd-master-node                      1/1     Running   0          56s
kube-system    kube-apiserver-master-node            1/1     Running   0          56s
kube-system    kube-controller-manager-master-node   1/1     Running   0          56s
kube-system    kube-proxy-mnwcm                      1/1     Running   0          42s
kube-system    kube-scheduler-master-node            1/1     Running   0          56s

corednspod 正在等待NotReady污点,我认为如果不解决网络问题就无法删除该污点cni plugin not initialized

文件/run/flannel/subnet.env也在那里,包含:

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

ifconfig显示了一个cni0界面:

cni0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
inet 10.244.0.1  netmask 255.255.255.0  broadcast 10.244.0.255
inet6 fe80::b852:baff:fe10:4f4b  prefixlen 64  scopeid 0x20<link>
ether ba:52:ba:10:4f:4b  txqueuelen 1000  (Ethernet)
RX packets 286  bytes 25159 (25.1 KB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 357  bytes 65069 (65.0 KB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

apparmorufw被禁用。

有关如何运行此内容的任何建议将不胜感激。

编辑:事实证明,如果我在 Ubuntu NetworkManager 中禁用了 wifi,即使机器是有线的并且kubeadm init呼叫中的$IP_TO_BIND_TO(见上文)是启用有线的网络接口,从 1.24 开始,cni 插件无法初始化。

问题似乎是我在第一次启动 kubelet 后过早地应用 cni 网络插件(法兰绒或印花布); 所有这些都在我的系统中编写了脚本。

如果您等到 coredns pod 处于Pending状态,然后kubectl apply网络,无论是印花布还是法兰绒,它似乎都可以工作。

在 1.24 之前,情况并非如此。

相关内容

最新更新