首页 > 其他分享 >如何解决k8s CNI 子网不够问题

如何解决k8s CNI 子网不够问题

时间:2024-09-30 14:11:43浏览次数:6  
标签:子网 kubernetes -- ca controller etc manager k8s CNI

问题现象

CNI 状态 CrashLookBackOff

问题原因

默认环境下 k8s 每个 node 的CNI subnet 子网是一个 24位掩码的子网。当集群总结点数超过 255 个将导致 CNI 子网不足。我们有两种方式结局

解决方案

init 集群指定 kube-controller-manager 参数

apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
localAPIEndpoint:
  advertiseAddress: 192.168.10.11
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: IfNotPresent
  taints: null
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
apiServer:
  certSANs:
    - master1
    - 192.168.10.11
  timeoutForControlPlane: 4m0s
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: 192.168.10.10:6443
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
controllerManager:
  extraArgs: # 这里指定每个节点使用 26 位掩码
    "node-cidr-mask-size": "26"
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kubernetesVersion: 1.23.0
networking:
  podSubnet: 172.244.0.0/16
  serviceSubnet: 172.66.0.0/12
  nodeCidrMaskSize: 26
scheduler: {}
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: cgroupfs
~                         

针对已建成集群,需要解决这个问题

修改 /etc/kubernetes/manifests/kube-controller-manager.yamlspec.containers.[0].command 中的参数

....
spec:
  containers:
  - command:
    - kube-controller-manager
    - --allocate-node-cidrs=true
    - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --bind-address=127.0.0.1
    - --client-ca-file=/etc/kubernetes/pki/ca.crt
    - --cluster-cidr=172.244.0.0/16
    - --cluster-name=kubernetes
    - --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
    - --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
    - --controllers=*,bootstrapsigner,tokencleaner
    - --kubeconfig=/etc/kubernetes/controller-manager.conf
    - --leader-elect=true
    - --node-cidr-mask-size=26 # 添加启动参数
    - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
    - --root-ca-file=/etc/kubernetes/pki/ca.crt
    - --service-account-private-key-file=/etc/kubernetes/pki/sa.key
    - --service-cluster-ip-range=172.66.0.0/12
    - --use-service-account-credentials=true
    image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.23.0
...

重启 master 节点 kube-controller-manager

对于已经加入集群节点,只需要重新加入集群节点掩码就会变成 26 位

标签:子网,kubernetes,--,ca,controller,etc,manager,k8s,CNI
From: https://www.cnblogs.com/shangmo/p/18441719

相关文章

  • k8s架构,从clusterIP到光电半导体,再从clusterIP到企业管理
    clusterIP作为k8s中的服务,也是其他三个服务的基础~]$kubectlcreateserviceclusteripexternalnameloadbalancernodeport客户端的流量到serviceservice分发给pod,pod由控制器自动部署,自动维护那么问题是service的可用性如何保证?这里以clusterip这个服务举例......
  • k8s滚动更新也翻车
    滚动更新也翻车:为什么Kubernetes看似无缝的更新也会影响服务原创 eshou 原生时光  2024年09月29日08:45 湖南 听全文在Kubernetes中,滚动更新被视为一种无缝升级服务的理想方式。然而,实际操作中,即便是看似完美的滚动更新,也可能暗藏影响服务可用性的风险,在我们......
  • 深入解析网络通信的四大关键要素:网卡、MAC地址、IP地址、子网掩码与端口
    文章目录深入解析网络通信的四大关键要素:网卡、MAC地址、IP地址、子网掩码与端口**1.网卡(NetworkInterfaceCard,NIC)**关键知识点:联系与区别:**2.MAC地址(MediaAccessControlAddress)**关键知识点:联系与区别:**3.IP地址(InternetProtocolAddress)**关键知识......
  • 彻底理解 IP 地址,子网掩码,子网划分
    彻底理解IP地址,子网掩码,子网划分 彻底理解IP地址,子网掩码,子网划分 原文地址:彻底理解IP地址,子网掩码,子网划分什么是IP协议在回答什么是IP协议前,我们先需要回答另外一个问题:什么是网络?从普通人的角度看,网络无非是手机上的一个WIFI标志,是电脑上一根网线而已。但......
  • k8s离线部署v1.28.0版本(基于docker容器)
    1.环境配置主机名配置磁盘大小操作系统ip地址k8s-master2c4g50gcentos7.6192.168.100.194k8s-node12c4g50gcentos7.6192.168.100.195k8s-node22c4g50gcentos7.6192.168.100.196yum2c4g50gcentos7.6192.168.100.2012.必要环境准备1)关......
  • sidecar机制在k8s中的使用场景
    在Kubernetes中,Sidecar模式可以用于多种场景,除了日志收集外,以下是一些常见的应用场景:1.代理和负载均衡Sidecar可以充当服务代理,处理入站和出站的流量,进行负载均衡和请求路由。例如,使用Envoy或Linkerd作为Sidecar,可以实现服务间的负载均衡、熔断和重试机制。2.监控和......
  • 在K8S中使用Argo CD做持续部署
    什么是ArgoCDArgoCDisadeclarative,GitOpscontinuousdeliverytoolforKubernetes.ArgoCD是一个基于Kubernetes的声明式的GitOps工具。在说ArgoCD之前,我们先来了解一下什么是GitOps。什么是GitOpsGitOps是以Git为基础,使用CI/CD来更新运行在云原生环境的应用,它秉......
  • kube-ovn ovn-cni维护主机路由
    kube-ovnv1.10.10在subnet发生变化时,例如删除pod,ovn-cni更新主机路由,保证节点上只有目的网段ovn-default和join,指向ovn0。pkg/daemon/controller.go   runSubnetWorker->1从队列中获取变化的subnetpkg/daemon/controller_linux.go reconcileRouters->2获取所有......
  • k8s常用取证命令
    显示和查找资源列出所有namespace中的所有service$kubectlgetservices列出所有namespace中的所有pod$kubectlgetpods--all-namespaces列出所有pod并显示详细信息$kubectlgetpods-owide列出指定deployment$kubectlgetdeploymentmy-dep列出该nam......
  • k8s安装并迁移jumpserver
    一、环境二、安装依赖服务以下操作按需操作1.安装Helmwgethttps://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gztarxfhelm-v3.12.1-linux-amd64.tar.gzmvlinux-amd64/helm/usr/local/bin/helmversionhelmrepoaddjumpserverhttps://jumpserver.github.io/helm-char......