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

这篇具有很好参考价值的文章主要介绍了Kubernetes(七)修改 pod 网络(flannel 插件)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 提示

需要重启服务器
操作之前备份 k8s 中所有资源的 yaml 文件
如下是备份脚本,仅供参考

# 创建备份目录
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 环境配置文件

集群中每个节点都要修改

vi /run/flannel/subnet.env
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

kubectl -n kube-system edit configMap kube-flannel-cfg

修改如下内容

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

kube-proxy

kubectl -n kube-system edit configmaps kube-proxy

Kubernetes(七)修改 pod 网络(flannel 插件),kubernetes,kubernetes,网络,容器

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

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

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

spec:
  containers:
  - command:
    ...
    # 修改这个
    - --cluster-cidr=10.244.0.0/16
    ...

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

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

备份

 kubectl get nodes node_name -o yaml > node_name.yml

修改这里

...
spec:
  podCIDR: 10.244.2.0/24
  podCIDRs:
  - 10.244.2.0/24
...

删除并重新加入节点

kubectl delete nodes  node_name
kubectl apply -f node_name.yml

6 删除接口

ifconfig cni0 down    # 关闭接口
ip link delete cni0     # 删除配置

ifconfig flannel.1 down  
ip link delete flannel.1

7 重启服务

systemctl restart docker kubelet

8 验证

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

ip -4 a

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

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

iptables -nL

Kubernetes(七)修改 pod 网络(flannel 插件),kubernetes,kubernetes,网络,容器

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

iptables -nL -t nat --line-number |grep POSTROUTING -A 10

Kubernetes(七)修改 pod 网络(flannel 插件),kubernetes,kubernetes,网络,容器
如果还存在原来 pod 子网的条目用如下命令删除

iptables -t nat  -D POSTROUTING 5

5 是 规则条目号,如下图中所示
Kubernetes(七)修改 pod 网络(flannel 插件),kubernetes,kubernetes,网络,容器文章来源地址https://www.toymoban.com/news/detail-682220.html

到了这里,关于Kubernetes(七)修改 pod 网络(flannel 插件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes:(十八)flannel网络

    目录 一:什么是Flannel 1.1 Flannel实现原理 1.2 数据转发流程 二: Flannel网络概述 2.1 Vxlan 模式 2.1.1 通信流程 2.1.2 部署 2.1.3 相关配置 2.1.4 卸载 2.2 Host-GW 模式 2.2.1 通信流程 2.2.2 部署 2.2.3 相关配置  2.2.4 卸载 2.3 Flanneld 作用 2.4 模式对比 三:部署 四:故障分析 4.1 kube-proxy 配

    2024年02月12日
    浏览(39)
  • Kubernetes —Pod 和容器日志

    应用日志可以让你了解应用内部的运行状况。日志对调试问题和监控集群活动非常有用。 大部分现代化应用都有某种日志记录机制。同样地,容器引擎也被设计成支持日志记录。 针对容器化应用,最简单且最广泛采用的日志记录方式就是写入标准输出和标准错误流。 但是,

    2024年02月13日
    浏览(60)
  • Kubernetes中Pod容器的使用

    Pod是K8S系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型 有许多组件围绕Pod进行扩展和支持,比如控制器对象是用来管控Pod对象的,Service或者Ingress资源对象是用来暴露Pod引用对象的,PersistentVolume资源对象是用来为Pod提供存储等。

    2024年02月15日
    浏览(40)
  • Kubernetes在容器内获取Pod信息

    我们知道,每个 Pod 在被成功创建出来之后,都会被系统分配唯一的名字、IP 地址,并且处于某个 Namespace 中,那么我们如何在 Pod 的容器内获取 Pod 的这些重要信息呢?答案就是使用 Downward API。 Downward API 可以通过以下两种方式将 Pod 信息注入容器内部。 (1)环境变量:用于单

    2024年02月10日
    浏览(36)
  • Kubernetes配置 Pods 和容器—将 Docker Compose 文件转换为 Kubernetes 资源

    你必须拥有一个 Kubernetes 的集群,同时你必须配置 kubectl 命令行工具与你的集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 我们有很多种方式安装 Kompose。首选方式是从最新的 GitHub 发布页面下载二进制文件。 Kompose 通过 GitHub 安装 只需几步,

    2024年02月12日
    浏览(50)
  • 【云原生|Kubernetes】08-Pod中的Init容器

    Init 容器是一种特殊容器,在 Pod内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。 你可以在 Pod 的spec中与用来描述应用容器的 containers 数组平行的位置指定 Init 容器。 Init 容器的状态在 status.initContainerStatuses 字段中以容器状态数组

    2024年02月09日
    浏览(54)
  • Kubernetes配置 Pods 和容器—调整分配给容器的 CPU 和内存资源

    本页说明如何在不重启 Pod 或其容器的情况下调整分配给运行中 Pod 容器的 CPU 和内存资源。 Kubernetes 节点会基于 Pod 的  requests  为 Pod 分配资源, 并基于 Pod 的容器中指定的  limits  限制 Pod 的资源使用。 对于原地调整 Pod 资源而言: 针对 CPU 和内存资源的容器的  requests  和

    2024年02月13日
    浏览(47)
  • Kubernetes(k8s)容器编排Pod介绍和使用

    Pod是kubernetes中你可以创建和部署的最小也是最简的单位,一个Pod代表着集群中运行的一个进程。 Pod有两个必须知道的特点 通过yaml文件或者json描述Pod和其内容器的运行环境和期望状态,例如一个最简单的运行nginx应用的pod,定义如下 3.1.1 参数描述 下面简要分析一下上面的

    2024年02月08日
    浏览(85)
  • 【云原生】kubernetes在Pod中init容器的作用和使用

    目录 Pod 中 init 容器 1 init 容器特点 2 使用 init 容器 Pod 中 init 容器 Init 容器是一种特殊容器,在Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。 1 init 容器特点 init 容器与普通的容器非常像,除了如下几点: 它们总是运行到完

    2024年02月14日
    浏览(42)
  • kubernetes(k8s)为容器和 Pod 分配内存资源

    展示如何将内存请求(request)和内存限制(limit)分配给一个容器。 我们保障容器拥有它请求数量的内存,但不允许使用超过限制数量的内存。 创建新的命名空间 编辑yaml文件 配置文件的 args 部分提供了容器启动时的参数。 “–vm-bytes”, “150M” 参数告知容器尝试分配 15

    2024年02月15日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包