minikube 通过插件的方式提供了 k8s 集群的基本服务。
Minikube 插件
查看所有插件
minikube addons list
输入如下:
- addon-manager: enabled
- coredns: disabled
- dashboard: enabled
- default-storageclass: enabled
- efk: disabled
- freshpod: disabled
- heapster: disabled
- ingress: disabled
- kube-dns: enabled
- metrics-server: disabled
- registry: disabled
- registry-creds: disabled
- storage-provisioner: enabled
默认启用的:
- 【插件管理】addon-manager
- 【可视化管理面板】dashboard
- 【存储类】default-storageclass
- 【DNS服务】kube-dns
- 【存储提供者】storage-provisioner
可以看到 minikube 默认为我们启动了一些插件,插件启动的服务的 namespace 一般为 kube-system ,查看该 namespace 下的 pods 和 services:
kubectl get pods,services -n kube-system
输入如下:
NAME READY STATUS RESTARTS AGE
pod/kube-addon-manager-minikube 0/1 ContainerCreating 0 5h
从状态可以看到,服务没有启动成功,查看原因:
kubectl get events -n kube-system
输出如下:
LAST SEEN FIRST SEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE
18m 6h 658 kube-addon-manager-minikube.152cd7f6ac31a536 Pod Warning FailedCreatePodSandBox kubelet, minikube
Failed create pod sandbox: rpc error: code = Unknown desc = failed pulling image "k8s.gcr.io/pause-amd64:3.1": Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
很明显,无法获取到镜像 k8s.gcr.io/pause-amd64:3.1,因为墙的原因,虽然 Minikube 启动成功了,但是相关的基础服务都无法正常启动。如何解决呢?只需在 Minikube 创建的 VM 中拉取相应镜像即可。
解决基础服务的启动问题
进入 minikube VM
minikube ssh
获取所有相关镜像
export image=pause-amd64:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}
export image=kube-addon-manager:v8.6
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}
export image=kubernetes-dashboard-amd64:v1.8.1
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}
export image=storage-provisioner:v1.8.1
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} gcr.io/k8s-minikube/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}
export image=k8s-dns-sidecar-amd64:1.14.5
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}
export image=k8s-dns-kube-dns-amd64:1.14.5
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}
export image=k8s-dns-dnsmasq-nanny-amd64:1.14.5
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}
技巧:在 dockerHub 或 阿里云镜像仓库中找到相应版本的镜像,并重新 tag 就能让服务正常运行
等待 1 分钟左右后,再次查看 pods 和 services
kubectl get pods,services -n kube-system
输出如下
NAME READY STATUS RESTARTS AGE
pod/kube-addon-manager-minikube 1/1 Running 0 6h
pod/kube-dns-6dcb57bcc8-qn5ml 3/3 Running 0 22m
pod/kubernetes-dashboard-5498ccf677-ptnn9 1/1 Running 0 22m
pod/storage-provisioner 1/1 Running 0 22m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 22m
service/kubernetes-dashboard NodePort 10.96.249.239 <none> 80:30000/TCP 22m
至此,本机搭建的 k8s 集群就能正常工作了。
插件管理
未完待续。。。。
网友评论
I cannot input Chinese current now...