我正在尝试为具有1个主节点和2个工作节点的Kubernetes群集创建模板。我已经安装了所有的先决条件软件,并在主节点上运行了kubeadmn init。但是,当我尝试运行kubeadmn join时(它是init命令的输出),出现了错误。
[discovery] Created cluster-info discovery client, requesting info
from "https://10.31.2.33:6443" [discovery] Requesting info from
"https://10.31.2.33:6443" again to validate TLS against the pinned
public key [discovery] Cluster info signature and contents are valid
and TLS certificate validates against pinned roots, will use API
Server "10.31.2.33:6443" [discovery] Successfully established
connection with API Server "10.31.2.33:6443" [kubelet] Downloading
configuration for the kubelet from the "kubelet-config-1.12" ConfigMap
in the kube-system namespace [kubelet] Writing kubelet configuration
to file "/var/lib/kubelet/config.yaml" [kubelet] Writing kubelet
environment file with flags to file
"/var/lib/kubelet/kubeadm-flags.env" [preflight] Activating the
kubelet service [tlsbootstrap] Waiting for the kubelet to perform the
TLS Bootstrap... [patchnode] Uploading the CRI Socket information
"/var/run/dockershim.sock" to the Node API object "<workernode2>" as
an annotation error uploading crisocket: timed out waiting for the
condition```
在workdernode 2上运行此代码之前,我已经执行了swapoff -a
我可以运行一次join,但在那之后,作为脚本的一部分,我运行了kubeadmn reset,然后运行了init和join,在出现这种情况的地方运行了几次。
不知道我在哪里犯了什么错误。
我的主要意图是将所有命令都以shell脚本的形式(在主节点上)放置,以便可以在集群上运行它来创建网络。
3条答案
按热度按时间hgb9j2n61#
重新启动节点后,我遇到了以下问题:
步骤来摆脱这个问题:
1.再次检查主机名,重新启动后它可能已更改。
1.执行以下清理操作
代码:
1.执行带有如下特殊标记的init操作
代码:
(其中www.example.com是主节点的IP,www.example.com是分配给Pod的专用子网) 10.10.10.2 is the IP of master node and 192.168.0.0/16 is the private subnet assigned for Pods)
xmjla07d2#
我在Ubuntu 16.04 amd 64上遇到过同样的问题,使用以下命令修复了它:
另外,看看kubeadm GitHub kubeadm swap on the related issue中的这个问题,人们仍然报告在关闭交换后有这个问题。
您也可以尝试在/etc/default/kubelet文件中添加 --fail-swap-on=false 标记,但对我的情况没有帮助。
这个问题似乎在最新的k8版本中得到了修复,因为在升级集群后,我没有遇到过这个问题。
wnvonmuf3#
我建议在修改iptables时要谨慎,因为在2节点Ubuntu 20.04 kubeadm集群上进行了大量的故障排除后,CNI插件依赖于内部节点Map。
使用
sudo hostnamectl set-hostname c23996dd402c.mylabserver.com
,我将主节点改回其Map名称,然后执行sudo systemctl daemon-reload
。我注销并重新登录,以确保重新加载工作正常。我可以看到命令提示符改回默认的VM节点名称。现在,群集的主机名到专用IP的Map匹配:
worker1节点也有同样的问题,所以恢复到系统默认值对我来说是更容易的方法。我只是把它改为
sudo hostnamectl set-hostname masterdefaultnodename
。恕我直言,iptable的更改应该总是在仔细考虑后进行,并作为一个升级的措施来解决我认为的问题。主机完成,转到工人1 ...