Kubernets 1.21.3 O valor recomendado para “clusterCIDR” em “KubeProxyConfiguration”

Kubernets 1.21.3 O valor recomendado para “clusterCIDR” em “KubeProxyConfiguration”

Estou tentando ingressar um novo nó em v1.21.3um cluster existente com Calico CNI. junte o comando dando clusterCIDRaviso.

Como corrigir esta mensagem de aviso de sub-rede?

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

atualizar:

Eu estava usando 10.201.0.0/16durante a configuração do cluster, depois mudei para 10.203.0.0/16. não tenho certeza de onde ainda está obtendo 10.201.0.0/16valor de sub-rede.

Aqui está o valor sub-líquido.

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

etapa para atualizar o CIDR do pod de 10.201.0.0/16 para 10.203.0.0/16

  1. usar este comando atualizou o mapa de configuração kubeadm-confg kubectl -n kube-system edit cm kubeadm-config

podSubnet: 10.203.0.0/16

  1. Atualizado o kuber-controller-manger e reiniciado.

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

depois de atualizar o IP.

todas as configurações mostram a sub-rede como 10.203.0.0pods sendo criados na sub-rede `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:

Responder1

Consegui replicar seu problema. Eu recebi o mesmo erro. É necessário atualizar alguns outros arquivos de configuração.

Para alterar completamente o pool de IP de pods e nós, você precisa atualizar podCIDRos ClusterCIDRvalores em alguns arquivos de configuração:

  • atualize o ConfigMap kubeadm-confg- você já fez isso

  • atualizar arquivo /etc/kubernetes/manifests/kube-controller-manager.yaml- você já fez isso

  • atualizar a definição do(s) nó(s) com podCIDRo valor adequado e adicioná-los novamente ao cluster

  • atualizar o ConfigMap kube-proxyno kube-systemnamespace

  • adicione novo pool de IP no Calico CNI e exclua o antigo, recrie as implantações

Atualizar definição de nó(s):

  1. Obtenha o(s) nome(s) do(s) nó(s): kubectl get no- no meu caso écontroller
  2. Salve as definições no arquivo:kubectl get no controller -o yaml > file.yaml
  3. Editar file.yaml-> atualizar podCIDRe podCIDRsvalores com seu novo intervalo de IP, no seu caso10.203.0.0
  4. Exclua a definição de nó antiga e aplique a nova:kubectl delete no controller && kubectl apply -f file.yaml

Observe que você precisa seguir essas etapas para cada nó do seu cluster.

Atualizar ConfigMap kube-proxyno kube-systemnamespace

  1. Obtenha a configuração atual de kube-proxy:kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
  2. Editar kube-proxy.yaml-> atualizar ClusterCIDRvalor com seu novo intervalo de IP, no seu caso10.203.0.0
  3. Exclua o antigo e aplique o novo kube-proxyConfigMap:kubectl delete cm kube-proxy -n kube-system && kubectl apply -f kube-proxy.yaml

Adicione um novo pool de IP no Calico e exclua o antigo:

  1. Baixe o binário Calico e torne-o executável:

    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. Adicione novo pool 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
    

    Verifique se há novo pool de IP:calicoctl get ippool -o wide

  3. Obtenha a configuração para desabilitar o pool de IP antigo ->calicoctl get ippool -o yaml > pool.yaml

  4. Edite a configuração: -> adicione disabled:truefor default-ipv4-ippoolem 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 nova configuração:calictoctl apply -f pool.yaml

    Saída excedida do 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. Recrie pods que estão na 10.201.0.0rede (em todos os namespaces, incluindo kube-systemnamespace): basta excluí-los e eles deverão ser recriados instantaneamente em um novo intervalo de pool de IP, por exemplo:

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

    Você também pode excluir e aplicar implantações.

Depois de aplicar essas etapas, não há aviso sobre clusterCIDRo valor ao adicionar um novo nó. Novos pods são criados no intervalo de pool de IP adequado.

Fonte:

informação relacionada