添加网络之前 Kubernetes 集群的“稳定性”问题

Lar*_*ker 4 ubuntu init kubernetes

我正在尝试在 Ubuntu 22.04 服务器上安装我的第一个 kubernetes 集群。我正在按照此链接( https://www.cloudsigma.com/how-to-install-and-use-kubernetes-on-ubuntu-20-04/ )给出的说明进行操作。 当然,这实际上适用于 Ubuntu 20.04,但我认为它应该足够接近

我在步骤#6,我刚刚在控制节点上执行了“INIT”命令(sudo kubeadm init --pod-network-cidr=10.255.0.0/16){尚未到达工作节点然而} 。我注意到有时(相当频繁)“kubectl”执行失败:

<nonrootuser>@k8s-cluster1-control1:~/kubernetes$ kubectl get pods -A
The connection to the server <controlNodeIPAddress>.1:6443 was refused - did you specify the right host or port?
Run Code Online (Sandbox Code Playgroud)

当它起作用时,我看到:

<nonrootuser>@k8s-cluster1-control1:~/kubernetes$ kubectl get pods -A
NAMESPACE     NAME                                            READY   STATUS             RESTARTS         AGE
kube-system   coredns-6d4b75cb6d-qmcg7                        0/1     Pending            0                8m7s
kube-system   coredns-6d4b75cb6d-z6ks5                        0/1     Pending            0                8m7s
kube-system   etcd-k8s-cluster1-control1                      1/1     Running            13 (4m55s ago)   6m4s
kube-system   kube-apiserver-k8s-cluster1-control1            1/1     Running            16 (3m43s ago)   9m14s
kube-system   kube-controller-manager-k8s-cluster1-control1   1/1     Running            5 (3m9s ago)     5m53s
kube-system   kube-proxy-smp7q                                0/1     CrashLoopBackOff   4 (62s ago)      8m8s
kube-system   kube-scheduler-k8s-cluster1-control1            0/1     CrashLoopBackOff   20 (35s ago)     6m11s
Run Code Online (Sandbox Code Playgroud)

根据此链接(https://kubernetes.io/docs/setup/product-environment/tools/kubeadm/troubleshooting-kubeadm/#pods-in-runco ​​ntainererror-crashloopbackoff-or-error-state),这是不正常的,但他们没有提供太多尝试调试的信息。

我对 kubenetes非常陌生,但自 1998 年以来一直在使用 Linux 的一些。我想我的问题是我在尝试调试时找不到很多日志记录(或者只是还不够理解) 。有什么指示我可以如何进行吗?

谢谢你!!

PS 我的 kubeadm 版本是:

kubeadm version: &version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.1", GitCommit:"3ddd0f45aa91e2f30c70734b175631bec5b5825a", GitTreeState:"clean", BuildDate:"2022-05-24T12:24:38Z", GoVersion:"go1.18.2", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)

Lar*_*ker 6

看来,来自 Ubuntu“Jammy”存储库的“containerd”(当前版本为 1.6.6)的“默认”安装不会创建正常运行的配置文件 (/etc/containerd/config.toml)。即使删除“disabled_plugins = ...”条目(即文件中的所有内容都被注释掉)也无法提供稳定的containerd进程。我的猜测是,既然提供了该文件,则不会使用构建 containerd 时使用的嵌入式默认值,并且该进程现在对如何运行一无所知。

使用这些说明(https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-containerd-on-ubuntu-22-04.html),我能够创建一个新的默认值配置文件,修改它以启用“SystemdCgroup”,并重新启动containerd和Kubelet服务。

自重启以来,所有预计启动的 Pod 均已达到“正在运行”状态,并且尚未重启(超过 3 小时)。