Kubeadm: Documentação/exemplo de configuração do Kubeadm?

Criado em 24 jan. 2017  ·  12Comentários  ·  Fonte: kubernetes/kubeadm

Estou tentando dar ao kubeadm uma configuração quando executo o kubeadm init
Percebo que tenho a configuração exatamente no formato correto, digamos, altere o token

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.4.4
secrets:
  givenToken: 123456.3123fe2e098799f3

Ele apenas funciona. E na saída do kubeadm

validando o token fornecido
token fornecido aceito

No entanto, se eu usar outro yaml. Basicamente eu quero especificar meus próprios arquivos crt

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.4.4
etcd:
  caFile : /root/easy-rsa-master/easyrsa3/pki/ca.crt
  certFile : /root/easy-rsa-master/easyrsa3/pki/issued/kubernetes-master.crt
  keyFile : /root/easy-rsa-master/easyrsa3/pki/private/kubernetes-master.key

Não dá nem saídavalidando o token fornecido
parece que o kubeadm não reconheceu a configuração (?)

Existe uma maneira de depurar isso?
Onde está a documentação da sintaxe da configuração do kubeadm?
Há apenas uma configuração mestre de amostra no final de https://kubernetes.io/docs/admin/kubeadm/
Se eu quiser especificar outros valores de linha de comando para servidores api com suporte em https://kubernetes.io/docs/admin/kube-apiserver/ , qual é o nome correspondente?

Por exemplo, se eu quiser especificar o --tls-private-key-file para o servidor api no kubeadm init config.yaml, qual é o nome correspondente? é tlsPrivateKeyFile?

Comentários muito úteis

Um exemplo de configuração foi adicionado aos documentos aqui:

https://kubernetes.io/docs/admin/kubeadm/#config -file

Todos 12 comentários

@Lokicity Pelo que entendi, você não pode alterar dinamicamente as configurações no plano de controle enquanto está em execução. Você teria que reiniciar esse componente.

Quanto ao problema do token, se você não passar nenhum token, ele gerará um para você.

sim. Mas o kubeadm init tem um --config que permite ao usuário passar seus dados padrão. Posso passar determinados dados que desejo para os servidores de API? Por exemplo, quero usar meu próprio --tls-private-key-file para o servidor api diferente do padrão gerado pelo kubeadm.
Eu quero ser capaz de fazer isso no kubeadm init time

Um exemplo de configuração foi adicionado aos documentos aqui:

https://kubernetes.io/docs/admin/kubeadm/#config -file

@jistr siga seu link superior, usei o arquivo yaml abaixo

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
  endpoints:
  - http://127.0.0.1:2379

como arquivo de configuração, mas não reflete o endpoint etcd (ainda nil).

kubeadm.MasterConfiguration{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, API:kubeadm.API{AdvertiseAddress:"192.168.180.53", BindPort:6443}, Etcd:kubeadm.Etcd{Endpoints:[]string(nil), CAFil
e:"", CertFile:"", KeyFile:""}, Networking:kubeadm.Networking{ServiceSubnet:"10.96.0.0/12", PodSubnet:"", DNSDomain:"cluster.local"}, KubernetesVersion:"v1.6.0", CloudProvider:"", AuthorizationM
ode:"RBAC", Token:"8f6cc5.9fdf609145758fbd", TokenTTL:0, SelfHosted:false, APIServerExtraArgs:map[string]string(nil), ControllerManagerExtraArgs:map[string]string(nil), SchedulerExtraArgs:map[st
ring]string(nil), APIServerCertSANs:[]string(nil), CertificatesDir:"/etc/kubernetes/pki"}

Gostaria de saber onde talvez eu tenha cometido um erro ou é um bug de código?

Olá,

Estamos tendo o mesmo problema que @WIZARD-CXY.
Existe alguma atualização em relação a isso?

Obrigado!

cc @jamiehannaford
Talvez você possa dar uma olhada e ver se a fatia etcd não é analisada corretamente?

@WIZARD-CXY @akarasik Qual versão de kubeadm e etcd você está usando? Acabei de tentar com o seguinte e funcionou para mim:

root<strong i="9">@c1</strong>: kubeadm version
kubeadm version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.3", GitCommit:"0480917b552be33e2dba47386e51decb1a211df6", GitTreeState:"clean", BuildDate:"2017-05-10T15:38:08Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}

root<strong i="10">@c1</strong>: curl 127.0.0.1:2379/version
{"etcdserver":"3.1.7","etcdcluster":"3.1.0"}

root<strong i="11">@c1</strong>: cat config.yaml
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
  endpoints:
  - http://127.0.0.1:2379

root<strong i="12">@c1</strong>: kubectl get pods --all-namespaces
NAMESPACE     NAME                         READY     STATUS    RESTARTS   AGE
kube-system   kube-controller-manager-c1   1/1       Running   0          49s
kube-system   kube-dns-3913472980-vxldm    0/3       Pending   0          45s
kube-system   kube-proxy-2d3q4             1/1       Running   0          45s
kube-system   kube-scheduler-c1            1/1       Running   0          56s

Além disso, onde você acessou a estrutura kubeadm.MasterConfiguration ? Foi despejado automaticamente ou você adicionou lógica de depuração a um arquivo?

@jamiehannaford kubeadm 1.6.1 etcd 3.0.17
Eu tenho kubeadm.MasterConfiguration struct através de uma impressão de depuração simples. Talvez eu atualize o kubeadm e tente novamente hoje e atualize o resultado aqui. Obrigado pela ajuda

@jamiehannaford kubeadm 1.6.3 funciona como um encanto.

@Lokicity Você ainda está encontrando problemas com as versões mais recentes do kubeadm?

Fechando como fixo... :+1:

veja o exemplo para v1.14 em https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1

apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
bootstrapTokens:
- token: "9a08jv.c0izixklcxtmnze7"
  description: "kubeadm bootstrap token"
  ttl: "24h"
- token: "783bde.3f89s0fje9f38fhf"
  description: "another bootstrap token"
  usages:
  - authentication
  - signing
  groups:
  - system:bootstrappers:kubeadm:default-node-token
nodeRegistration:
  name: "ec2-10-100-0-1"
  criSocket: "/var/run/dockershim.sock"
  taints:
  - key: "kubeadmNode"
    value: "master"
    effect: "NoSchedule"
  kubeletExtraArgs:
    cgroup-driver: "cgroupfs"
localAPIEndpoint:
  advertiseAddress: "10.100.0.1"
  bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
etcd:
  # one of local or external
  local:
    imageRepository: "k8s.gcr.io"
    imageTag: "3.2.24"
    dataDir: "/var/lib/etcd"
    extraArgs:
      listen-client-urls: "http://10.100.0.1:2379"
    serverCertSANs:
    -  "ec2-10-100-0-1.compute-1.amazonaws.com"
    peerCertSANs:
    - "10.100.0.1"
  # external:
    # endpoints:
    # - "10.100.0.1:2379"
    # - "10.100.0.2:2379"
    # caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt"
    # certFile: "/etcd/kubernetes/pki/etcd/etcd.crt"
    # keyFile: "/etcd/kubernetes/pki/etcd/etcd.key"
networking:
  serviceSubnet: "10.96.0.0/12"
  podSubnet: "10.100.0.1/24"
  dnsDomain: "cluster.local"
kubernetesVersion: "v1.12.0"
controlPlaneEndpoint: "10.100.0.1:6443"
apiServer:
  extraArgs:
    authorization-mode: "Node,RBAC"
  extraVolumes:
  - name: "some-volume"
    hostPath: "/etc/some-path"
    mountPath: "/etc/some-pod-path"
    readOnly: false
    pathType: File
  certSANs:
  - "10.100.1.1"
  - "ec2-10-100-0-1.compute-1.amazonaws.com"
  timeoutForControlPlane: 4m0s
controllerManager:
  extraArgs:
    "node-cidr-mask-size": "20"
  extraVolumes:
  - name: "some-volume"
    hostPath: "/etc/some-path"
    mountPath: "/etc/some-pod-path"
    readOnly: false
    pathType: File
scheduler:
  extraArgs:
    address: "10.100.0.1"
extraVolumes:
- name: "some-volume"
  hostPath: "/etc/some-path"
  mountPath: "/etc/some-pod-path"
  readOnly: false
  pathType: File
certificatesDir: "/etc/kubernetes/pki"
imageRepository: "k8s.gcr.io"
useHyperKubeImage: false
clusterName: "example-cluster"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
# kubelet specific options here
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
# kube-proxy specific options here
Esta página foi útil?
0 / 5 - 0 avaliações