I just switched over to running apiserver in a container from using the binary. Everything is behaving more or less as normal, but I would like to be able to get/describe the apiserver pod. Here is some current output:
~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
203ecb6b127d gcr.io/google_containers/hyperkube:v1.1.3 "/hyperkube apiserver" About an hour ago Up About an hour k8s_kube-apiserver.a14aa4ea_kube-apiserver-kube-master3_kube-system_cf82c41f1e99cd21cb3b4e3384194aa8_45debbb1
bd7bdb093ed9 gcr.io/google_containers/pause:0.8.0 "/pause" About an hour ago Up About an hour k8s_POD.6d00e006_kube-apiserver-kube-master3_kube-system_cf82c41f1e99cd21cb3b4e3384194aa8_7d598a28
0ef026feafc8 gcr.io/google_containers/hyperkube:v1.1.3 "/hyperkube scheduler" 27 hours ago Up 27 hours k8s_kube-scheduler.3f3808b9_kube-scheduler-kube-master3_default_3d9ecca3ff6251e631e3cebc8cfb4ddb_438a304c
6ca0a97ecc5f gcr.io/google_containers/hyperkube:v1.1.3 "/hyperkube controlle" 27 hours ago Up 27 hours k8s_kube-controller-manager.f0156162_kube-controller-manager-kube-master3_default_c7211e33245496ec07e025590a070a69_b9ec7c2f
380af327c0af gcr.io/google_containers/pause:0.8.0 "/pause" 27 hours ago Up 27 hours k8s_POD.6d00e006_kube-scheduler-kube-master3_default_3d9ecca3ff6251e631e3cebc8cfb4ddb_80a1de69
939206c0b33f gcr.io/google_containers/pause:0.8.0 "/pause" 27 hours ago Up 27 hours k8s_POD.6d00e006_kube-controller-manager-kube-master3_default_c7211e33245496ec07e025590a070a69_f0aae13c
ec3d8d739f64 gcr.io/google_containers/podmaster:1.1 "/podmaster --etcd-se" 27 hours ago Up 27 hours k8s_controller-manager-elector.c68782c7_kube-podmaster-kube-master3_default_a784760a8471fb5856543c10630d8e2f_c07b8986
5a1e2ebe1502 gcr.io/google_containers/podmaster:1.1 "/podmaster --etcd-se" 27 hours ago Up 27 hours k8s_scheduler-elector.1943779b_kube-podmaster-kube-master3_default_a784760a8471fb5856543c10630d8e2f_2c2f2373
a03756f1c39a gcr.io/google_containers/pause:0.8.0 "/pause" 27 hours ago Up 27 hours k8s_POD.6d00e006_kube-podmaster-kube-master3_default_a784760a8471fb5856543c10630d8e2f_84281f95
but when I then run kubectl get pods --all-namespaces (or --namespace=default, anything) I get nothing (note: I do see other pods when I deploy them just as is expected, I just don't have any deployed on this env now for testing):
~$ kubectl.sh get pods --all-namespaces
Command: kubectl --server=https://192.168.0.203:6443 --kubeconfig=/kubernetes/config get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
Does anyone have tips for how to view the pods for my apiserver, scheduler, controller-manager, and podmaster?
I solved this issue by setting the registering my master as a node. I did this using --register-node=true
flag and pointing the --api-servers
flag to the IP of my apiserver (which in my case is load balanced through HA proxy between my masters) when starting kubelet.
The second key is that you now need to set the master node to be unschedulable so that other pods you deploy do not get scheduled onto the master. I have not got a perfectly clear answer yet on a flag to do that (please comment if you know!) but I had success by running:
kubectl.sh patch node kube-master1 -p '{\"spec\":{\"unschedulable\":true}}'
On version 1.1.3 I tried using --register-schedulable=false
and --register-unschedulable=true
and neither allowed the kubelet to start.