切换CIDR
笔记
最好还是在部署的时候设定好 ip 段,修改 pod 的 ip 段容易,但修改 Service 的很麻烦。
使用 kubesphere 安装的集群,k8s 中的 CIDR 默认为 10.233.64.0/18
,不利于云组网中不通 k8s 集群的互联互通,因此需将另一个集群的 CIDR 修改成其他,如 10.233.128.0/18
# 确认当前的CNI插件
kubectl get daemonset -n kube-system
# Calico
# 查看当前的ip池
calicoctl get ippool -o wide
# 创建一个新的ip池配置
cat > ippool2.yaml <<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: default-ipv4-ippool2
spec:
blockSize: 24
cidr: 10.233.128.0/18
ipipMode: Always
natOutgoing: true
EOF
# 创建配置
calicoctl create -f ippool2.yaml
# 查看当前的ip池,是否生效
calicoctl get ippool -o wide
# 导出当前配置
calicoctl get ippool -o yaml > pools.yaml
编辑导出的 pools.yaml
,在旧的 ip 池属性配置中添加 disabled: true
禁用
# 应用配置
calicoctl apply -f pools.yaml
# 再次查看,此时旧的ip池已被禁用
calicoctl get ippool -o wide
# 此处新的pod将会分配的新的ip池,但已分配ip的pod不受影响
# 删除所有pod;这是一个危险操作,只适用于集群初始化阶段,等待几分钟重建。
kubectl delete pod -A --all
# 新建的pod将从新的ip池分配
# 删除旧的ip池
calicoctl delete pool default-ipv4-ippool
参考
- Migrate from one IP pool to another | Calico Documentation (opens new window)
- Configure IP pools | Calico Documentation (opens new window)
- 更换 service 和 pod 网段 (opens new window)
# flannel
参考:kubernetes 修改 pod cidr 以及 service cidr_podcidr_来自万古的忧伤的博客 - CSDN 博客 (opens new window)
上次更新: 2024/03/11, 22:37:05