Kubernetes(七)修改 pod 网络(flannel 插件)

一、 提示

需要重启服务器

操作之前备份 k8s 中所有资源的 yaml 文件

如下是备份脚本,仅供参考

bash 复制代码
# 创建备份目录
test -d $3 || mkdir $3
# $1 命名空间
# $2 资源名称: sts  deploy   configMap  svc 等
# $3 资源备份存放的目录名称

for app in  `kubectl -n $1 get $2 |awk '/spms/ {print $1}'`
do
    kubectl -n $1 get $2 $app -o yaml > $3/$app.yml
done

sed -i '/resourceVersion/ d' $3/*
sed -i '/uid/ d' $3/*
sed -i '/last-applied-configuration:/,+1 d' $3/*
sed -i '/creationTimestamp/ d' $3/*
sed -i '/generation/ d' $3/*
sed -ri '/^status:/,$ d' $3/*

if [ "$2" == "service" ];then
    sed -i '/clusterIP:/ d' $3/*
    sed -i '/clusterIPs:/,+1 d' $3/*
fi

二、修改设置

1 修改 flannel 环境配置文件

集群中每个节点都要修改

bash 复制代码
vi /run/flannel/subnet.env
bash 复制代码
FLANNEL_NETWORK=10.244.0.0/16  # 修改
FLANNEL_SUBNET=10.244.2.1/24   # 修改
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

2 修改 k8s 集群中 flannel 的 configMap 和 kube-proxy configMap

flannel

bash 复制代码
kubectl -n kube-system edit configMap kube-flannel-cfg

修改如下内容

json 复制代码
  net-conf.json: |
    {
      "Network": "10.244.0.0/16",  # 这里修改成你想要的网络
      "Backend": {
        "Type": "vxlan"
      }
    }

kube-proxy

bash 复制代码
kubectl -n kube-system edit configmaps kube-proxy

3 删除并重建 flannel 和 kube-proxy 的 pod

flannel 和 kube-proxy 是 k8s 中的守护进程,删除 pod 会自动创建,因此这里只需要删除现有的 pod 即可。

bash 复制代码
for pd in `kubectl -n kube-system get pod  |grep -P 'flannel-ds|kube-proxy'|awk '{print $1}'`
do
   kubectl -n kube-system delete po $pd
done

4 修改集群 contrlor 资源文件

在所有 master 节点修改

修改文件 /etc/kubernetes/manifests/kube-controller-manager.yaml

yaml 复制代码
spec:
  containers:
  - command:
    ...
    # 修改这个
    - --cluster-cidr=10.244.0.0/16
    ...

修改完成后,集群会自动更新此 Pod

5 备份 集群所有节点的 yaml 文件,并修改里面的 podCIDR 和 podCIDRs

备份

bash 复制代码
 kubectl get nodes node_name -o yaml > node_name.yml

修改这里

yaml 复制代码
...
spec:
  podCIDR: 10.244.2.0/24
  podCIDRs:
  - 10.244.2.0/24
...

删除并重新加入节点

bash 复制代码
kubectl delete nodes  node_name
kubectl apply -f node_name.yml

6 删除接口

bash 复制代码
ifconfig cni0 down    # 关闭接口
ip link delete cni0     # 删除配置

ifconfig flannel.1 down  
ip link delete flannel.1

7 重启服务

bash 复制代码
systemctl restart docker kubelet

8 验证

检查是否出现了 新的 flannel.1 和 cni0 接口

bash 复制代码
ip -4 a

如果没有出现,重启服务器

验证 iptables 规则, 在 FORWARD 连中应该出现新的网络的转发规则

bash 复制代码
iptables -nL

验证 nat 表的 POSTROUTING 链和 KUBE-SERVICES 链

bash 复制代码
iptables -nL -t nat --line-number |grep POSTROUTING -A 10

如果还存在原来 pod 子网的条目用如下命令删除

bash 复制代码
iptables -t nat  -D POSTROUTING 5

5 是 规则条目号,如下图中所示

相关推荐
发量惊人的中年网工18 分钟前
2026年DDoS防护方案怎么选?从攻击响应、清洗位置到成本账单,解析全球高防方案
大数据·网络·安全·ddos
程序猿小郑1 小时前
Docker Compose 构建完整服务实战指南:从入门到最佳实践
docker·容器
黄昏回响2 小时前
软件工程基础知识(五):软件测试详解(下篇)——现代测试实践与论文指导
网络·其他·软件工程·改行学it
万联WANFLOW4 小时前
网络排障:如何从延迟、丢包、带宽定位海外访问异常
网络·架构·业界资讯
zzzyyy5384 小时前
TCP 协议学习笔记:从报文格式到异常处理
linux·网络
心易行者4 小时前
Python在线运行+SQLite数据库实战:0成本搭个人数据后台,5个场景直接套用
前端·网络·人工智能·python
终端安全笔记5 小时前
iOS 27 之后「策略空转」:设备升级不报错,但旧策略不再管它
android·网络·安全·ios·智能手机
星恒讯工业路由器5 小时前
配电DTU新国标落地:硬件加密成硬门槛,选型逻辑正在改变
网络·物联网·智能路由器·工业路由器·新国标·硬件加密·配电dtu
鹿鸣天涯5 小时前
护网专项工作 | 勒索病毒防护指南
网络·计算机网络·安全
M哥支付6 小时前
商户池是什么?
服务器·网络·其他·微信·金融