Kubeadm: especificar node-cidr-mask-size como um arg controllerManagerExtra não tinha precedência

Criado em 7 mar. 2018  ·  4Comentários  ·  Fonte: kubernetes/kubeadm

Quais palavras-chave você pesquisou nos problemas do kubeadm antes de preencher este?

controllerManagerExtraArgs, node-cidr-mask-size

É um RELATÓRIO DE BUGS ou PEDIDO DE RECURSO?

RELATÓRIO DE ERRO

Versões

versão kubeadm (use kubeadm version ): v1.9.3

Meio Ambiente :

  • Versão do Kubernetes (use kubectl version ): v1.9.3
  • Provedor de nuvem ou configuração de hardware : VirtualBox
  • SO (por exemplo, de / 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 (por exemplo, uname -a ): Linux k8s-master 4.13.16-coreos-r2 # 1 SMP Quarta-feira 6 de dezembro 04:27:34 UTC 2017 x86_64 Intel (R) Xeon (R) CPU E3-1505M v5 @ 2,80 GHz GenuineIntel GNU / Linux
  • Outros :

O que aconteceu?

Eu estava especificando node-cidr-mask-size em um arquivo de configuração kubeadm em controllerManagerExtraArgs para definir o sinalizador. kube-controller-manager foi iniciado com 2 instâncias de --node-cidr-mask-size sendo passadas para ele. A segunda instância foi o padrão que o kubeadm adiciona e substitui o valor que eu estava tentando definir.

O que você esperava que acontecesse?

kube-controller-manager deveria ter sido iniciado com uma instância de --node-cidr-mask-size ou pelo menos aquela que eu especificou seria a 2ª para que tivesse precedência.

Como reproduzi-lo (o mais mínimo e precisamente possível)?

  1. Execute kubeadm init --config=myconfig.yaml com o seguinte como o conteúdo do arquivo myconfig.yaml
    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. Verifique os sinalizadores com os quais kube-controller-manager foi iniciado.

Mais alguma coisa que precisamos saber?

Isso foi um problema para mim ao tentar usar kubeadm para configurar um cluster IPv6 e especificar um podSubnet.

Comentários muito úteis

@tmjd Eu networking.podSubnet para controllerManagerExtraArgs.cluster-cidr e adicionando allocate-node-cidrs também, assim como o código kubeadm faria se podSubnet tivesse sido especificado diretamente.

Modificando seu exemplo original, ele se torna:

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"

Esta solução alternativa está essencialmente contornando a instrução if do kubeadm aqui:
https://github.com/kubernetes/kubernetes/blob/86a58202b68d04b2e31b56db80b4d2a4dec77c93/cmd/kubeadm/app/phases/controlplane/manifests.go#L336 -L342

Não parece que o kubeadm usa podSubnet para qualquer outra coisa que não seja a validação, mas posso estar errado.

Ainda preferiria poder substituir o tamanho da máscara cidr do nó de uma forma mais suportada.

Todos 4 comentários

ainda presente em 1.9.6.

Deveria ser apenas uma opção na chave networking , atualmente ela apenas coloca --node-cidr-mask-size na configuração duas vezes, no início e no final

@tmjd Eu networking.podSubnet para controllerManagerExtraArgs.cluster-cidr e adicionando allocate-node-cidrs também, assim como o código kubeadm faria se podSubnet tivesse sido especificado diretamente.

Modificando seu exemplo original, ele se torna:

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"

Esta solução alternativa está essencialmente contornando a instrução if do kubeadm aqui:
https://github.com/kubernetes/kubernetes/blob/86a58202b68d04b2e31b56db80b4d2a4dec77c93/cmd/kubeadm/app/phases/controlplane/manifests.go#L336 -L342

Não parece que o kubeadm usa podSubnet para qualquer outra coisa que não seja a validação, mas posso estar errado.

Ainda preferiria poder substituir o tamanho da máscara cidr do nó de uma forma mais suportada.

@tmjd A correção deve pousar na próxima versão do kubeadm do master.

Qual é o status disso?
Atualmente, estou configurando um cluster Kubernetes com:

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

O problema ainda está ocorrendo aqui.

Esta página foi útil?
0 / 5 - 0 avaliações