我如何在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{主要:“1”,次要:“28”,GitVersion:“v1.28.1”,GitCommit:“8dc49c4b984b897d423aab4971090e1879eb4f23”,GitreeTreeTreed 21 :51Z", Go版本:"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 虛擬機器上。

不幸的是,k8s 在沒有 VPN 的情況下無法 ping 通,因此在主機 WireGuard 上啟用了 VPN。在 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/ 後的輸出運行/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

錯誤是什麼以及如何修復它?

google了同樣的問題,但沒有答案

答案1

我遇到了同樣的問題,我透過執行本教程中編寫的操作解決了該問題: https://www.jjworld.fr/kubernetes-installation/

相關內容