如何修改Kubernetes节点的IP地址
- 2025-09-22 23:11:00
- 丁国栋
- 原创 123
场景1:给单节点集群更换IP
有一台物理机安装了Kubernetes的轻量级版k3s,这个物理机是集群中的唯一节点,由于物理机是单独托管在机房中的,正好赶上机房更换IP。
这样相当于更换了Kubernetes节点的IP,而节点的IP在集群中有重要意义,它是识别节点的重要信息之一,其他的重要因素还有主机名等。
更换IP后,需要修改三个地方:
- 修改kubelet或k3s的systemd unit file中的IP地址,启动 k3s。
- 可以先忽略k3s是否启动成功,只检查 2379 端口是否已经监听,如果监听了就修改etcd数据库中的IP地址。
- 修改Kubernetes集群节点资源中的IP地址。
注:不用关心k3s是否已经关闭,服务器是否已经重启,都可以参考这种方法。
修改kubelet或k3s的systemd unit file中的IP地址
通过命令 systemctl status k3s 查找unit file,一般是/etc/systemd/system/k3s.service,编辑修改下面参数的地址:
...
ExecStart=/usr/local/bin/k3s \
server \
--node-ip 10.0.7.223 \
--advertise-address 10.0.7.223 \
--tls-san 10.0.7.223 \
...
修改后先执行 systemctl daemon-reload,再启动systemctl start k3s。
修改 etcd 数据库中的IP地址
需要使用工具etcd中的 etcdctl 例如下载etcd-v3.6.5-linux-amd64包中会自带工具。
以下是一个示例,具体参数名称例如证书路径以自己的实际情况为准。
# 列出成员 ETCDCTL_ENDPOINTS='https://127.0.0.1:2379' ETCDCTL_CACERT=/opt/quickon/platform/server/tls/etcd/server-ca.crt ETCDCTL_CERT=/opt/quickon/platform/server/tls/etcd/server-client.crt ETCDCTL_KEY=/opt/quickon/platform/server/tls/etcd/server-client.key ETCDCTL_API=3 ./etcdctl member list # 示例输出:968527dd9b71777a, started, r450-9b7b0ca3, https://xxx.xxx.xxx.xxx:2380, https://10.0.7.223:2379, false。其中 xxx.xxx.xxx.xxx 是旧IP,10.0.7.223是新IP # 修改 ETCDCTL_ENDPOINTS='https://127.0.0.1:2379' ETCDCTL_CACERT=/opt/quickon/platform/server/tls/etcd/server-ca.crt ETCDCTL_CERT=/opt/quickon/platform/server/tls/etcd/server-client.crt ETCDCTL_KEY=/opt/quickon/platform/server/tls/etcd/server-client.key ETCDCTL_API=3 ./etcdctl member update 968527dd9b71777a --peer-urls="https://10.0.7.223:2380" # 示例输出:Member 968527dd9b71777a updated in cluster 14f0441395e5b4ca
修改Kubernetes集群节点资源中的IP地址。
例如有的Kubernetes使用自身上运行的NFS,如果指定了IP而不是域名,则需要修改IP地址。
一些建议:
- 使用域名代替IP地址。
- 一开始时做好规划,使用合理的主机名。
- Kubernetes的master角色要使用多个节点代替单节点。
发表评论