controllerManagerExtraArgs, node-cidr-mask-size
RELATÓRIO DE ERRO
versão kubeadm (use kubeadm version
): v1.9.3
Meio Ambiente :
kubectl version
): v1.9.3
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"
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 / LinuxEu 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.
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.
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"
Isso foi um problema para mim ao tentar usar kubeadm para configurar um cluster IPv6 e especificar um podSubnet.
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.
Comentários muito úteis
@tmjd Eu
networking.podSubnet
paracontrollerManagerExtraArgs.cluster-cidr
e adicionandoallocate-node-cidrs
também, assim como o código kubeadm faria sepodSubnet
tivesse sido especificado diretamente.Modificando seu exemplo original, ele se torna:
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.