MicroK8s 容器无法启动所有 pod 都停留在“ContainerCreating”状态 Ubuntu 20.10 RP4

问题描述

我一直在谷歌搜索并查看日志来尝试解决这个问题,但我似乎无法让 microk8s 在我的 RaspBerry Pi 上运行,运行 Ubuntu 20.10

快速安装 v1.15 sudo snap install microk8s --classic --channel=1.15/stable

我可以确认 microk8s.status 返回它正在运行。 kubectl get nodes --namespace kube-system 返回:

NAME         STATUS   ROLES    AGE   VERSION
mydnsname   Ready    <none>   22h   v1.15.11 

我已安装以下启用:仪表板 我安装了仪表板 dns 入口 - 安装但存在同样的问题。

kubectl get all --all-namespaces 返回

NAMESPACE     NAME                                                  READY   STATUS              RESTARTS   AGE
kube-system   pod/heapster-v1.5.2-c4dcfd9f8-kl5g5                   0/4     ContainerCreating   0          68s
kube-system   pod/kubernetes-dashboard-c775bf88b-pmhz6              0/1     ContainerCreating   0          68s
kube-system   pod/monitoring-influxdb-grafana-v4-6f74479987-rd5ck   0/2     ContainerCreating   0          68s


NAMESPACE     NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
default       service/kubernetes             ClusterIP   10.152.183.1     <none>        443/TCP             18h
kube-system   service/heapster               ClusterIP   10.152.183.195   <none>        80/TCP              68s
kube-system   service/kubernetes-dashboard   ClusterIP   10.152.183.171   <none>        443/TCP             68s
kube-system   service/monitoring-grafana     ClusterIP   10.152.183.120   <none>        80/TCP              68s
kube-system   service/monitoring-influxdb    ClusterIP   10.152.183.175   <none>        8083/TCP,8086/TCP   68s


NAMESPACE     NAME                                             READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/heapster-v1.5.2                  0/1     1            0           68s
kube-system   deployment.apps/kubernetes-dashboard             0/1     1            0           68s
kube-system   deployment.apps/monitoring-influxdb-grafana-v4   0/1     1            0           68s

NAMESPACE     NAME                                                        DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/heapster-v1.5.2-c4dcfd9f8                   1         1         0       68s
kube-system   replicaset.apps/kubernetes-dashboard-c775bf88b              1         1         0       68s
kube-system   replicaset.apps/monitoring-influxdb-grafana-v4-6f74479987   1         1         0       68s

kubectl 描述 pods kubernetes-dashboard-c775bf88b-pmhz6 --namespace kube-system 返回

Warning  FailedCreatePodSandBox  2m26s (x3 over 2m54s)   kubelet,mydnsname  (combined from similar events): Failed create pod sandBox: rpc error: code = UnkNown desc = Failed to start sandBox container: Failed to create containerd task: Failed to mount rootfs component &{overlay overlay [workdir=/var/snap/microk8s/common/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/1386/work upperdir=/var/snap/microk8s/common/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/1386/fs lowerdir=/var/snap/microk8s/common/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/2/fs]}: invalid argument: unkNown
  Warning  MissingClusterDNS       2m14s (x13 over 4m58s)  kubelet,mydnsname  pod: "kubernetes-dashboard-c775bf88b-pmhz6_kube-system(777df7aa-d4de-40f0-8275-70b36d2e5029)". kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to "Default" policy.

我已经检查过,我没有使用 ZFS 作为我的主分区的文件系统,我使用的是overlayfs df -Th

Filesystem     Type     Size  Used Avail Use% Mounted on
none           overlay   59G   21G   36G  37% /
tmpfs          tmpfs    1.9G     0  1.9G   0% /dev/shm
tmpfs          tmpfs    743M  1.2M  742M   1% /run
tmpfs          tmpfs    5.0M  4.0K  5.0M   1% /run/lock
tmpfs          tmpfs    4.0M     0  4.0M   0% /sys/fs/cgroup
tmpfs          tmpfs    372M  104K  372M   1% /run/user/1000

因此,我不确定为什么 containerd 无法挂载或有问题,因为 containerd 与 overlayfs 没有任何问题。

试过 microk8s.reset 和卸载重装,试了几个不同的版本还是不行。

非常感谢任何想法或帮助,因为我很想为本地开发人员设置本地 kubernetes!

提前致谢!

解决方法

发现问题出在 microk8s 上,特别是 containerd 不能与带有覆盖层的 squashFS 文件系统一起工作。

我使用 SquashFS 安装 Ubuntu 的原因是我使用 Berryboot 来支持多个操作系统安装。

我切换到 Pinn,它支持 ext4 文件系统,可与 containerd 配合使用并重新安装 Ubuntu 20.04。

安装 microk8s 后,节点开始运行,容器现在都正常运行了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...