はじめに
以下な流れで「No CNI configuration file in /etc/cni/net.d/. Has your network provider started?」というエラーに出くわしました。
- ingress-nginxを構築しようとしたらtimeoutエラー
$ helm install ingress-nginx-1 ingress-nginx/ingress-nginx -n ingress-nginx
Error: INSTALLATION FAILED: failed pre-install: 1 error occurred:
* timed out waiting for the condition- podを確認
$ kubectl get pod -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-1-admission-create-z4s2t 0/1 ContainerCreating 0 33mingress-nginx-admission-createがコンテナを作ろうとしていて止まっている??
- ingress-nginx-admission-createの詳細を見てみる
$ kubectl describe pod ingress-nginx-1-admission-create-z4s2t -n ingress-nginx
・・・【略】・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 34m default-scheduler Successfully assigned ingress-nginx/ingress-nginx-1-admission-create-z4s2t to k8s-worker1
Warning FailedCreatePodSandBox 34m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(71b368a2f1b9f678d0e6b8d07dfa89aa5f4773030ad6c3160fc1312c9d0c25f3): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 33m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(63533c66e60c3670c83caef5406ec9c95cf25a44d0fdb22c405dbbe859c86e8c): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 33m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(bf90b704b5922137df4bd569f7399357f37448fb5aac6942e3ed5a7fae46bc7b): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 33m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(1fd0b2b4d78e78cb5b3e2a1e3d9edd1eb53ef6ceedf023fcdc9aca0062549107): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 33m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(670c57caa9b9379debeccf0b6c5cf48e6cd2ad47678b6fb1d7f7eec72a275252): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 33m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(f08cb5febc46a1bfa3e06aeab56054031795e718bbdfc5a6aab627727ce1560f): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 32m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(ccbdf9b3fcf8e3fd9cd9ec3237b59ca2fb8a48118fa41f92525b98917b18ee55): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 32m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(3b7a8e57a9c7fb24d9e7f6206f95196c681b9b67a2a9fe3d88289c0e23bd504e): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 32m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(04b701ea06015d2a85de94528223016f66f8c28315a9c560d35a3d24d363e559): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
Warning FailedCreatePodSandBox 4m (x128 over 32m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(05e145030c01f2a261de6122d278962b4868df91972c886378aeaf12bf84d39e): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?出てきたのは、
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create pod network sandbox k8s_ingress-nginx-1-admission-create-z4s2t_ingress-nginx_0b4b74fb-f45b-4fb3-bbfc-98a385f8d937_0(04b701ea06015d2a85de94528223016f66f8c28315a9c560d35a3d24d363e559): No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
というエラーでした。
今回はこのエラーを解消させます。
対応
まず行ったのはflannelを入れ直してみました。
ネットワークに問題があると思ったからです。
flannelは正常に動いているように見えました。
$ kubectl get pods -n kube-flannel -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-flannel-ds-6xnnt 1/1 Running 0 2d13h 192.168.40.147 k8s-master <none> <none>
kube-flannel-ds-7bh74 1/1 Running 0 117m 192.168.40.187 k8s-worker1 <none> <none>
kube-flannel-ds-wmlzz 1/1 Running 0 118m 192.168.40.160 k8s-worker2 <none> <none>しかし、ログはなんか変でした。
$ kubectl logs -n kube-flannel kube-flannel-ds-6xnnt
Defaulted container "kube-flannel" out of: kube-flannel, install-cni-plugin (init), install-cni (init)
Error from server: Get "https://192.168.40.147:10250/containerLogs/kube-flannel/kube-flannel-ds-6xnnt/kube-flannel": dial tcp 192.168.40.147:10250: connect: connection refusedkubeletが止まっていました。
$ sudo systemctl status kubelet
○ kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; preset: enabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: inactive (dead) since Sun 2025-06-15 20:00:57 JST; 2h 24min ago
Duration: 21min 278ms
Docs: https://kubernetes.io/docs/
Process: 901687 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUB>
Main PID: 901687 (code=exited, status=0/SUCCESS)
CPU: 54.242skubeletを起動しなおして、
flannelを入れ直してみます。
⇒上手くいきません。
再度、flannelのログを確認してみます。
E0615 11:31:15.491706 1 retry.go:29] #0: no such device
E0615 11:31:15.735690 1 retry.go:29] #1: no such device
E0615 11:31:16.169867 1 retry.go:29] #2: no such device
E0615 11:31:17.034567 1 retry.go:29] #3: no such device
E0615 11:31:18.708510 1 retry.go:29] #4: no such device
E0615 11:31:21.961460 1 retry.go:29] #5: no such device
E0615 11:31:28.382997 1 retry.go:29] #6: no such device
E0615 11:31:41.218008 1 retry.go:29] #7: no such device
E0615 11:32:06.899596 1 retry.go:29] #8: no such device
E0615 11:32:58.123053 1 retry.go:29] #9: no such device
E0615 11:32:58.123158 1 vxlan_network.go:189] AddARP failed: All attempts fail:というエラーが出ていました。
これについては、
chatgpt曰く、
flannel は起動時にホストのインターフェース(例:eth0 や ens160 など)を探して VXLAN を作成するんだけど、もし --iface= を指定しない場合、間違ったインターフェースを選ぶことがあり、それが存在しなければ no such device になる
とのこと。
kubectl -n kube-flannel edit daemonset kube-flannel-dsを実行し、
以下のハイライトのところを追加
containers:
- name: kube-flannel
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=wlan0 # ← これを追加これでエラーは無くなり、無事、helm install ingress-nginx-1 ingress-nginx/ingress-nginx -n ingress-nginxができました。
最後に
いろんなところにエラーの原因の可能性があってもう大変!
