电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

更换service和pod网段

来源:金蝶云社区作者:金蝶2024-09-233

更换service和pod网段

1 介绍及前提

在内网环境里,由于网络规划的原因通常会遇到需要更换Kubernetes内部的ip网段。此文档是针对于已经存在的Kubernetes来进行网段更换的操作。操作期间会短时间内中断向外提供的服务;需提前发布停机通告。


Kubernetes内部的ip网段也分为两类,一个是service的ip地址段,也称为ClusterIP(service的ip强烈不建议修改,虽然此文档提供了修改教程,但是手动修改的地方很多,操作不当会引起集群无法使用,而且发布此文档时并没有在所有的版本上进行过测试)。还有一类是pod的ip地址段,也称为cidr,由网络插件来分配和管理,用于pod和pod之间的通信。


测试环境参考:

操作系统/内核版本Calico版本K8S版本(kubeadm安装)容器版本
centos7.9/3.10+3.17.1v1.19.4docker 19 .03


注意:以下操作使用的用户均为root;不是root用户的自行识别添加sudo,并且所有的操作均在k8s-master节点。


2 更换pod网段

1. 获取calico的ip池并导出到yaml文件。

# kubectl get ippool

# kubectl get ippool -o yaml > k8s-ippool.yaml

2. cidr修改为想要修改的网段。

推荐修改为B类地址,也就是16位子网掩码(C类也可,但不推荐,会影响后期pod数量扩展)。

# vi k8s-ippool.yaml



3. 删除旧的ippool。

# kubectl delete ippool default-ipv4-ippool


4. 创建新的ippool。

kubectl apply -f k8s-ippool.yaml


5. 查看验证。

# kubectl get ippool -o yaml | grep cidr


6. 重建全部pod。

# kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e' 

#这步操作是将拥有"旧ip地址"的容器进行重建,然后会获得"新ip地址"


7. 第6步操作全部操作完成之后,查看一下是否全部pod-ip更换为新的地址。


3 更换service网段

1. 获取当前所有service的yaml。

# kubectl get svc --all-namespaces | grep -v -w kubernetes| awk '$4 !~ /None|CLUSTER/{print "kubectl get svc -n "$1" " $2 " -o yaml && echo ---"}' | bash | sed '/clusterIP: 10/d'  > ~/all_svc.yaml

#上面命令有局限性,针对于10.开头的service-ip段,如果不是,需要自行再修改下。


2. 修改apiserver配置参数。

# vi /etc/kubernetes/manifests/kube-apiserver.yaml

推荐修改为B类地址,也就是16位子网掩码(C类也可,但不推荐,会影响后期pod数量扩展)。



3. 修改controller-manager配置参数。

vi /etc/kubernetes/manifests/kube-controller-manager.yaml

推荐修改为B类地址,也就是16位子网掩码(C类也可,但不推荐,会影响后期pod数量扩展)。



4. 删除所有存在的service。

kubectl get svc --all-namespaces | awk '$4 !~ /None|CLUSTER/{print "kubectl delete svc -n "$1" " $2}' | bash


5. 将刚才获取的yaml,apply生成新的service。

kubectl apply -f ~/all_svc.yaml


注意:如果出现如下报错,重启所有的master和node节点,这是新的虚拟网桥没有建立起来的报错

Error from server (InternalError): error when creating "/root/all_svc.yaml": Internal error occurred: failed to allocate a serviceIP: the provided range does not match the current range


6. 查看创建的svc的地址段是否是新地

更换service和pod网段

1 介绍及前提在内网环境里,由于网络规划的原因通常会遇到需要更换Kubernetes内部的ip网段。此文档是针对于已经存在的Kubernetes来进行网...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信