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
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 emite
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?
@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í:
@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
Comentario más útil
Se ha agregado un ejemplo de configuración a los documentos aquí:
https://kubernetes.io/docs/admin/kubeadm/#config -archivo