With our environment variables set, we're finally ready to run minikube start:
$ sudo -E minikube start --vm-driver=none
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
This command performs several operations under the hood:
- Provisions any VMs (if we're using VM). This is done internally by libmachine from Docker Machine.
- Sets up configuration files and certificates under ./kube and ./minikube.
- Starts up the local Kubernetes cluster using localkube.
- Configures kubectl to communicate with this cluster.
Since we are developing locally using the --vm-driver=none flag, our machine becomes the only node within the cluster. You can confirm this by using kubectl to see whether the node is registered with the Kubernetes API and etcd:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 15m v1.10.0
All Master Components, such as the scheduler (kube-scheduler), as well as Node Components, such as kubelet, are running on the same node, inside Docker containers. You can check them out by running docker ps:
$ docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.Names}}"
CONTAINER ID IMAGE COMMAND NAMES
3ff67350410a 4689081edb10 "/storage-provisioner" k8s_storage-provisioner_storage-provisioner_kube-system_4d9c2fa3-627a-11e8-a0e4-54e1ad13e25a_0
ec2922978b10 e94d2f21bc0c "/dashboard --insecu…" k8s_kubernetes-dashboard_kubernetes-dashboard-5498ccf677-sslhz_kube-system_4d949c82-627a-11e8-a0e4-54e1ad13e25a_0
f9f5b8fe1a41 k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_storage-provisioner_kube-system_4d9c2fa3-627a-11e8-a0e4-54e1ad13e25a_0
f5b013b0278d 6f7f2dc7fab5 "/sidecar --v=2 --lo…" k8s_sidecar_kube-dns-86f4d74b45-hs88j_kube-system_4cbede66-627a-11e8-a0e4-54e1ad13e25a_0
f2d120dce2ed k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_kubernetes-dashboard-5498ccf677-sslhz_kube-system_4d949c82-627a-11e8-a0e4-54e1ad13e25a_0
50ae3b880b4a c2ce1ffb51ed "/dnsmasq-nanny -v=2…" k8s_dnsmasq_kube-dns-86f4d74b45-hs88j_kube-system_4cbede66-627a-11e8-a0e4-54e1ad13e25a_0
a8f677cdc43b 80cc5ea4b547 "/kube-dns --domain=…" k8s_kubedns_kube-dns-86f4d74b45-hs88j_kube-system_4cbede66-627a-11e8-a0e4-54e1ad13e25a_0
d287909bae1d bfc21aadc7d3 "/usr/local/bin/kube…" k8s_kube-proxy_kube-proxy-m5lrh_kube-system_4cbf007c-627a-11e8-a0e4-54e1ad13e25a_0
e14d9c837ae4 k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_kube-dns-86f4d74b45-hs88j_kube-system_4cbede66-627a-11e8-a0e4-54e1ad13e25a_0
896beface410 k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_kube-proxy-m5lrh_kube-system_4cbf007c-627a-11e8-a0e4-54e1ad13e25a_0
9f87d1105edb 52920ad46f5b "etcd --listen-clien…" k8s_etcd_etcd-minikube_kube-system_a2c07ce803646801a9f5a70371449d58_0
570a4e5447f8 af20925d51a3 "kube-apiserver --ad…" k8s_kube-apiserver_kube-apiserver-minikube_kube-system_8900f73fb607cc89d618630016758228_0
87931be974c0 9c16409588eb "/opt/kube-addons.sh" k8s_kube-addon-manager_kube-addon-manager-minikube_kube-system_3afaf06535cc3b85be93c31632b765da_0
897928af3c85 704ba848e69a "kube-scheduler --ad…" k8s_kube-scheduler_kube-scheduler-minikube_kube-system_31cf0ccbee286239d451edb6fb511513_0
b3a7fd175e47 ad86dbed1555 "kube-controller-man…" k8s_kube-controller-manager_kube-controller-manager-minikube_kube-system_c871518ac418f1edf0247e23d5b99a40_0
fd50ec94b68f k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_kube-apiserver-minikube_kube-system_8900f73fb607cc89d618630016758228_0
85a38deae7ad k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_etcd-minikube_kube-system_a2c07ce803646801a9f5a70371449d58_0
326fd83d6630 k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_kube-addon-manager-minikube_kube-system_3afaf06535cc3b85be93c31632b765da_0
e3dd5b372dab k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_kube-scheduler-minikube_kube-system_31cf0ccbee286239d451edb6fb511513_0
6c2ac7c363d0 k8s.gcr.io/pause-amd64:3.1 "/pause" k8s_POD_kube-controller-manager-minikube_kube-system_c871518ac418f1edf0247e23d5b99a40_0
As a last check, run systemctl status kubelet.service to ensure that kubelet is running as a daemon on the node:
$ sudo systemctl status kubelet.service
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enable
Drop-In: /etc/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since Mon 2018-05-28 14:22:59 BST; 2h 5min ago
Docs: http://kubernetes.io/docs/
Main PID: 23793 (kubelet)
Tasks: 18 (limit: 4915)
Memory: 55.5M
CPU: 8min 28.571s
CGroup: /system.slice/kubelet.service
└─23793 /usr/bin/kubelet --fail-swap-on=false --allow-privileged=true --clu
Everything is now set up. You can confirm this by running minikube status and kubectl cluster-info:
$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 10.122.98.148
$ kubectl cluster-info
Kubernetes master is running at https://10.122.98.148:8443
KubeDNS is running at https://10.122.98.148:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy