K8S 修改节点 IP 有没有比较好的方案

2022-11-07 16:48:57 +08:00
 sniperking1234

因为有私有化交付 K8S 的需求,但是交付给客户之后,可能会遇到客户服务器 IP 变化的情况,这时候就需要支持 K8S 的节点 IP 变更,但是从网上搜索了一下,关于这个方面好像并没有成熟的解决方案。

不知道大家有没有遇到过类似场景,又是怎么解决的问题。

2629 次点击
所在节点    Kubernetes
30 条回复
novolunt
2022-11-07 16:54:45 +08:00
双 ip 方案,k8s 自己一套内网 ip ,不走节点外网 ip 。
sniperking1234
2022-11-07 17:22:30 +08:00
@novolunt 这个方案怎么搞,有啥技术栈可以参考吗
sujin190
2022-11-07 17:39:02 +08:00
要不直接套层 vpn 呗,性能也没多大影响,然后客户 ip 随便他们折腾,只需要保证各节点网络能正常访问就行了吧
sujin190
2022-11-07 17:47:49 +08:00
保证同一局域网的话,直接自己给网卡再添加设置一个不会变的的 ip 来组局域网也可以,或者添加网桥网卡再添加 ip 组单独局域网也行,这样也正常二层网络完全一样的

不过感觉还是用 vpn 比较好,在不在统一局域网都没问题,改集群 ip 看起来似乎有点麻烦,而且你都交互给客户了,你有方案他们操作的时候估计也很容易出错,还是独立于集群外用 vpn 组一个独立的局域网靠谱,有问题客户只要有点经验的也可以自己搞定
pepesii
2022-11-07 17:49:07 +08:00
用域名行不
Blank10030
2022-11-07 17:55:16 +08:00
意思是 k8s 部署在虚拟机里,然后和客户内网打通?开个虚拟机双网卡当网关就行了。k8s 内部走自己的 ip ,客户访问走建的虚拟机网关。
optional
2022-11-07 17:57:31 +08:00
没听懂,交付有状态的集群?也没听都不靠谱啊。
交付的不应该是一堆 yaml 和数据吗
swulling
2022-11-07 18:05:35 +08:00
这要看你 node 上报的是主机名还是 ip 。如果 get nodes 里看到的是主机名,只是修改 ip 就很简单修改 kubelet 的配置即可。

如果要修改上报的字段,就比较麻烦了。这里的麻烦主要是证书以及 etcd 里的对应关系。推荐是先下线再加入,当然这会导致 pod 的迁移。

关于你这个需求,最简单的就是上报字段用自定义的值,比如 node01 这种。修改起来就很简单
sniperking1234
2022-11-07 18:30:49 +08:00
@optional 是交付的产品,产品部署在 k8s 上,用户不会直接使用 k8s
sniperking1234
2022-11-07 18:31:55 +08:00
@swulling 你说的步骤应该是修改 slave 节点的步骤,如果修改 master 节点,需要改控制组件的配置,包括 cni 的配置,复杂不少
sniperking1234
2022-11-07 18:32:53 +08:00
@sujin190 这个有博文或者方案实现可以参考吗
sniperking1234
2022-11-07 18:34:25 +08:00
@pepesii 访问 apiserver 的地址可以配置成域名,但是 node 地址应该只能是 ip ,我没找到能配置成域名的方式
optional
2022-11-07 18:34:29 +08:00
@sniperking1234 保证应用可以在新的集群内重新启动就好了吧,我们自己的项目基本都做到了 80%的 gitops
Judoon
2022-11-07 18:36:48 +08:00
写个脚本,直接删除并重新加入集群,让客户改完 ip 执行一下,逐个运行
sniperking1234
2022-11-07 18:39:30 +08:00
@optional 你是指重建一个集群吗,但是我们有持久化的数据存在集群里,换集群还涉及到存储的迁移
sniperking1234
2022-11-07 18:43:46 +08:00
@Judoon 我们有一些场景只有一个 master 节点,如果把这个 master 删了,应该就加不回去了吧
optional
2022-11-07 18:47:07 +08:00
@sniperking1234 实时迁移很麻烦,但是持久化的数据也应该包含备份吧,运维的时候停止访问,备份,重建,还原。
optional
2022-11-07 18:47:26 +08:00
没有备份即使能在线迁移,你能保证不出错吗
sniperking1234
2022-11-07 18:51:33 +08:00
@optional 有备份,但是这个复杂度已经不是自动化或者一个脚本能解决的了,感觉得派专人过去支持,成本太高了
optional
2022-11-07 18:54:54 +08:00
@sniperking1234 K8S 的 initialcontainer 与 job 就是干这类事的啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/893365

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX