K8S 修改节点 IP 有没有比较好的方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sniperking1234
V2EX    Kubernetes

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

  •  
  •   sniperking1234 2022-11-07 16:48:57 +08:00 3106 次点击
    这是一个创建于 1086 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    https://www.cnblogs.com/huangweimin/articles/7700892.html openvpn 的

    https://www.moewah.com/archives/2898.html tinc 用 switch 模式组网

    openvpn 组的流量统一由中心节点转发,tinc 的 switch 模式就是各机器相互直达了,然后把 vpn 的 ip 当集群外部 ip 就行,安装 k8s 时候其实就是一个多网卡机器指定外部 ip 的过程,查一下应该很容易找到安装 k8s 怎么指定网卡和外部 ip
    rrfeng
        22
    rrfeng  
       2022-11-07 19:25:07 +08:00
    设计有问题,就不要让别人来填坑
    sniperking1234
        23
    sniperking1234  
    OP
       2022-11-07 19:32:49 +08:00
    @rrfeng 请教下有什么问题
    Judoon
        24
    Judoon  
       2022-11-07 22:56:31 +08:00   1
    @sniperking1234 #16 给你几个方案
    1 、交付前和客户商量好网段,直接使用他们提供的网段初始化集群再交付
    2 、交付时包含交换机,所有的机器放在交换机内使用独立的事先自定义好的子网,客户只需要提供最多两三个 ip 到时候配到交换机上的出入口即可
    3 、直接在所有机器现有的网卡上创建一个桥接口,配置自定义 100.64.x.x (或者 169.254.x.x )的网段(默认你的节点在一个子网内,没有跨网段)。这个应该类似 4 楼的方案




    之前做过单机和集群交付的方案
    - 单机直接桥接一个虚 ip 配置为 100.100.100.100 (方便实施直连又不容易和客户网段冲突
    - 集群用的是上面的方案 2 ,用的下一代防火墙+交换机
    Judoon
        25
    Judoon  
       2022-11-07 23:01:18 +08:00
    虚 ip 还能直接给单机的 master 用来初始化,实际 ip 怎么变都无所谓
    novolunt
        26
    novolunt  
       2022-11-08 11:54:56 +08:00
    sniperking1234
        27
    sniperking1234  
    OP
       2022-11-08 11:57:27 +08:00
    @novolunt 10 段是内部 ip ,20 段是外部 ip ?那用的什么技术方案呢
    novolunt
        28
    novolunt  
       2022-11-08 12:13:28 +08:00
    @sniperking1234 一个网卡可以绑定多个 ip ,都不用建 tunnel 。eth0 给内网 ip eth0:0 给电信外网 ip eth0:1 给铁通外网 ip
    pepesii
        29
    pepesii  
       2022-11-08 15:36:52 +08:00
    @sniperking1234 #12 我感觉是可行的,你可以试试,我搜索了下 https://www.sobyte.net/post/2022-05/change-k8s-node-ip/#summary 最后这个 summary 的办法,当然我没有去测试,如果你测试了,可以反馈下结果哈
    Comolli
        30
    Comolli  
       2023-01-08 02:28:24 +08:00 via iPhone
    ,marrk
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     950 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 21:59 PVG 05:59 LAX 14:59 JFK 17:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86