使用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
2
3
4
5
6
7
8
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
],
"insecure-registries":["172.17.0.1:5000"] //增加本地镜像地址
}

这里的配置需要注意: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
    2
    NAME    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 系统返回服务信息:

    1
    2
    3
    NAME         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 97s
    此时查询到服务仍然未分配外部IP,minikube可以使用 minikube service kubia-http访问的服务的IP和端口。

    1
    2
    3
    4
    5
    6
    |-----------|------------|-------------|---------------------------|
    | NAMESPACE | NAME | TARGET PORT | URL |
    |-----------|------------|-------------|---------------------------|
    | default | kubia-http | 3000 | http://192.168.3.15:31902 |
    |-----------|------------|-------------|---------------------------|

    使用http://192.168.3.15:31902即可访问服务。

pod,service和rc之间的关系

镜像推送部署和应用部署流程

使用minikube部署本地镜像

http://mixiang.tech/2020/08/12/2020-08-12-23/

作者

Mixion

发布于

2020-08-12

更新于

2022-12-02

许可协议