![Kubernets 1.21.3 O valor recomendado para “clusterCIDR” em “KubeProxyConfiguration”](https://rvso.com/image/769311/Kubernets%201.21.3%20O%20valor%20recomendado%20para%20%E2%80%9CclusterCIDR%E2%80%9D%20em%20%E2%80%9CKubeProxyConfiguration%E2%80%9D.png)
Estou tentando ingressar um novo nó em v1.21.3
um cluster existente com Calico CNI. junte o comando dando clusterCIDR
aviso.
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/16
durante 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/16
valor 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
- 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
- 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.0
pods 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 podCIDR
os ClusterCIDR
valores em alguns arquivos de configuração:
atualize o ConfigMap
kubeadm-confg
- você já fez issoatualizar arquivo
/etc/kubernetes/manifests/kube-controller-manager.yaml
- você já fez issoatualizar a definição do(s) nó(s) com
podCIDR
o valor adequado e adicioná-los novamente ao clusteratualizar o ConfigMap
kube-proxy
nokube-system
namespaceadicione novo pool de IP no Calico CNI e exclua o antigo, recrie as implantações
Atualizar definição de nó(s):
- Obtenha o(s) nome(s) do(s) nó(s):
kubectl get no
- no meu caso écontroller
- Salve as definições no arquivo:
kubectl get no controller -o yaml > file.yaml
- Editar
file.yaml
-> atualizarpodCIDR
epodCIDRs
valores com seu novo intervalo de IP, no seu caso10.203.0.0
- 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-proxy
no kube-system
namespace
- Obtenha a configuração atual de
kube-proxy
:kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
- Editar
kube-proxy.yaml
-> atualizarClusterCIDR
valor com seu novo intervalo de IP, no seu caso10.203.0.0
- Exclua o antigo e aplique o novo
kube-proxy
ConfigMap: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:
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
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
Obtenha a configuração para desabilitar o pool de IP antigo ->
calicoctl get ippool -o yaml > pool.yaml
Edite a configuração: -> adicione
disabled:true
fordefault-ipv4-ippool
empool.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
Aplicar nova configuração:
calictoctl apply -f pool.yaml
Saída excedida do
calicoctl get ippool -o wide
comando: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()
Recrie pods que estão na
10.201.0.0
rede (em todos os namespaces, incluindokube-system
namespace): 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 clusterCIDR
o valor ao adicionar um novo nó. Novos pods são criados no intervalo de pool de IP adequado.
Fonte: