我正在构建一个运行相同设置的机器集群:
- Ubuntu 服务器 20.04.2
- 在安装过程中我选择一个唯一的短主机名
- 安装操作系统后,我
microk8s 1.20/stable
通过 snap 添加并添加以下权限这教程
microk8s disable ha-cluster
我决定在安装后通过运行关闭 HA 。
我microk8s add-node
在主服务器上运行,前两台机器成功连接,创建一个有三个节点的集群,其中一个是主节点。
问题出现在第四台机器上。虽然连接正常,但 kubelet 并没有使用/etc/hostname
我机器的内部 IP 中定义的“漂亮”主机名。一切正常,但这会导致节点列表不一致且丑陋。
在主服务器上运行时,我根据 ip (主机名)microk8s.kubectl edit node
挑选出有问题的机器,并按照预期使用其主机名进行连接的其中一台机器():192.168.0.134
zebra
rhombus
- apiVersion: v1
kind: Node
metadata:
annotations:
node.alpha.kubernetes.io/ttl: "0"
volumes.kubernetes.io/controller-managed-attach-detach: "true"
creationTimestamp: "2021-04-04T18:08:15Z"
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/os: linux
kubernetes.io/arch: amd64
kubernetes.io/hostname: 192.168.0.134
kubernetes.io/os: linux
microk8s.io/cluster: "true"
name: 192.168.0.134
resourceVersion: "27486"
selfLink: /api/v1/nodes/192.168.0.134
uid: 09c01d87-1ae4-452f-8908-6dcb85a5999a
spec: {}
status:
addresses:
- address: 192.168.0.134
type: InternalIP
- address: 192.168.0.134
type: Hostname
...
- apiVersion: v1
kind: Node
metadata:
annotations:
node.alpha.kubernetes.io/ttl: "0"
volumes.kubernetes.io/controller-managed-attach-detach: "true"
creationTimestamp: "2021-04-04T13:59:21Z"
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/os: linux
kubernetes.io/arch: amd64
kubernetes.io/hostname: rhombus
kubernetes.io/os: linux
microk8s.io/cluster: "true"
name: rhombus
resourceVersion: "27244"
selfLink: /api/v1/nodes/rhombus
uid: f125573a-0efb-444c-849b-f0521fe3b813
spec: {}
status:
addresses:
- address: 192.168.0.105
type: InternalIP
- address: rhombus
type: Hostname
我发现这个--hostname-override
论点引起了我的头痛:
$ sudo grep -rlw "192.168.0.134" /var/snap/microk8s/2094/args
/var/snap/microk8s/2094/args/kube-proxy
/var/snap/microk8s/2094/args/kubelet
/var/snap/microk8s/2094/args/kubelet.backup
$ cat /var/snap/microk8s/2094/kubelet
...
--cluster-domain=cluster.local
--cluster-dns=10.152.183.10
--hostname-override 192.168.0.134
如果我将该文件与没有此问题的机器上的相同文件进行比较,最后一行是多余的。 同样如此/var/snap/microk8s/current/...
,我不知道它们之间有什么区别。
如果我尝试删除该行或将 IP 更改为zebra
,设置将被忽略并覆盖(以某种方式)。在相关问题的答案中建议这样做这里。其他答案建议重置,我使用microk8s reset
时没有区别。为了验证沿途的每个步骤,我在连接到其“漂亮”主机名的其中一台机器上运行相同的命令。最后,它始终保留了“漂亮”主机名。
在连接节点之前我应该做哪些更改才能显示正确的名称?为什么在不同的机器上执行相同的安装步骤会导致不同的节点名称?
编辑:我在机器上重新安装了操作系统,但问题仍然存在。
更新:
我忘记将最后一个节点主机名添加到主/etc/hosts
文件中:
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 masterhost
192.168.0.x nodehost1
192.168.0.y nodehost2
192.168.0.z nodehost3 <--- missing
现在一切都使用主机名而不是 IP。我仍然不明白为什么条目/etc/hosts
会改变行为。