使用minikube部署本地镜像
启用本地镜像Hub
使用如下命令启动本地镜像仓库
sudo docker run -d -p 5000:5000 --restart=always --name registry registry
查询是否启用成功
curl -X GET 172.17.0.1:5000/v2/_catalog
因为当前没有Push任何镜像到本地镜像仓库,查询结果是空。
Push镜像到local Hub
为本地镜像打一个tag
docker tag kubia 172.17.0.1:5000/kubia
向本地镜像仓库推送镜像
docker push 172.17.0.1:5000/kubia
再次查询本地镜像仓库
curl -X GET 172.17.0.1:5000/v2/_catalog
返回:
{"repositories":["kubia"]}
添加本地镜像到配置文件
sudo vim /etc/docker/daemon.json
加入如下信息:
1 | { |
这里的配置需要注意:172.17.0.1:5000,需要和tag镜像信息保持一致; 重启docker服务是配置生效:
systemctl restart docker
新建一个minikube集群
minikube start --driver=docker --insecure-registry="172.17.0.1:5000" --registry-mirror="https://hub-mirror.c.163.com"
这里的本地ip地址必须和上述配置的一致。 由于docker pull镜像默认使用的https协议,因此需要明确告诉docker服务和minikube使用http协议(insecure-registry)
从local registry运行一个docker应用
运行docker应用
kubectl run kubia --image=172.17.0.1:5000/kubia --port 3000
系统会返回:pod/kubia created
docker run是运行一个rs,而不是delploy一个应用,无需要指定部署文件
查询POD信息
kubectl get pods,系统会返回pod运行状态,如果有异常可以使用
kubectl describe pod kubia
查询详细信息。1
2NAME READY STATUS RESTARTS AGE
kubia 1/1 Running 0 16s创建服务对象 此时虽然已经集群内部部署成功,应用仍然无法从集群外部访问,此时需要通过服务开放接口
sudo kubectl expose pod kubia --name kubia-http --type=LoadBalancer
由于minikube不支持LoaderBalancer类型,使用默认的type类型也可以。
列出服务
kubectl get services
系统返回服务信息:此时查询到服务仍然未分配外部IP,minikube可以使用1
2
3NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
Kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13m
kubia-http LoadBalancer 10.99.35.111 <pending> 3000:31902/TCP 97sminikube service kubia-http
访问的服务的IP和端口。使用http://192.168.3.15:31902即可访问服务。1
2
3
4
5
6|-----------|------------|-------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|------------|-------------|---------------------------|
| default | kubia-http | 3000 | http://192.168.3.15:31902 |
|-----------|------------|-------------|---------------------------|
pod,service和rc之间的关系
镜像推送部署和应用部署流程
使用minikube部署本地镜像