【发布时间】:2020-05-18 17:36:45
【问题描述】:
我正在尝试通过拥有一个主节点和一个工作节点来创建一个新的 kubernetes 集群。我已经使用 kubeadm 工具完成了主节点中的所有配置。所有 control plane 组件都在 master 节点上运行,并通过检查 pod 的状态来验证。
coredns-6955765f44-xspkr 0/1 Pending 0 8d
etcd-master-1 1/1 Running 1 8d
kube-apiserver-master-1 1/1 Running 1 8d
kube-controller-manager-master-1 1/1 Running 1 8d
kube-proxy-8z8qr 1/1 Running 1 8d
kube-scheduler-master-1 1/1 Running 1 8d
在工作节点中安装 kubectl、kubeadm、kubelet 和 docker 后,我尝试通过运行 kubeadmin join 命令通过提供令牌和发现令牌将节点添加到集群中,但出现以下错误。
I0202 22:17:57.778406 28654 token.go:78] [discovery] Failed to request cluster info: [Get https://10.0.2.15:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s: dial tcp 10.0.2.15:6443: connect: connection refused]
我确实从工作节点 ping 主节点并且能够做到这一点。我还禁用了防火墙,即使在那之后也无法加入集群。
除了我提到的安装上述组件之外,在工作节点中是否有任何先决条件?任何帮助将不胜感激。
新发现
我刚刚发现的一件有趣的事情是 enp0s3 ip 地址。虽然我使用 enp0s8 的 ip 地址登录到 vm,但两个 master 工作节点的 enp0s3 是相同的,我猜这是导致问题的原因。当我在主节点中使用 kubeadm token create 命令生成令牌时,它会为 kubeapi url 提供 enp0s3 的 ip 作为 (kubeadm join 10.0.2.15:6443),这对于主节点和工作节点来说似乎都很常见。
Master
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::b7:1fff:fe33:e924 prefixlen 64 scopeid 0x20<link>
ether 02:b7:1f:33:e9:24 txqueuelen 1000 (Ethernet)
RX packets 45801 bytes 50621300 (50.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12270 bytes 811968 (811.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Worker
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::b7:1fff:fe33:e924 prefixlen 64 scopeid 0x20<link>
ether 02:b7:1f:33:e9:24 txqueuelen 1000 (Ethernet)
RX packets 703 bytes 588444 (588.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 305 bytes 23784 (23.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
不确定这些 vm 是如何为 enp0s3 获得相同 IP 的,有什么办法可以解决这个问题吗?
【问题讨论】:
-
“连接被拒绝”的意思是:节点无法连接到
10.0.2.15:6443 -
您是在主节点上使用 kubeadm init 命令创建集群后立即还是在几天后在工作节点上运行 kubeadm join 命令?
标签: docker kubernetes kubeadm kubelet