AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1074006
Accepted
sfgroups
sfgroups
Asked: 2021-08-10 10:18:48 +0800 CST2021-08-10 10:18:48 +0800 CST 2021-08-10 10:18:48 +0800 CST

Kubernetes 1.21.3 “KubeProxyConfiguration”中“clusterCIDR”的推荐值

  • 772

我正在尝试v1.21.3使用 Calico CNI 将新节点加入现有集群。加入命令发出clusterCIDR警告。

如何修复此子网警告消息?

# kubeadm join master-vip:8443 --token xxx --discovery-token-ca-cert-hash sha256:xxxx
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
W0809 14:10:27.717696   75868 utils.go:69] The recommended value for "clusterCIDR" in "KubeProxyConfiguration" is: 10.201.0.0/16; the provided value is: 10.203.0.0/16
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"

更新:

我10.201.0.0/16在集群设置期间使用,后来我改为10.203.0.0/16. 不确定它仍然在哪里获得10.201.0.0/16子网价值。

这是子净值。

# sudo cat /etc/kubernetes/manifests/kube-controller-manager.yaml | grep cluster-cidr
    - --cluster-cidr=10.203.0.0/16

kubectl cluster-info dump | grep cluster-cidr
                            "--cluster-cidr=10.203.0.0/16",
                            "--cluster-cidr=10.203.0.0/16",
                            "--cluster-cidr=10.203.0.0/16",

将 pod CIDR 从 10.201.0.0/16 更新到 10.203.0.0/16 的步骤

  1. 使用此命令更新了 kubeadm-confg 配置图 kubectl -n kube-system edit cm kubeadm-config

podSubnet: 10.203.0.0/16

  1. 更新 kuber-controller-manger 并重新启动它。

sed -i 's/10.201.0.0/10.203.0.0/' /etc/kubernetes/manifests/kube-controller-manager.yaml

更新IP后。

所有配置都将子网显示为10.203.0.0但在“10.201.0.0”子网中创建的 pod。

# kubectl get cm kube-proxy -n kube-system -o yaml |grep -i clusterCIDR
    clusterCIDR: 10.203.0.0/16
# kubectl get no -o yaml |grep -i podcidr
    podCIDR: 10.203.0.0/24
    podCIDRs:
    podCIDR: 10.203.1.0/24
    podCIDRs:
    podCIDR: 10.203.2.0/24
    podCIDRs:
    podCIDR: 10.203.3.0/24
    podCIDRs:
    podCIDR: 10.203.5.0/24
    podCIDRs:
    podCIDR: 10.203.4.0/24
    podCIDRs:
    podCIDR: 10.203.6.0/24
    podCIDRs:
kubernetes kubeadm
  • 1 1 个回答
  • 804 Views

1 个回答

  • Voted
  1. Best Answer
    Mikolaj S.
    2021-08-12T08:03:57+08:002021-08-12T08:03:57+08:00

    我设法复制了您的问题。我得到了同样的错误。需要更新一些其他配置文件。

    要完全更改 pod 和节点 IP 池,您需要更新几个配置文件中的值podCIDR:ClusterCIDR

    • 更新 ConfigMap kubeadm-confg- 你已经做到了

    • 更新文件/etc/kubernetes/manifests/kube-controller-manager.yaml- 你已经这样做了

    • 使用适当的值更新节点定义podCIDR并将它们重新添加到集群中

    • 更新命名空间kube-proxy中的ConfigMapkube-system

    • 在 Calico CNI 中添加新的 IP 池并删除旧的,重新创建部署

    更新节点定义:

    1. 获取节点名称:kubectl get no-在我的情况下是controller
    2. 将定义保存到文件:kubectl get no controller -o yaml > file.yaml
    3. 根据您的情况,使用您的新 IP 范围编辑file.yaml-> 更新podCIDR和值podCIDRs10.203.0.0
    4. 删除旧的并应用新的节点定义:kubectl delete no controller && kubectl apply -f file.yaml

    请注意,您需要为集群中的每个节点执行这些步骤。

    更新命名空间kube-proxy中的ConfigMapkube-system

    1. 获取当前配置kube-proxy:kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
    2. 编辑kube-proxy.yaml->ClusterCIDR用你的新 IP 范围更新值,在你的情况下10.203.0.0
    3. 删除旧的并应用新的kube-proxyConfigMap:kubectl delete cm kube-proxy -n kube-system && kubectl apply -f kube-proxy.yaml

    在 Calico 中添加新的 IP 池并删除旧的:

    1. 下载 Calico 二进制文件并使其可执行:

      sudo curl -o /usr/local/bin/calicoctl -O -L  "https://github.com/projectcalico/calicoctl/releases/download/v3.20.0/calicoctl"
      sudo chmod +x /usr/local/bin/calicoctl
      
    2. 添加新的 IP 池:

      calicoctl create -f -<<EOF
      apiVersion: projectcalico.org/v3
      kind: IPPool
      metadata:
        name: my-new-pool
      spec:
        cidr: 10.203.0.0/16
        ipipMode: Always
        natOutgoing: true
      EOF
      

      检查是否有新的 IP 池:calicoctl get ippool -o wide

    3. 获取配置以禁用旧 IP 池 ->calicoctl get ippool -o yaml > pool.yaml

    4. 编辑配置:->disabled:true在default-ipv4-ippool中添加pool.yaml:

      apiVersion: projectcalico.org/v3
      items:
      - apiVersion: projectcalico.org/v3
        kind: IPPool
        metadata:
          creationTimestamp: "2021-08-12T07:50:24Z"
          name: default-ipv4-ippool
          resourceVersion: "666"
        spec:
          blockSize: 26
          cidr: 10.201.0.0/16
          ipipMode: Always
          natOutgoing: true
          nodeSelector: all()
          vxlanMode: Never
          disabled: true
      
    5. 应用新配置:calictoctl apply -f pool.yaml

      命令的异常输出calicoctl get ippool -o wide:

      NAME                  CIDR            NAT    IPIPMODE   VXLANMODE   DISABLED   SELECTOR   
      default-ipv4-ippool   10.201.0.0/16   true   Always     Never       true       all()      
      my-new-pool           10.203.0.0/16   true   Always     Never       false      all()      
      
    6. 重新创建10.201.0.0网络中的 pod(在每个命名空间中,包括kube-system命名空间):只需删除它们,它们应该立即在新的 IP 池范围中重新创建,例如:

      kubectl delete pod calico-kube-controllers-58497c65d5-rgdwl -n kube-system
      kubectl delete pods coredns-78fcd69978-xcz88  -n kube-system
      kubectl delete pod nginx-deployment-66b6c48dd5-5n6nw
      etc..
      

      您还可以删除和应用部署。

    clusterCIDR应用这些步骤后,添加新节点时没有关于值的警告。在适当的 IP 池范围内创建新的 pod。

    资源:

    • 类似的stackoverflow线程
    • 印花布文档
    • 2

相关问题

  • 无法通过 Docker 在本地运行 Hyperkube (kubernetes)

  • 跨 Kubernetes 分散工作负载

  • Kubernetes升级回滚机器类型

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve