簡體   English   中英

無法將工作節點連接到kubernetes集群

[英]Unable to connect worker node to kubernetes cluster

嘗試從工作節點連接到群集時獲取下面提到的錯誤。

群集版本為1.10.4 ,節點版本為1.11.0

[discovery] Successfully established connection with API Server "10.148.0.2:6443"
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.11" ConfigMap in the kube-system namespace
configmaps "kubelet-config-1.11" is forbidden: User "system:bootstrap:7fho7b" cannot get configmaps in the namespace "kube-system"

絕對檢查您的kubeadm和kubelet版本,確保在所有節點上使用相同版本的這些軟件包。 在安裝之前,您應該在主機上“標記並保留”這些版本:

檢查每個的當前版本:

kubelet --version

檢查kubeadm

kubeadm版本

如果它們不同,你就會遇到問題。 您應該在所有節點中重新安裝相同的版本並允許降級。 我在下面的命令中的版本可能比當前版本更舊,您可以用更新的版本號替換版本號,但這將有效:

sudo apt-get install -y docker-ce = 18.06.1~ce~3-0~ubuntu kubelet = 1.12.2-00 kubeadm = 1.12.2-00 kubectl = 1.12.2-00 --allow-downgrades

然后,一旦安裝完畢,請標記並按住它們,以便它們無法自動升級,並破壞您的系統

sudo apt-mark hold docker-ce kubelet kubeadm kubectl

由於您使用各種kubeadm版本,因此對於kubelet-config-1.* config映射,控制(主)節點和工作節點之間存在不匹配。

檢查Configmapkube-system命名空間的主要控制節點上:

kubectl get configmap -n kube-system

我假設kubelet-config版本的結果值與錯誤消息中的kubelet-config-1.11不同。

因此,您應該將kubeadm升級到版本1.11,以匹配您的工作節點kubeadm版本。

GitHub上討論了類似的案例。

問題不是kubeadm版本,而是kubelet版本。

當您運行kubeadm join ,kubeadm將查看主機系統中安裝的kubelet版本,然后它將要求API服務器進行正確的配置。

這個代碼在這里

// DownloadConfig downloads the kubelet configuration from a ConfigMap and writes it to disk.
// Used at "kubeadm join" time
func DownloadConfig(client clientset.Interface, kubeletVersion *version.Version, kubeletDir string) error {

    // Download the ConfigMap from the cluster based on what version the kubelet is
    configMapName := kubeadmconstants.GetKubeletConfigMapName(kubeletVersion)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM