minikube可以运行一个本地单节点的kubernetes集群,可以非常容易地在本地部署kubernetes。虽然只支持单节点的kubernetes集群,但是能支持很多kubernetes特性,包括:
DNS
NodePorts
ConfigMaps and Secrets
Dashboards
Container Runtime: Docker, CRI-O, and containerd
Enabling CNI (Container Network Interface)
Ingress
Installa
还没有安装好minikube,可以阅读我的上篇文章《centos安装kubectl和minikube工具》。
本文以安装rabbitmq为例,使用minikube来部署一个kubernete节点
1.启动minikube,使用上一篇文章的启动命令
minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --vm-driver=none
2.下面使用已经存在的镜像rabbitmq部署kubernete
kubectl create deployment rabbitmq-minikube --image=docker.io/rabbitmq:3.8.2-management
注意:为了方便管理,建议命令最后指定版本号,如果不指定,默认是latest
status=running说明服务已经起来了
3.将rabbitmq暴露一个service端口
kubectl expose deployment rabbitmq-minikube --type=NodePort --port=15672
4.查看service对外暴露的url详情
minikube service rabbitmq-minikube --url
这个地址就是我们访问rabbitmq的地址,在浏览器输入这个地址,进入rabbitmq页面,
5.打开Dashboard
minikube dashboard
提示如下:
1)在浏览器输入失败,如下图:
http://127.0.0.1:43584/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
查看所有pod,发现没有Dashboard
kubectl get pods --namespace kube-system
2)创建Dashboard节点,按照官方的方法:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
3)查看pod状态是ImagePullBackOff,镜像拉取失败。只能从阿里云pull镜像了,如下命令:
docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
上面命令执行成功后,再执行2)中的命令。查看pod状态:
kubectl get pods --all-namespaces
查看pod日志:
kubectl logs -f pods/kubernetes-dashboard-7c54d59f66-7tswd -n kube-system
参考网上的一些资料,这个错误是kube dns反复重启,需要重启ip规则,如下命令:
systemctl stop kubeletsystemctl stop dockeriptables --flushiptables -tnat --flushsystemctl start kubeletsystemctl start docker
之后再查看pod状态,发现启动成功了。
在虚机浏览器输入下面网址,可以看到kubernete dashboard页面
http://127.0.0.1:39780/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
6.常用命令
#查看kubernete集群下的podkubectl get pod#查看集群下所有pod和namespace信息kubectl get pods --all-namespaces#删除一个pod -n后跟namespacekubectl delete deployment dashboard-metrics-scraper -n kubernetes-dashboard#删除servicekubectl delete services rabbitmq-minikube#停止minikube集群minikube stop#删除minikube集群minikube delete#查看service对外暴露详情minikube service rabbitmq-minikube这个命令会使用默认l浏览器打开这个地址#查看pod状态kubectl describe -n kube-system pod/kubernetes-dashboard-65c76f6c97-htfxt#查看pod启动日志kubectl logs -f pods/kubernetes-dashboard-65c76f6c97-htfxt -n kube-systemminikube logs#为rabbitmq-minikube deployment创建service,并通过Service的80端口转发至容器的8000端口上。kubectl expose deployment rabbitmq-minikube --port=80 --target-port=8000
参考文档:
https://kubernetes.io/docs/setup/learning-environment/minikube/https://blog.csdn.net/shida_csdn/article/details/80028905?utm_source=blogxgwz1