
Services running on the minions
We could SSH to one of the minions, but since Kubernetes schedules workloads across the cluster, we would not see all the containers on a single minion. However, we can look at the pods running on all the minions using the kubectl command:
$ kubectl get pods
Since we have not started any applications on the cluster yet, we don't see any pods. However, there are actually several system pods running pieces of the Kubernetes infrastructure. We can see these pods by specifying the kube-system namespace. We will explore namespaces and their significance later, but for now, the --namespace=kube-system command can be used to look at these K8s system resources, as follows:
$ kubectl get pods --namespace=kube-system
We should see something similar to the following:
etcd-empty-dir-cleanup-kubernetes-master
etcd-server-events-kubernetes-master
etcd-server-kubernetes-master
fluentd-cloud-logging-kubernetes-master
fluentd-cloud-logging-kubernetes-minion-group-xxxx
heapster-v1.2.0-xxxx
kube-addon-manager-kubernetes-master
kube-apiserver-kubernetes-master
kube-controller-manager-kubernetes-master
kube-dns-xxxx
kube-dns-autoscaler-xxxx
kube-proxy-kubernetes-minion-group-xxxx
kube-scheduler-kubernetes-master
kubernetes-dashboard-xxxx
l7-default-backend-xxxx
l7-lb-controller-v0.8.0-kubernetes-master
monitoring-influxdb-grafana-xxxx
node-problem-detector-v0.1-xxxx
rescheduler-v0.2.1-kubernetes-master
The first six lines should look familiar. Some of these are the services we saw running on the master and will see pieces of these on the nodes. There are a few additional services we have not seen yet. The kube-dns option provides the DNS and service discovery plumbing, kubernetes-dashboard-xxxx is the user interface for Kubernetes, l7-default-backend-xxxx provides the default load balancing backend for the new Layer-7 load balancing capability, and heapster-v1.2.0-xxxx and monitoring-influx-grafana provide the Heapster database and user interface to monitor resource usage across the cluster. Finally, kube-proxy-kubernetes-minion-group-xxxx is the proxy which directs traffic to the proper backing services and pods running on our cluster.
If we did SSH into a random minion, we would see several containers that run across a few of these pods. A sample might look like this image:

Again, we saw a similar line up of services on the master. The services we did not see on the master include the following:
- kubedns: This container monitors the service and endpoint resources in Kubernetes and synchronizes any changes to DNS lookups.
- kube-dnsmasq: This is another container that provides DNS caching.
- dnsmasq-metrics: This provides metric reporting for DNS services in cluster.
- l7-defaultbackend: This is the default backend for handling the GCE L7 load balancer and Ingress.
- kube-proxy: This is the network and service proxy for your cluster. This component makes sure service traffic is directed to wherever your workloads are running on the cluster. We will explore this in more depth later in the book.
- heapster: This container is for monitoring and analytics.
- addon-resizer: This cluster utility is for scaling containers.
- heapster_grafana: This does resource usage and monitoring.
- heapster_influxdb: This time-series database is for Heapster data.
- cluster-proportional-autoscaler: This cluster utility is for scaling containers in proportion to the cluster size.
- exechealthz: This performs health checks on the pods.