繁体   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