
Estoy intentando unir un nuevo nodo a v1.21.3
un clúster existente con Calico CNI. unirse al comando dando clusterCIDR
advertencia.
¿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/16
durante 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/16
el 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
- 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
- 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.0
pero 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 podCIDR
los ClusterCIDR
valores en algunos archivos de configuración:
actualiza ConfigMap
kubeadm-confg
: ya lo hicisteactualizar archivo
/etc/kubernetes/manifests/kube-controller-manager.yaml
- ya lo hicisteactualice la definición de los nodos con
podCIDR
el valor adecuado y vuelva a agregarlos al clústeractualizar ConfigMap
kube-proxy
en elkube-system
espacio de nombresagregue un nuevo grupo de IP en Calico CNI y elimine el anterior, vuelva a crear las implementaciones
Actualizar la definición de nodo(s):
- Obtener nombre(s) de nodo(s):
kubectl get no
- en mi caso escontroller
- Guarde las definiciones en el archivo:
kubectl get no controller -o yaml > file.yaml
- Editar
file.yaml
-> actualizarpodCIDR
ypodCIDRs
valores con su nuevo rango de IP, en su caso10.203.0.0
- 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-proxy
en el kube-system
espacio de nombres
- Obtener la configuración actual de
kube-proxy
:kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
- Editar
kube-proxy.yaml
-> actualizarClusterCIDR
valor con su nuevo rango de IP, en su caso10.203.0.0
- Elimine el antiguo y aplique el nuevo
kube-proxy
ConfigMap: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:
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
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
Obtenga la configuración para deshabilitar el grupo de IP antiguo ->
calicoctl get ippool -o yaml > pool.yaml
Edite la configuración: -> agregue
disabled:true
fordefault-ipv4-ippool
enpool.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 nueva configuración:
calictoctl apply -f pool.yaml
Salida exceptuada del
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()
Vuelva a crear los pods que están en
10.201.0.0
la red (en cada espacio de nombres, incluidokube-system
el 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 clusterCIDR
el valor al agregar un nuevo nodo. Los nuevos pods se crean en el rango de grupo de IP adecuado.
Fuente: