Kubeadm: Die Angabe von node-cidr-mask-size als ControllerManagerExtra-Arg hatte keinen Vorrang

Erstellt am 7. März 2018  ·  4Kommentare  ·  Quelle: kubernetes/kubeadm

Nach welchen Schlüsselwörtern haben Sie in kubeadm-Problemen gesucht, bevor Sie diese eingereicht haben?

controllerManagerExtraArgs, node-cidr-mask-size

Ist dies ein FEHLERBERICHT oder eine FEATURE-ANFRAGE?

FEHLERBERICHT

Versionen

kubeadm-Version (verwenden Sie kubeadm version ): v1.9.3

Umgebung :

  • Kubernetes-Version (verwenden Sie kubectl version ): v1.9.3
  • Cloud-Anbieter oder Hardware-Konfiguration : VirtualBox
  • Betriebssystem (zB aus /etc/os-release):
    NAME="Container Linux by CoreOS" ID=coreos VERSION=1576.4.0 VERSION_ID=1576.4.0 BUILD_ID=2017-12-06-0449 PRETTY_NAME="Container Linux by CoreOS 1576.4.0 (Ladybug)" ANSI_COLOR="38;5;75" HOME_URL="https://coreos.com/" BUG_REPORT_URL="https://issues.coreos.com" COREOS_BOARD="amd64-usr"
  • Kernel (zB uname -a ): Linux k8s-master 4.13.16-coreos-r2 #1 SMP Mi. 6. Dez. 04:27:34 UTC 2017 x86_64 Intel(R) Xeon(R) CPU E3-1505M v5 @ 2,80 GHz OriginalIntel GNU/Linux
  • Andere :

Was ist passiert?

Ich habe node-cidr-mask-size in einer kubeadm-Konfigurationsdatei unter controllerManagerExtraArgs , um das Flag zu setzen. kube-controller-manager wurde mit 2 Instanzen von --node-cidr-mask-size gestartet, die ihm übergeben wurden. Die zweite Instanz war die Standardeinstellung, die kubeadm hinzufügt und den Wert überschreibt, den ich festlegen wollte.

Was haben Sie erwartet?

kube-controller-manager hätte mit einer Instanz von --node-cidr-mask-size gestartet werden sollen oder zumindest die von mir angegebene wäre die 2., damit sie Vorrang hat.

Wie kann man es reproduzieren (so minimal und genau wie möglich)?

  1. Führen Sie kubeadm init --config=myconfig.yaml mit dem folgenden Inhalt als Inhalt der Datei myconfig.yaml aus
    apiVersion: kubeadm.k8s.io/v1alpha1 kind: MasterConfiguration api: advertiseAddress: "fd10::101" networking: serviceSubnet: fd30::0/110 podSubnet: "fd20:0::/120" controllerManagerExtraArgs: node-cidr-mask-size: "120"
  2. Überprüfen Sie die Flags, mit denen kube-controller-manager gestartet wird.

Müssen wir noch etwas wissen?

Dies war ein Problem für mich, als ich versuchte, mit kubeadm einen IPv6-Cluster einzurichten und ein podSubnet anzugeben.

Hilfreichster Kommentar

@tmjd Ich habe das networking.podSubnet in controllerManagerExtraArgs.cluster-cidr verschoben und auch allocate-node-cidrs hinzugefügt habe, genau wie der kubeadm-Code, wenn podSubnet gewesen wäre direkt angegeben.

Wenn Sie Ihr ursprüngliches Beispiel ändern, wird es zu:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:  
  advertiseAddress: "fd10::101"
networking:
  serviceSubnet: fd30::0/110   
  # MOVED BELOW podSubnet: "fd20:0::/120"    
controllerManagerExtraArgs:
  allocate-node-cidrs: "true"
  cluster-cidr: "fd20:0::/120"
  node-cidr-mask-size: "120"

Diese Problemumgehung umgeht im Wesentlichen die Anweisung if kubeadm hier:
https://github.com/kubernetes/kubernetes/blob/86a58202b68d04b2e31b56db80b4d2a4dec77c93/cmd/kubeadm/app/phases/controlplane/manifests.go#L336 -L342

Ich scheine nicht, dass kubeadm podSubnet für etwas anderes als die Validierung verwendet, aber ich könnte mich irren.

Würde es dennoch vorziehen, die Größe der Knoten-Cidr-Maske auf eine stärker unterstützte Weise überschreiben zu können.

Alle 4 Kommentare

noch vorhanden in 1.9.6.

Es sollte wirklich nur eine Option unter dem networking Schlüssel sein, derzeit fügt es --node-cidr-mask-size zweimal in die Konfiguration ein, am Anfang und am Ende

@tmjd Ich habe das networking.podSubnet in controllerManagerExtraArgs.cluster-cidr verschoben und auch allocate-node-cidrs hinzugefügt habe, genau wie der kubeadm-Code, wenn podSubnet gewesen wäre direkt angegeben.

Wenn Sie Ihr ursprüngliches Beispiel ändern, wird es zu:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:  
  advertiseAddress: "fd10::101"
networking:
  serviceSubnet: fd30::0/110   
  # MOVED BELOW podSubnet: "fd20:0::/120"    
controllerManagerExtraArgs:
  allocate-node-cidrs: "true"
  cluster-cidr: "fd20:0::/120"
  node-cidr-mask-size: "120"

Diese Problemumgehung umgeht im Wesentlichen die Anweisung if kubeadm hier:
https://github.com/kubernetes/kubernetes/blob/86a58202b68d04b2e31b56db80b4d2a4dec77c93/cmd/kubeadm/app/phases/controlplane/manifests.go#L336 -L342

Ich scheine nicht, dass kubeadm podSubnet für etwas anderes als die Validierung verwendet, aber ich könnte mich irren.

Würde es dennoch vorziehen, die Größe der Knoten-Cidr-Maske auf eine stärker unterstützte Weise überschreiben zu können.

@tmjd Fix sollte in der nächsten kubeadm-Version von master landen.

Wie ist der Stand dazu?
Ich richte gerade einen Kubernetes-Cluster ein mit:

kubeadm version: &version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.4", GitCommit:"5ca598b4ba5abb89bb773071ce452e33fb66339d", GitTreeState:"clean", BuildDate:"2018-06-06T08:00:59Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

Das Problem tritt hier immer noch auf.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen