Kubeadm: ¿Documentación/ejemplo de configuración de Kubeadm?

Creado en 24 ene. 2017  ·  12Comentarios  ·  Fuente: kubernetes/kubeadm

Estoy tratando de darle a kubeadm una configuración cuando ejecuto kubeadm init
Noté que tengo la configuración exactamente en el formato correcto, digamos, cambie el token

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

Simplemente funciona. Y en la salida de kubeadm

validando el token proporcionado
token proporcionado aceptado

Sin embargo, si uso otro yaml. Básicamente quiero especificar mis propios archivos 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

Ni siquiera emitevalidando el token proporcionado
parece que kubeadm no reconoció la configuración (?)

¿Hay alguna manera de depurar esto?
¿Dónde está la documentación para la sintaxis de la configuración de kubeadm?
Solo hay una configuración maestra de muestra al final de https://kubernetes.io/docs/admin/kubeadm/
Si quiero especificar otros valores de línea de comandos para servidores API compatibles con https://kubernetes.io/docs/admin/kube-apiserver/ , ¿cuál es el nombre correspondiente?

Por ejemplo, si quiero especificar --tls-private-key-file para el servidor api en kubeadm init config.yaml, ¿cuál es el nombre correspondiente? ¿Es tlsPrivateKeyFile?

Comentario más útil

Se ha agregado un ejemplo de configuración a los documentos aquí:

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

Todos 12 comentarios

@Lokicity Por lo que entiendo, no puede cambiar dinámicamente las configuraciones en el plan de control mientras se está ejecutando. Tendrías que reiniciar ese componente.

En cuanto al problema del token, si no pasa ningún token, generará uno para usted.

Si. Pero kubeadm init tiene un --config que permite al usuario pasar sus datos predeterminados. ¿Puedo pasar ciertos datos que quiero para los servidores API? Por ejemplo, quiero usar mi propio archivo --tls-private-key-file para el servidor API que no sea el predeterminado generado por kubeadm.
Quiero poder hacer eso en el momento de inicio de kubeadm

Se ha agregado un ejemplo de configuración a los documentos aquí:

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

@jistr sigue tu enlace superior, utilicé el siguiente archivo yaml

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

como archivo de configuración pero no refleja el punto final etcd (todavía nulo).

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

Me pregunto dónde cometí un error o es un error de código.

Hola,

Estamos teniendo el mismo problema que @WIZARD-CXY.
¿Hay alguna actualización con respecto a esto?

¡Gracias!

cc @jamihannaford
¿Tal vez podría echar un vistazo y ver si el segmento etcd no se analiza correctamente?

@WIZARD-CXY @akarasik ¿Qué versión de kubeadm y etcd estás usando? Acabo de probar con lo siguiente y funcionó para mí:

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

Además, ¿dónde accedió a la estructura kubeadm.MasterConfiguration ? ¿Se descargó automáticamente o agregó lógica de depuración a un archivo?

@jamiehannaford kubeadm 1.6.1, etc. 3.0.17
Obtuve la estructura kubeadm.MasterConfiguration a través de una simple impresión de depuración. Tal vez actualice kubeadm y vuelva a intentarlo hoy y actualice el resultado aquí. Gracias por tu ayuda

@jamiehannaford kubeadm 1.6.3 funciona de maravilla.

@Lokicity ¿Sigue teniendo problemas con las versiones más nuevas de kubeadm?

Cerrando como arreglado... :+1:

ver ejemplo para v1.14 en 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
¿Fue útil esta página
0 / 5 - 0 calificaciones