Kubernetes 1.21.3 Der empfohlene Wert für „clusterCIDR“ in „KubeProxyConfiguration“

Kubernetes 1.21.3 Der empfohlene Wert für „clusterCIDR“ in „KubeProxyConfiguration“

Ich versuche, v1.21.3mit Calico CNI einen neuen Knoten einem vorhandenen Cluster hinzuzufügen. Der Join-Befehl gibt clusterCIDReine Warnung aus.

Wie behebe ich diese Subnetz-Warnmeldung?

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

aktualisieren:

Ich habe es 10.201.0.0/16während der Clustereinrichtung verwendet und später zu geändert 10.203.0.0/16. Ich bin nicht sicher, woher es immer noch 10.201.0.0/16den Subnetzwert bekommt.

Hier ist der Teilnettowert.

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

Schritt zum Aktualisieren des Pod-CIDR von 10.201.0.0/16 auf 10.203.0.0/16

  1. mit diesem Befehl wird die kubeadm-confg configmap aktualisiert kubectl -n kube-system edit cm kubeadm-config

podSubnet: 10.203.0.0/16

  1. Kuber-Controller-Manager aktualisiert und neu gestartet.

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

nach der Aktualisierung der IP.

Alle Konfigurationen zeigen das Subnetz als solches an, 10.203.0.0aber Pods werden im Subnetz „10.201.0.0“ erstellt.

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

Antwort1

Ich konnte Ihr Problem reproduzieren. Ich habe den gleichen Fehler erhalten. Es müssen noch einige andere Konfigurationsdateien aktualisiert werden.

Um den IP-Pool von Pods und Knoten vollständig zu ändern, müssen Sie podCIDReinige ClusterCIDRWerte in einigen Konfigurationsdateien aktualisieren:

  • ConfigMap aktualisieren kubeadm-confg- das hast du bereits getan

  • Datei aktualisieren /etc/kubernetes/manifests/kube-controller-manager.yaml- das hast du bereits getan

  • Aktualisieren Sie die Knotendefinition mit dem richtigen podCIDRWert und fügen Sie sie erneut zum Cluster hinzu.

  • kube-proxyConfigMap im kube-systemNamespace aktualisieren

  • neuen IP-Pool in Calico CNI hinzufügen und den alten löschen, Bereitstellungen neu erstellen

Knotendefinition(en) aktualisieren:

  1. Knotennamen abrufen: kubectl get no- in meinem Fall ist escontroller
  2. Definition(en) in Datei speichern:kubectl get no controller -o yaml > file.yaml
  3. Bearbeiten file.yaml-> aktualisieren podCIDRund podCIDRsWerte mit Ihrem neuen IP-Bereich, in Ihrem Fall10.203.0.0
  4. Alte Knotendefinition löschen und neue anwenden:kubectl delete no controller && kubectl apply -f file.yaml

Bitte beachten Sie, dass Sie diese Schritte für jeden Knoten in Ihrem Cluster ausführen müssen.

kube-proxyConfigMap im kube-systemNamespace aktualisieren

  1. Aktuelle Konfiguration abrufen von kube-proxy:kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
  2. Bearbeiten kube-proxy.yaml-> ClusterCIDRWert mit Ihrem neuen IP-Bereich aktualisieren, in Ihrem Fall10.203.0.0
  3. Alte ConfigMap löschen und neue anwenden kube-proxy:kubectl delete cm kube-proxy -n kube-system && kubectl apply -f kube-proxy.yaml

Neuen IP-Pool in Calico hinzufügen und den alten löschen:

  1. Laden Sie die Calico-Binärdatei herunter und machen Sie sie ausführbar:

    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. Neuen IP-Pool hinzufügen:

    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
    

    Prüfen Sie, ob ein neuer IP-Pool vorhanden ist:calicoctl get ippool -o wide

  3. Rufen Sie die Konfiguration zum Deaktivieren des alten IP-Pools ab ->calicoctl get ippool -o yaml > pool.yaml

  4. Bearbeiten Sie die Konfiguration: -> fügen Sie „ disabled:truefor“ default-ipv4-ippoolin „ :“ ein 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. Neue Konfiguration anwenden:calictoctl apply -f pool.yaml

    Ausgenommene Ausgabe des calicoctl get ippool -o wideBefehls:

    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. Erstellen Sie Pods neu, die sich im 10.201.0.0Netzwerk befinden (in jedem Namespace, einschließlich kube-systemNamespace): Löschen Sie sie einfach und sie sollten sofort im neuen IP-Poolbereich neu erstellt werden, zum Beispiel:

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

    Sie können Bereitstellungen auch löschen und anwenden.

Nach dem Ausführen dieser Schritte gibt es clusterCIDRbeim Hinzufügen eines neuen Knotens keine Warnung bezüglich des Werts. Neue Pods werden im richtigen IP-Poolbereich erstellt.

Quelle:

verwandte Informationen