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/