Kubernets 1.21.3 El valor recomendado para "clusterCIDR" en "KubeProxyConfiguration"

Kubernets 1.21.3 El valor recomendado para "clusterCIDR" en "KubeProxyConfiguration"

Estoy intentando unir un nuevo nodo a v1.21.3un clúster existente con Calico CNI. unirse al comando dando clusterCIDRadvertencia.

¿Cómo solucionar este mensaje de advertencia de subred?

# 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"

actualizar:

Lo estaba usando 10.201.0.0/16durante la configuración del clúster, luego cambié a 10.203.0.0/16. No estoy seguro de dónde sigue obteniendo 10.201.0.0/16el valor de subred.

Aquí está el valor subneto.

# 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",

paso para actualizar el pod CIDR de 10.201.0.0/16 a 10.203.0.0/16

  1. El uso de este comando actualizó el mapa de configuración de kubeadm-confg. kubectl -n kube-system edit cm kubeadm-config

podSubnet: 10.203.0.0/16

  1. Actualicé kuber-controller-manger y lo reinicié.

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

después de actualizar la IP.

Todas las configuraciones muestran la subred, 10.203.0.0pero los pods se crean en la subred `10.201.0.0'.

# 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:

Respuesta1

Logré replicar tu problema. Tengo el mismo error. Es necesario actualizar algunos otros archivos de configuración.

Para cambiar completamente el grupo de IP de pods y nodos, debe actualizar podCIDRlos ClusterCIDRvalores en algunos archivos de configuración:

  • actualiza ConfigMap kubeadm-confg: ya lo hiciste

  • actualizar archivo /etc/kubernetes/manifests/kube-controller-manager.yaml- ya lo hiciste

  • actualice la definición de los nodos con podCIDRel valor adecuado y vuelva a agregarlos al clúster

  • actualizar ConfigMap kube-proxyen el kube-systemespacio de nombres

  • agregue un nuevo grupo de IP en Calico CNI y elimine el anterior, vuelva a crear las implementaciones

Actualizar la definición de nodo(s):

  1. Obtener nombre(s) de nodo(s): kubectl get no- en mi caso escontroller
  2. Guarde las definiciones en el archivo:kubectl get no controller -o yaml > file.yaml
  3. Editar file.yaml-> actualizar podCIDRy podCIDRsvalores con su nuevo rango de IP, en su caso10.203.0.0
  4. Elimine la definición de nodo anterior y aplique la nueva:kubectl delete no controller && kubectl apply -f file.yaml

Tenga en cuenta que debe realizar esos pasos para cada nodo de su clúster.

Actualizar ConfigMap kube-proxyen el kube-systemespacio de nombres

  1. Obtener la configuración actual de kube-proxy:kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
  2. Editar kube-proxy.yaml-> actualizar ClusterCIDRvalor con su nuevo rango de IP, en su caso10.203.0.0
  3. Elimine el antiguo y aplique el nuevo kube-proxyConfigMap:kubectl delete cm kube-proxy -n kube-system && kubectl apply -f kube-proxy.yaml

Agregue un nuevo grupo de IP en Calico y elimine el anterior:

  1. Descargue el binario Calico y hágalo ejecutable:

    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. Agregar nuevo grupo de 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
    

    Compruebe si hay un nuevo grupo de IP:calicoctl get ippool -o wide

  3. Obtenga la configuración para deshabilitar el grupo de IP antiguo ->calicoctl get ippool -o yaml > pool.yaml

  4. Edite la configuración: -> agregue disabled:truefor default-ipv4-ippoolen 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. Aplicar nueva configuración:calictoctl apply -f pool.yaml

    Salida exceptuada del calicoctl get ippool -o widecomando:

    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. Vuelva a crear los pods que están en 10.201.0.0la red (en cada espacio de nombres, incluido kube-systemel espacio de nombres): simplemente elimínelos y deberían volver a crearse instantáneamente en un nuevo rango de grupo de IP, por ejemplo:

    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..
    

    También puede eliminar y aplicar implementaciones.

Después de aplicar esos pasos, no hay ninguna advertencia sobre clusterCIDRel valor al agregar un nuevo nodo. Los nuevos pods se crean en el rango de grupo de IP adecuado.

Fuente:

información relacionada