一、问题
在安装完单机版的kubernetes后,我们使用minkube dashboard
命令会遇到以下的错误:
# minikube dashboard
Error accessing the kubernetes dashboard ( is minikube running?): Error : Error getting kubernetes-dashboard services: services "kubernetes-dashboard" not found
二、解决方法
2.1 创建kube-addon-manager-minikube
通过查看所有namespaces的pod,我们可以看到kube-addon-manager-minikube正处于imagePullBackOff或containerCreating状态,接着查看pod描述
# kubectl get pod --all-namespaces
# kubectl describe --namespace=kube-system pod kube-addon-manager-minikube
由于GFW的原因,我们可以获知这个pod在尝试拉取gcr.io/google-containers/kube-addon-manager:v6.4-beta.1
镜像时,失败了。我们使用dockerhub的自动构建功能,通过github同步google的镜像源,或者如下步骤直接拉取我的镜像,再更改镜像的tag。
# minikube ssh
# docker pull locutus1/kube-addon-manager:v6.4-beta.1
# docker tag locutus1/kube-addon-manager:v6.4-beta.1 gcr.io/google-containers/kube-addon-manager:v6.4-beta.1
2.2 创建kubernetes-dashboard
通过以下命令,我们查看kubernetes-dashboard的pod描述。同样,minikube虚拟机在尝试拉取gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
镜像时,失败了。
# kubectl get pod --all-namespaces
# kubectl describe pod kubernetes-dashboard-458tc --namespace=kube-system
这和上次遇到的问题是一样的。使用同样的方式,在minikube虚拟机中,将镜像拉取后即可。
# minikube ssh
# docker pull locutus1/kubernetes-dashboard-amd64:v1.6.0
# docker tag locutus1/kubernetes-dashboard-amd64:v1.6.0 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
如果之后pod还是没有正常运行,那么可能是镜像拉取策略的问题。我们知道replication controller(其yaml文件位于minikube虚拟机的/etc/kubernetes/
目录下)是控制pod的,因此通过命令:
# kubectl edit --namespace=kube-system rc kubernetes-dashboard
更改yaml文件的镜像获取策略imagePullPolicy:
值为IfNotPresent
,这样如果本地有该镜像,则使用本地的镜像,本地不存在时再下载镜像。接着,删除原来kubernetes-dashboard的pod
# kubectl delete pod kubernetes-dashboard-458tc
# minikube dashboard
新启动的pod显示为running
状态,最终dashboard正常运行。
2.3 创建kube-dns
查看所有pod,获取kube-dns的pod描述
# kubectl get pod --all-namespaces
# kubectl describe pod kube-dns-268032401-rczkk --namespace=kube-system
这和上次遇到的问题是一样的。使用同样的方式,在minikube虚拟机中,将镜像拉取后即可。
# minikube ssh
# docker pull locutus1/k8s-dns-kube-dns-amd64:1.14.1
# docker pull locutus1/k8s-dns-dnsmasq-nanny-amd64:1.14.1
# docker pull locutus1/k8s-dns-sidecar-amd64:1.14.1
# docker tag locutus1/k8s-dns-kube-dns-amd64:1.14.1
gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
# docker tag locutus1/k8s-dns-dnsmasq-nanny-amd64:1.14.1
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
# docker tag locutus1/k8s-dns-sidecar-amd64:1.14.1
gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1