Nach welchen SchlĂŒsselwörtern haben Sie in Kubernetes-Ausgaben gesucht, bevor Sie diese eingereicht haben? (Wenn Sie Duplikate gefunden haben, sollten Sie stattdessen dort antworten.): kubeadm
Ist dies ein FEHLERBERICHT oder eine FEATURE-ANFRAGE? (wÀhlen Sie einen): Fehlerbericht
Kubernetes-Version (verwenden Sie kubectl version
): 1.6.0
Umgebung :
uname -a
): 4.4.50-hypriotos-v7+Was ist passiert :
Befolgen Sie genau die Schritte :
# kubeadm init --apiserver-cert-extra-sans redacted --pod-network-cidr 10.244.0.0/16
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.0
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [kube-01 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local redacted] and IPs [10.96.0.1 10.0.1.101]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 206.956919 seconds
[apiclient] Waiting for at least one node to register and become ready
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
Die letzte Nachricht "Erster Knoten hat sich registriert, ist aber noch nicht bereit" wiederholt sich endlos und kubeadm wird nie beendet. Ich habe mich in einer anderen Sitzung mit dem Masterserver verbunden, um zu sehen, ob alle Docker-Container wie erwartet ausgefĂŒhrt wurden und sie sind:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54733aa1aae3 gcr.io/google_containers/kube-controller-manager-arm<strong i="6">@sha256</strong>:22f30303212b276b6868b89c8e92c5fb2cb93641e59c312b254c6cb0fa111b2a "kube-controller-mana" 10 minutes ago Up 10 minutes k8s_kube-controller-manager_kube-controller-manager-kube-01_kube-system_d44abf63e3ab24853ab86643e0b96d81_0
55b6bf2cc09e gcr.io/google_containers/etcd-arm<strong i="7">@sha256</strong>:0ce1dcd85968a3242995dfc168abba2c3bc03d0e3955f52a0b1e79f90039dcf2 "etcd --listen-client" 11 minutes ago Up 11 minutes k8s_etcd_etcd-kube-01_kube-system_90ab26991bf9ad676a430c7592d08bee_0
bd0dc34d5e77 gcr.io/google_containers/kube-apiserver-arm<strong i="8">@sha256</strong>:c54b8c609a6633b5397173c763aba0656c6cb2601926cce5a5b4870d58ba67bd "kube-apiserver --ins" 12 minutes ago Up 12 minutes k8s_kube-apiserver_kube-apiserver-kube-01_kube-system_4d99c225ec157dc715c26b59313aeac8_1
1c4c7b69a3eb gcr.io/google_containers/kube-scheduler-arm<strong i="9">@sha256</strong>:827449ef1f3d8c0a54d842af9d6528217ccd2d36cc2b49815d746d41c7302050 "kube-scheduler --kub" 13 minutes ago Up 13 minutes k8s_kube-scheduler_kube-scheduler-kube-01_kube-system_3ef1979df7569495bb727d12ac1a7a6f_0
4fd0635f9439 gcr.io/google_containers/pause-arm:3.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD_kube-controller-manager-kube-01_kube-system_d44abf63e3ab24853ab86643e0b96d81_0
cfb4a758ad96 gcr.io/google_containers/pause-arm:3.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD_etcd-kube-01_kube-system_90ab26991bf9ad676a430c7592d08bee_0
a631d8b6c11c gcr.io/google_containers/pause-arm:3.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD_kube-scheduler-kube-01_kube-system_3ef1979df7569495bb727d12ac1a7a6f_0
309b62fff122 gcr.io/google_containers/pause-arm:3.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD_kube-apiserver-kube-01_kube-system_4d99c225ec157dc715c26b59313aeac8_0
Ich habe den Admin kubeconfig auf meinen lokalen Computer kopiert und mit kubectl (1.6.0) nachgesehen, was mit dem Knoten vor sich ging, den kubeadm als registriert angab:
$ kubectl describe node kube-01
Name: kube-01
Role:
Labels: beta.kubernetes.io/arch=arm
beta.kubernetes.io/os=linux
kubernetes.io/hostname=kube-01
Annotations: node.alpha.kubernetes.io/ttl=0
volumes.kubernetes.io/controller-managed-attach-detach=true
Taints: <none>
CreationTimestamp: Tue, 28 Mar 2017 22:06:40 -0700
Phase:
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
OutOfDisk False Tue, 28 Mar 2017 22:17:24 -0700 Tue, 28 Mar 2017 22:06:40 -0700 KubeletHasSufficientDisk kubelet has sufficient disk space available
MemoryPressure False Tue, 28 Mar 2017 22:17:24 -0700 Tue, 28 Mar 2017 22:06:40 -0700 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Tue, 28 Mar 2017 22:17:24 -0700 Tue, 28 Mar 2017 22:06:40 -0700 KubeletHasNoDiskPressure kubelet has no disk pressure
Ready False Tue, 28 Mar 2017 22:17:24 -0700 Tue, 28 Mar 2017 22:06:40 -0700 KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Addresses: 10.0.1.101,10.0.1.101,kube-01
Capacity:
cpu: 4
memory: 882632Ki
pods: 110
Allocatable:
cpu: 4
memory: 780232Ki
pods: 110
System Info:
Machine ID: 9989a26f06984d6dbadc01770f018e3b
System UUID: 9989a26f06984d6dbadc01770f018e3b
Boot ID: 7a77e2e8-dd62-4989-b9e7-0fb52747162a
Kernel Version: 4.4.50-hypriotos-v7+
OS Image: Raspbian GNU/Linux 8 (jessie)
Operating System: linux
Architecture: arm
Container Runtime Version: docker://1.12.6
Kubelet Version: v1.6.0
Kube-Proxy Version: v1.6.0
PodCIDR: 10.244.0.0/24
ExternalID: kube-01
Non-terminated Pods: (4 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits
--------- ---- ------------ ---------- --------------- -------------
kube-system etcd-kube-01 0 (0%) 0 (0%) 0 (0%) 0 (0%)
kube-system kube-apiserver-kube-01 250m (6%) 0 (0%) 0 (0%) 0 (0%)
kube-system kube-controller-manager-kube-01 200m (5%) 0 (0%) 0 (0%) 0 (0%)
kube-system kube-scheduler-kube-01 100m (2%) 0 (0%) 0 (0%) 0 (0%)
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
CPU Requests CPU Limits Memory Requests Memory Limits
------------ ---------- --------------- -------------
550m (13%) 0 (0%) 0 (0%) 0 (0%)
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
14m 14m 1 kubelet, kube-01 Normal Starting Starting kubelet.
14m 10m 55 kubelet, kube-01 Normal NodeHasSufficientDisk Node kube-01 status is now: NodeHasSufficientDisk
14m 10m 55 kubelet, kube-01 Normal NodeHasSufficientMemory Node kube-01 status is now: NodeHasSufficientMemory
14m 10m 55 kubelet, kube-01 Normal NodeHasNoDiskPressure Node kube-01 status is now: NodeHasNoDiskPressure
Dies deckte den Grund auf, warum das Kubelet nicht bereit war:
"Laufzeitnetzwerk nicht bereit: NetworkReady=false Grund:NetworkPluginNotReady message:docker : Netzwerk-Plugin ist nicht bereit: cni config"
In meinen Experimenten mit kubeadm 1.5 wurde CNI nicht benötigt, um den Masterknoten aufzurufen, daher ist dies ĂŒberraschend. Sogar der Erste-Schritte-Leitfaden schlĂ€gt vor, dass kubeadm init
erfolgreich abgeschlossen werden sollte, bevor Sie mit der Bereitstellung eines CNI-Plugins fortfahren.
Wie auch immer, ich habe Flanell mit kubectl von meinem lokalen Computer aus bereitgestellt:
$ kubectl apply -f kube-flannel.yml
Wo war der Inhalt der Datei:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: flannel
namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"type": "flannel",
"delegate": {
"isDefaultGateway": true
}
}
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: kube-flannel-ds
namespace: kube-system
labels:
tier: node
app: flannel
spec:
template:
metadata:
labels:
tier: node
app: flannel
spec:
hostNetwork: true
nodeSelector:
beta.kubernetes.io/arch: amd64
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
serviceAccountName: flannel
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
securityContext:
privileged: true
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run
- name: flannel-cfg
mountPath: /etc/kube-flannel/
- name: install-cni
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/bin/sh", "-c", "set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done" ]
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
Aber es war nie geplant:
$ kubectl describe ds kube-flannel-ds -n kube-system
Name: kube-flannel-ds
Selector: app=flannel,tier=node
Node-Selector: beta.kubernetes.io/arch=amd64
Labels: app=flannel
tier=node
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"extensions/v1beta1","kind":"DaemonSet","metadata":{"annotations":{},"labels":{"app":"flannel","tier":"node"},"name":"kube-flannel-ds","n...
Desired Number of Nodes Scheduled: 0
Current Number of Nodes Scheduled: 0
Number of Nodes Scheduled with Up-to-date Pods: 0
Number of Nodes Scheduled with Available Pods: 0
Number of Nodes Misscheduled: 0
Pods Status: 0 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
Labels: app=flannel
tier=node
Service Account: flannel
Containers:
kube-flannel:
Image: quay.io/coreos/flannel:v0.7.0-amd64
Port:
Command:
/opt/bin/flanneld
--ip-masq
--kube-subnet-mgr
Environment:
POD_NAME: (v1:metadata.name)
POD_NAMESPACE: (v1:metadata.namespace)
Mounts:
/etc/kube-flannel/ from flannel-cfg (rw)
/run from run (rw)
install-cni:
Image: quay.io/coreos/flannel:v0.7.0-amd64
Port:
Command:
/bin/sh
-c
set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done
Environment: <none>
Mounts:
/etc/cni/net.d from cni (rw)
/etc/kube-flannel/ from flannel-cfg (rw)
Volumes:
run:
Type: HostPath (bare host directory volume)
Path: /run
cni:
Type: HostPath (bare host directory volume)
Path: /etc/cni/net.d
flannel-cfg:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: kube-flannel-cfg
Optional: false
Events: <none>
Ich habe trotzdem versucht, mich einem der anderen Server anzuschlieĂen, nur um zu sehen, was passieren wĂŒrde. Ich habe kubeadm token create
um manuell ein Token zu erstellen, das ich von einem anderen Computer aus verwenden konnte. Auf der anderen Maschine:
kubeadm join --token $TOKEN 10.0.1.101:6443
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[discovery] Trying to connect to API Server "10.0.1.101:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://10.0.1.101:6443"
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]
Und die letzte Nachricht wiederholte sich ewig.
Was Sie erwartet haben, zu passieren :
kubeadm init
sollte ein Bootstrap-Token abschlieĂen und produzieren.
Genau dasselbe passiert mir unter Ubuntu 16.04.02, sowohl GCE- als auch lokale VMWare-Installationen, Docker-Version 1.12.6, Kernel 4.8.0-44-generic 47~16.04.1-Ubuntu SMP.
Das Kubelet-Log zeigt eine Warnung ĂŒber das Fehlen von /etc/cni/net.d vor dem Fehler, den wir in jimmycuadras Bericht sehen:
Mar 29 04:43:25 instance-1 kubelet[6800]: W0329 04:43:25.763117 6800 cni.go:157] Unable to update cni config: No networks found in /etc/cni/net.d
Mar 29 04:43:25 instance-1 kubelet[6800]: E0329 04:43:25.763515 6800 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Gleiches Problem bei Ubuntu AWS VM. Docker 1.12.5
root@ip-10-43-0-20 :~# kubeadm-Version
kubeadm version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:24: 30Z", GoVersion:"go1.7.5"
root@ip-10-43-0-20 :~# uname -a
Linux ip-10-43-0-20 4.4.0-45-generic #66-Ubuntu SMP Mi 19. Okt 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
root@ip-10-43-0-20 :~# kubeadm init --config cfg.yaml
[kubeadm] WARNUNG: kubeadm befindet sich in der Beta-Phase, bitte verwenden Sie es nicht fĂŒr Produktionscluster.
[init] Kubernetes-Version verwenden: v1.6.0
[init] Verwenden des Autorisierungsmodus: RBAC
[init] WARNUNG: Damit Cloudprovider-Integrationen funktionieren, muss --cloud-provider fĂŒr alle Kubelets im Cluster festgelegt werden.
(/etc/systemd/system/kubelet.service.d/10-kubeadm.conf sollte zu diesem Zweck bearbeitet werden)
[Preflight] AusfĂŒhren von Pre-Flight-Checks
[Preflight] Starten des Kubelet-Dienstes
[Zertifikate] Generiertes CA-Zertifikat und -SchlĂŒssel.
[Zertifikate] Generiertes API-Serverzertifikat und -schlĂŒssel.
[Zertifikate] API-Server-Bereitstellungszertifikat ist fĂŒr DNS-Namen [ip-10-43-0-20 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] und IPs [10.96.0.1 10.43.0.20 . signiert ]
[Zertifikate] Generiertes API-Server-Kubelet-Client-Zertifikat und -SchlĂŒssel.
[Zertifikate] Generierter Dienstkonto-Token-SignaturschlĂŒssel und öffentlicher SchlĂŒssel.
[Zertifikate] Generiertes Front-Proxy-CA-Zertifikat und -SchlĂŒssel.
[Zertifikate] Generiertes Front-Proxy-Client-Zertifikat und -SchlĂŒssel.
[Zertifikate] GĂŒltige Zertifikate und SchlĂŒssel existieren jetzt in "/etc/kubernetes/pki"
[kubeconfig] KubeConfig-Datei auf DatentrÀger geschrieben: "/etc/kubernetes/admin.conf"
[kubeconfig] KubeConfig-Datei auf Festplatte geschrieben: "/etc/kubernetes/kubelet.conf"
[kubeconfig] KubeConfig-Datei auf DatentrÀger geschrieben: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] KubeConfig-Datei auf die Festplatte geschrieben: "/etc/kubernetes/scheduler.conf"
[apiclient] API-Client erstellt, der darauf wartet, dass die Steuerungsebene bereit ist
[apiclient] Alle Komponenten der Steuerungsebene sind nach 16.531681 Sekunden fehlerfrei
[apiclient] Warten, bis sich mindestens ein Knoten registriert und bereit ist
[apiclient] Erster Knoten hat sich registriert, ist aber noch nicht bereit
[apiclient] Erster Knoten hat sich registriert, ist aber noch nicht bereit
[apiclient] Erster Knoten hat sich registriert, ist aber noch nicht bereit
++ das gleiche Problem (Ubuntu 16.04.1)
Das gleiche hier auf Ubuntu 16.04
Unter CentOS 7 habe ich das Kubelet auf 1.5.4
herabgestuft. Das hat es fĂŒr mich gelöst. Es scheint, als ob die FertigprĂŒfung im 1.6.0
Kubelet anders funktioniert.
Gleiches Problem bei CentOS 7 auf einem Bare-Metal-x64-Rechner, seit dem Upgrade auf k8s 1.6.0
Gleiches Problem unter Ubuntu 16.04
Das gleiche Problem unter Ubuntu 16.04, manuelles Downgrade des kubelet
Pakets löste das Problem.
# apt install kubelet=1.5.6-00
@ctrlaltdel bei mir hat es nicht funktioniert.
Ich vermute, dass dies ein Kubelet-Problem ist. Es sollte den Knoten nicht als nicht bereit markieren, wenn CNI nicht konfiguriert ist. Nur Pods, die CNI erfordern, sollten als nicht bereit markiert werden.
@jbeda WeiĂt du, wann dieses Problem behoben wird?
@kristiandrucker â nein â ich
@jbeda Ok, aber nachdem das Problem behoben ist, was dann? Kubelet aus der Quelle neu erstellen?
@kristiandrucker Dies muss in einem Point-Release von k8s veröffentlicht werden, wenn es sich um ein Kubelet-Problem handelt.
Ich vermute, dass https://github.com/kubernetes/kubernetes/pull/43474 die Ursache ist. Ich werde einen Fehler melden und mich an die Netzwerkleute wenden.
@dcbw Bist du da?
Anscheinend besteht das Problem darin, dass ein DaemonSet nicht fĂŒr Knoten geplant ist, die die Bedingung Net workReady:false aufweisen , da die ĂberprĂŒfungen fĂŒr die Planung von Pods nicht stNetwork:true sollte auf einem Knoten geplant werden, der Net workReady:false ist, ein Pod ho
Funktioniert als Workaround das HinzufĂŒgen der Anmerkung scheduler.alpha.kubernetes.io/critical-pod
zu Ihrem DaemonSet wieder?
@janetkuo @lukaszo können Sie das DS-Verhalten untersuchen?
Im #sig-Netzwerk gibt es ĂŒbrigens auch eine fortlaufende Diskussion ĂŒber Slack.
Gleiches Problem CentOS 7 x64
@prapdm Dies scheint nicht ausfĂŒhren .
CentOS Linux-Version 7.3.1611 (Kern)
Ich habe es auf einem Knoten mit Ubuntu 16.04 versucht. Es hÀngt mit der Meldung "Noch nicht bereit". Ich habe auch Flanell DaemonSet manuell erstellt, aber in meinem Fall hat es ohne Probleme einen Pod geplant. Der Daemon-Pod selbst ging mit dem Fehler in den CrashLoopBackOff: E0329 22:57:03.065651 1 main.go:127] Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-z3xgn': the server does not allow access to the requested resource (get pods kube-flannel-ds-z3xgn)
Ich werde auch Centos anprobieren, aber ich denke nicht, dass DaemonSet hier schuld ist, kubeadm hÀngt hier.
das ist ein rbac-Berechtigungsfehler.
@jimmycuadra Mir ist gerade aufgefallen, dass Sie es auf einem Raspberry Pi Armprozessor verfĂŒgt.
FĂŒr das Flanell-Daemon-Set haben Sie:
``` nodeSelector:
beta.kubernetes.io/arch: amd64
but your node is labeled with:
beta.kubernetes.io/arch=arm
```
DaemonSet kann also keinen Pod auf diesem Knoten essen, Àndern Sie einfach die Knotenauswahl und es wird funktionieren.
Sie erhalten den Fehler immer noch mit rbac-Berechtigung, aber vielleicht sagt Ihnen @mikedanese , wie Sie ihn beheben können, da ich ihn nicht kenne.
Ah, danke @lukaszo! Ich habe dieses Mal nicht die RPi-spezifische Anleitung befolgt (die ich fĂŒr k8s 1.5 verwendet habe) und habe diesen Schritt vergessen. Ich hĂ€tte es entdeckt, als das Daemon-Set fehlerhaft war, aber wie sich herausstellte, bin ich nicht so weit gekommen. :}
Ich sehe dieses Problem auch, wenn ich die Anweisungen wie hier beschrieben befolge:
https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/
hat es nach der Installation des richtigen Flanell-Netzwerk-Pods zum Laufen gebracht.
Ich denke, @jimmycuadra könnte es mit @lukaszo- Kommentar zum
Wenn die Nachricht [apiclient] First node has registered, but is not ready yet
mit dem Fluten beginnt, wird der Kubernetes-API-Server ausgefĂŒhrt, sodass Sie Folgendes tun können:
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | kubectl create -f -
FĂŒr die Himbeer-Pi-Installation:
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -
Dann wird es fertig:
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node is ready after 245.050597 seconds
[apiclient] Test deployment succeeded
[token] Using token: 4dc99e............
[apiconfig] Created RBAC rules
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run (as a regular user):
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token 4dc99e........... 192.168.1.200:6443
Ich hatte das gleiche Problem und habe es folgendermaĂen behoben:
du solltest root sein
in der 1.6.0 von kubeadm sollten Sie die Umgebungsvariable $KUBELET_NETWORK_ARGS in der Systemdatei entfernen: /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
dann DĂ€monen neu starten
systemctl daemon-reload
kubeadm init
das dauert ein bisschen...nach dem erfolg
Laden Sie das Netzwerk-Add-On herunter, das Sie verwenden möchten: http://kubernetes.io/docs/admin/addons/
Calico scheint der beste zu sein, bin mir nicht sicher, aber noch im Test fĂŒr mich.
@thelastworm
Ich habe es gerade versucht, und es hat nicht funktioniert.
Ubuntu 16.04.2 LTS, kubeadm 1.6.0
Ich habe folgende Schritte gemacht:
kubeadm reset
um den vorherigen Startversuch zu bereinigenkubeadm init --token=<VALUE> --apiserver-advertise-address=<IP>
[BEARBEITET]
Es funktionierte, nachdem @srinat999 auf die Notwendigkeit hingewiesen hatte, systemctl daemon-reload
vor kubeadm init
auszufĂŒhren
Die Lösung von @jcorral hat bei mir mit einer Ănderung an der Flanell-Bereitstellung funktioniert, da der unsichere API-Port nicht mehr von kubeadm
.
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | \
kubectl --kubeconfig /etc/kubernetes/admin.conf create -f -
@MaximF Sie mĂŒssen systemctl daemon-reload
tun, nachdem Sie die conf-Datei geÀndert haben. Hat bei mir funktioniert.
@jcorral Deine Lösung funktioniert fĂŒr mich. Vielen Dank.
@MaximF Ich fĂŒge einfach die Befehlszeile fĂŒr den Neustart des DĂ€mons hinzu
kubeadm init wird erfolgreich abgeschlossen, aber wenn ich die Version ĂŒberprĂŒfe, erhalte ich die folgende Fehlermeldung:
Client-Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:36: 33Z", GoVersion:"go1.7.5", Compiler:"gc", Plattform:"linux/amd64"}
Die Verbindung zum Server localhost:8080 wurde abgelehnt - haben Sie den richtigen Host oder Port angegeben?
@haribole
Sie sollten die KUBECONFIG-Umgebungsvariable setzen
Hat jemand Flannel nach den Problemumgehungen im Zusammenhang mit CNI zum Laufen gebracht? Ich kann das Problem "Nicht bereit" lösen, aber wenn ich Flannel ausfĂŒhre, erhalte ich eine Fehlermeldung, die wie folgt aussieht:
Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-g5cbj': the server does not allow access to the requested resource (get pods kube-flannel-ds-g5cbj)
Pods-Status zeigt "CrashLoopBackOff" an
Sie mĂŒssen rbac-Rollen hinzufĂŒgen, um Flannel zum Lesen von der API zu autorisieren.
Sie mĂŒssen rbac-Rollen hinzufĂŒgen, um Flannel zum Lesen von der API zu autorisieren.
Falls sich noch jemand fragt, was das bedeutet, es sieht so aus, als ob Sie kube-flannel-rbac.yml
erstellen mĂŒssen, bevor Sie Flanell erstellen:
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Ich denke, da ein Root-Problem gelöst und das zugehörige Ticket geschlossen ist , sollten wir auch dieses schlieĂen :)
Nur zur Information: Bei mir funktioniert es jetzt mit den aktualisierten Paketen unter Ubuntu 16.04.
1.6.1 funktioniert bei mir! Vielen Dank an alle, die geholfen haben, diese Lösung zu finden!
Ich habe meinen Kubernetes-Cluster erfolgreich auf centos-release-7-3.1611.el7.centos.x86_64 eingerichtet, indem ich die folgenden Schritte ausfĂŒhre (ich gehe davon aus, dass Docker bereits installiert ist):
1) (aus /etc/yum.repo.d/kubernetes.repo) baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64-unstable
=> Um das unstable Repository fĂŒr das neueste Kubernetes 1.6.1 zu verwenden
2) yum install -y kubelet kubeadm kubectl kubernetes-cni
3) (/etc/systemd/system/kubelet.service.d/10-kubeadm.conf) fĂŒge "--cgroup-driver=systemd" am Ende der letzten Zeile hinzu.
=> Dies liegt daran, dass Docker systemd fĂŒr cgroup-driver verwendet, wĂ€hrend kubelet cgroupfs fĂŒr cgroup-driver verwendet.
4) systemctl kubelet aktivieren && systemctl kubelet starten
5) kubeadm init --pod-network-cidr 10.244.0.0/16
=> Wenn Sie bisher --api-advertise-addresses hinzugefĂŒgt haben, mĂŒssen Sie stattdessen --apiserver-advertise-address verwenden.
6) cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
=> Ohne diesen Schritt erhalten Sie möglicherweise einen Fehler mit kubectl get
=> Ich habe es nicht mit 1.5.2 gemacht
7) kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
=> 1.6.0 fĂŒhrt eine rollenbasierte Zugriffskontrolle ein, daher sollten Sie eine ClusterRole und eine ClusterRoleBinding hinzufĂŒgen, bevor Sie ein Flannel-Daemonset erstellen
8) kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
=> Erstelle ein Flanell-Daemonset
9) (auf jedem Slave-Knoten) kubeadm join --token (Ihr Token) (ip):(port)
=> wie im Ergebnis von kubeadm init gezeigt
Alle oben genannten Schritte sind das Ergebnis der Kombination von VorschlÀgen aus verschiedenen Themen rund um Kubernetes-1.6.0, insbesondere kubeadm.
Ich hoffe, das spart Ihnen Zeit.
@eastcirclek @Sliim Du bist groĂartig
@eastcirclek Dies waren die genauen Schritte, die ich gerade ausgefĂŒhrt habe, indem ich auch mehrere Foren
Ich habe einen Ubuntu 16.04-Server auf AWS und habe die Schritte befolgt
was anscheinend richtig funktioniert hat, aber wenn ich dann versuche Calico als Netzwerk-Plugin zu installieren, erhalte ich folgende Fehlermeldung
Die Verbindung zum Server localhost:8080 wurde abgelehnt - haben Sie den richtigen Host oder Port angegeben?
Arbeitet das k8s-Team an einem Patch?
Vielen Dank
@overip Ich glaube, dafĂŒr ist kein Patch erforderlich ... Sie mĂŒssen nur die richtige kubeconfig-Datei angeben, wenn Sie kubectl verwenden. kubeadm hĂ€tte es in /etc/kubernetes/admin.conf
schreiben sollen.
@jimmycuadra könntest du bitte die Schritte dazu erklÀren?
@overip Die Ausgabe von kubeadm init
hat die Anweisungen:
To start using your cluster, you need to run (as a regular user):
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
Ich persönlich bevorzuge es, die Datei nach $HOME/.kube/config
zu kopieren, wo kubectl standardmĂ€Ăig danach sucht. Dann mĂŒssen Sie die Umgebungsvariable KUBECONFIG nicht setzen.
Wenn Sie kubectl von Ihrem lokalen Computer aus verwenden möchten, können Sie scp
(oder einfach den Inhalt kopieren und einfĂŒgen), um es auf Ihrem eigenen Computer in ~/.kube/config
zu schreiben.
Suchen Sie in dieser GitHub-Ausgabe nach "admin.conf", um weitere Informationen zu erhalten. Es wurde ein paar Mal erwÀhnt.
@eastcirclek - habe die Schritte befolgt, aber aus irgendeinem Grund können die Knoten Flanell nicht richtig installieren.
(Hinweis: Auf dem Master ist alles glatt.)
Apr 13 22:31:11 node2 kubelet[22893]: I0413 22:31:11.666206 22893 kuberuntime_manager.go:458] Container {Name:install-cni Image:quay.io/coreos/flannel:v0.7.0-amd64 Command:[/bin/sh -c set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done] Args:[] WorkingDir: Ports:[] EnvFrom:[] Env:[] Resources:{Limits:map[] Requests:map[]} VolumeMounts:[{Name:cni ReadOnly:false MountPath:/etc/cni/net.d SubPath:} {Name:flannel-cfg ReadOnly:false MountPath:/etc/kube-flannel/ SubPath:} {Name:flannel-token-g65nf ReadOnly:true MountPath:/var/run/secrets/kubernetes.io/serviceaccount SubPath:}] LivenessProbe:nil ReadinessProbe:nil Lifecycle:nil TerminationMessagePath:/dev/termination-log TerminationMessagePolicy:File ImagePullPolicy:IfNotPresent SecurityContext:nil Stdin:false StdinOnce:false TTY:false} is dead, but RestartPolicy says that we should restart it.
Apr 13 22:31:11 node2 kubelet[22893]: I0413 22:31:11.666280 22893 kuberuntime_manager.go:742] checking backoff for container "install-cni" in pod "kube-flannel-ds-3smf7_kube-system(2e6ad0f9-207f-11e7-8f34-0050569120ff)"
Apr 13 22:31:12 node2 kubelet[22893]: I0413 22:31:12.846325 22893 operation_generator.go:597] MountVolume.SetUp succeeded for volume "kubernetes.io/configmap/2e6ad0f9-207f-11e7-8f34-0050569120ff-flannel-cfg" (spec.Name: "flannel-cfg") pod "2e6ad0f9-207f-11e7-8f34-0050569120ff" (UID: "2e6ad0f9-207f-11e7-8f34-0050569120ff").
Apr 13 22:31:12 node2 kubelet[22893]: I0413 22:31:12.846373 22893 operation_generator.go:597] MountVolume.SetUp succeeded for volume "kubernetes.io/secret/2e6ad0f9-207f-11e7-8f34-0050569120ff-flannel-token-g65nf" (spec.Name: "flannel-token-g65nf") pod "2e6ad0f9-207f-11e7-8f34-0050569120ff" (UID: "2e6ad0f9-207f-11e7-8f34-0050569120ff").
Teilen Sie einfach meine Workaround-Methode. Zuerst wird $KUBELET_NETWORK_ARGS benötigt, ansonsten ist CNI nicht aktiviert/konfiguriert. Das Entfernen und anschlieĂende Wiederherstellen von $KUBELET_NETWORK_ARGS scheint zu kompliziert.
Wenn kubeadm init "[apiclient] First node has registered, but is not ready" anzeigt, ist der k8s-Cluster tatsÀchlich bereit, Anfragen zu bedienen. Zu diesem Zeitpunkt könnte der Benutzer einfach wie folgt zu Schritt 3/4 von https://kubernetes.io/docs/getting-started-guides/kubeadm/ wechseln.
To start using your cluster, you need to run (as a regular user):
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: http://kubernetes.io/docs/admin/addons/
Wenn ein Benutzer das Podnetwork installiert, stellen Sie bitte sicher, dass dem Dienstkonto der Podnetwork-Richtlinie ausreichende Berechtigungen erteilt werden. Nehmen wir Flanell als Beispiel. Ich binde einfach die Cluster-Admin-Rolle wie folgt an das Dienstkonto von Flanell. Dies ist möglicherweise nicht ideal, und Sie könnten eine bestimmte Rolle fĂŒr das Flanell-Servicekonto definieren. Ăbrigens, wenn ein Benutzer einen anderen Add-On-Dienst wie das Dashboard bereitstellt, muss er dem zugehörigen Dienstkonto auch genĂŒgend Berechtigungen erteilen.
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: flannel:daemonset
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: flannel
namespace: kube-system
Nachdem der Podnetwork-Server bereit ist, zeigt kubeadm init an, dass der Knoten bereit ist, und der Benutzer kann mit der Anweisung fortfahren.
Nehmen wir Flanell als Beispiel. Ich binde einfach die Cluster-Admin-Rolle wie folgt an das Dienstkonto von Flanell. Dies ist möglicherweise nicht ideal, und Sie könnten eine bestimmte Rolle fĂŒr das Flanell-Servicekonto definieren.
Es gibt bereits https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
Danke an alle fĂŒr die Hilfe.
Endlich voll funktionsfÀhige k8s 1.6.1 mit Flanell. Alles ist jetzt in ansible Playbooks.
Getestet auf Centos/RHEL. Die Vorbereitungen begannen auch fĂŒr Debian-basiert (zB Ubuntu), aber es könnte einige Verfeinerungen erforderlich sein.
https://github.com/ReSearchITEng/kubeadm-playbook/blob/master/README.md
PS: Arbeit basierend auf sjenning/kubeadm-playbook - Vielen Dank @sjenning
Erhalten Sie dies fĂŒr den Beitritt zu einem Cluster:
[Discovery] Cluster-Info-Discovery-Client erstellt, der Informationen von " https://10.100.2.158 :6443" anfordert
[Discovery] Cluster-Info konnte nicht angefordert werden, wird es erneut versuchen: [configmaps "cluster-info" ist verboten: Benutzer " system:anonymous " kann keine configmaps im Namespace "kube-public" abrufen]
[Discovery] Cluster-Info konnte nicht angefordert werden, wird es erneut versuchen: [configmaps "cluster-info" ist verboten: Benutzer " system:anonymous " kann keine configmaps im Namespace "kube-public" abrufen]
Ich habe den Knoten als SelfHosting gestartet.
Hilfreichster Kommentar
Falls sich noch jemand fragt, was das bedeutet, es sieht so aus, als ob Sie
kube-flannel-rbac.yml
erstellen mĂŒssen, bevor Sie Flanell erstellen: