如何在 containerd 或 cri-docker 上初始化 kubeadm?

如何在 containerd 或 cri-docker 上初始化 kubeadm?

kubectl version --client

`客户端版本:v1.28.1 自定义版本:v5.0.4-0.20230601165947-6ce0bf390ce3`

kubeadm version

`kubeadm 版本:&version.Info{Major:“1”,Minor:“28”,GitVersion:“v1.28.1”,GitCommit:“8dc49c4b984b897d423aab4971090e1879eb4f23”,GitTreeState:“clean”,BuildDate:“2023-08-24T11:21:51Z”,GoVersion:“go1.20.7”,编译器:“gc”,平台:“linux/amd64”}`

版本消除了此块中描述的问题:

kubeadm 不会为您安装或管理 kubelet 或 kubectl,因此您需要确保它们与您希望 kubeadm 为您安装的 Kubernetes 控制平面的版本相匹配。如果不这样做,则存在版本偏差的风险,这可能会导致意外的错误行为。但是,kubelet 和控制平面之间的一个小版本偏差是受支持的,但 kubelet 版本不得超过 API 服务器版本。例如,运行 1.7.0 的 kubelet 应该与 1.8.0 API 服务器完全兼容,但反之则不然。

它安装在带有 ubuntu server 22.04.3 最小化系统的 proxmox 虚拟机上。

不幸的是,没有 VPN,k8s 无法 ping 通,所以在主机上启用了 VPN,WireGuard。在 NAT 中配置了伪装。

我按照文档安装了所有内容,按照那里写的安装了 cri-docker,然后使用以下命令运行它:kubeadm init --v=5 --cri-socket=unix:///var/run/cri-dockerd.sock

当启动时没有明确指定套接字,我会收到一个错误,我有 2 个套接字(containerd 和 cri-docker),正如我从 cri-docker 说明中理解的那样,它应该默认被选择。

使用 cri-dockerd 时的输出:

[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http:// localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused.

kubeadm reset --v=5 --cri-socker=unix:///var/run/cri-dockerd.sock 和 kubeadm init --v=5 --cri-socket=unix:///var/run/containerd/containerd.sock 之后的输出:

[preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: time="2023-09-07T15:56:59Z" level=fatal msg="validate service connection: validate CRI v1 runtime API for endpoint \"unix:/// var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService" , error: exit status 1

这是什么错误以及如何修复它?

在谷歌上遇到同样的问题,但没有答案

答案1

我遇到了同样的问题,并按照本教程中写的步骤解决了它: https://www.jjworld.fr/kubernetes-installation/

相关内容