Ich versuche, kubeadm eine Konfiguration zu geben, wenn ich kubeadm init ausführe
Ich merke, dass ich die Konfiguration im genau richtigen Format habe, sprich, den Token ändere
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.4.4
secrets:
givenToken: 123456.3123fe2e098799f3
Es funktioniert einfach. Und in der kubeadm-Ausgabe
Wenn ich jedoch eine andere Yaml verwende. Grundsätzlich möchte ich meine eigenen crt-Dateien angeben
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
Es wird nicht einmal ausgegeben
Es scheint, als hätte kubeadm die Konfiguration nicht erkannt (?)
Gibt es eine Möglichkeit, dies zu debuggen?
Wo ist die Dokumentation für die Syntax für die kubeadm-Konfiguration?
Es gibt nur eine Beispiel-Master-Konfiguration am Ende von https://kubernetes.io/docs/admin/kubeadm/
Wenn ich andere Befehlszeilenwerte für API-Server angeben möchte, die in https://kubernetes.io/docs/admin/kube-apiserver/ unterstützt werden, wie lautet der entsprechende Name?
Wenn ich beispielsweise die --tls-private-key-file für den API-Server in kubeadm init config.yaml angeben möchte, wie lautet der entsprechende Name? ist es tlsPrivateKeyFile?
@Lokicity Soweit ich weiß, können Sie die Konfigurationen des Steuerungsplans nicht dynamisch ändern, während er ausgeführt wird. Sie müssten diese Komponente neu starten.
Was das Token-Problem angeht, wenn Sie kein Token übergeben, wird es eines für Sie generieren.
Jawohl. Aber kubeadm init hat eine --config, die es dem Benutzer ermöglicht, seine Standarddaten zu übergeben. Kann ich bestimmte Daten, die ich möchte, für die API-Server übergeben? Zum Beispiel möchte ich meine eigene --tls-private-key-Datei für den API-Server verwenden, die nicht die von kubeadm generierte Standarddatei ist.
Ich möchte das zur kubeadm-Init-Zeit tun können
Ein Konfigurationsbeispiel wurde hier zu den Dokumenten hinzugefügt:
@jistr Folgen Sie Ihrem oberen Link, ich habe die folgende Yaml-Datei verwendet
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
endpoints:
- http://127.0.0.1:2379
als Konfigurationsdatei, aber es spiegelt nicht den etcd-Endpunkt wider (immer noch 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"}
Ich frage mich, wo ich vielleicht einen Fehler gemacht habe oder ist es ein Code-Bug?
Hallo,
Wir haben das gleiche Problem wie @WIZARD-CXY.
Gibt es hierzu ein Update?
Danke!
cc @jamiehannaford
Vielleicht könnten Sie einen Blick darauf werfen, ob das etcd-Slice nicht richtig geparst wird?
@WIZARD-CXY @akarasik Welche Version von kubeadm
und etcd
verwendest du? Ich habe es gerade mit folgendem versucht und es hat bei mir funktioniert:
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
Wo haben Sie auch auf die Struktur kubeadm.MasterConfiguration
zugegriffen? Wurde es automatisch ausgegeben oder haben Sie einer Datei Debug-Logik hinzugefügt?
@jamiehannaford kubeadm 1.6.1 etcd 3.0.17
Ich habe die Struktur kubeadm.MasterConfiguration durch einen einfachen Debug-Druck erhalten. Vielleicht werde ich kubeadm aktualisieren und es heute noch einmal versuchen, und ich werde das Ergebnis hier aktualisieren. Danke für Ihre Hilfe
@jamiehannaford kubeadm 1.6.3 funktioniert wie ein Zauber.
@Lokicity Treten immer noch Probleme mit neueren Versionen von kubeadm auf?
Schließt wie fest... :+1:
siehe Beispiel für v1.14 in 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
Hilfreichster Kommentar
Ein Konfigurationsbeispiel wurde hier zu den Dokumenten hinzugefügt:
https://kubernetes.io/docs/admin/kubeadm/#config -Datei