No CNI configuration file in ~~. Has your network provider started?

スポンサーリンク
Uncategorized

はじめに

以下な流れで「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          33m

ingress-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 refused

kubeletが止まっていました。

$ 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.242s

kubeletを起動しなおして、

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 は起動時にホストのインターフェース(例:eth0ens160 など)を探して 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ができました。

最後に

いろんなところにエラーの原因の可能性があってもう大変!

タイトルとURLをコピーしました