Mac端Minikube和Rancher部署

本文主要描述如何在Mac本地部署minikube和Rancher进行学习。

Minikube部署

参考minikube官方教程, 使用Homebrew部署更为友好。

启动后,本质上是docker中的一个容器,使用docker network ls 命令可以发现创建了一个bridge类型的网络。

NETWORK ID     NAME       DRIVER    SCOPE
5f2b2eabd071   host       host      local
283b90469232   minikube   bridge    local

使用docker network inspect minikube 可以查到网络的具体配置信息,而使用docker inspect <CONTAINER_ID> 则可以看到具体分配给minikube的ip信息,输出类似于:

"Networks": {
                "minikube": {
                    "IPAMConfig": {
                        "IPv4Address": "192.168.49.2"
                    },
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "02:42:c0:a8:31:02",
                    "Gateway": "192.168.49.1",
                    "IPAddress": "192.168.49.2",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": [
                        "minikube",
                        "30fc582d0880"
                    ]
                }
            }

我们已经知道minikube的ip是192.168.49.2了,接下来我们要在这个子网内部署Rancher。

Rancher部署

参考Rancher官方教程, 但是在这个基础上我们要进行一些简单的修改。为了实现k8s集群和Rancher之间的通信,我们需要在k8s中起一个Agent,这个Agent会和外部的Rancher进行通信,而进行通信的前提是这个Agent需要知道Rancher的ip并且可以访问Rancher的端口。

同时我们也需要能够从宿主机访问到Rancher,所以需要做简单的映射,并且把Rancher放到minikube所处的同一个网络下。

我们需要实际执行的是:

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  --privileged \
  --network minikube \
  rancher/rancher:latest

具体端口设置可以自行进行更改,注意在初始化Rancher时,需要我们确认Server URL,默认是127.0.0.1,而让Agent去请求这个URL显然不对,因为我们前面已经让两者在同一个子网内,所以这里需要改为Rancher的内网地址,这个地址可以通过上面的docker inspect命令拿到,以上面为例子就是192.168.49.2, 随后我们在主页面导入我们的minikube:

rancher

不巧的是,因为设置了Server URL,生成的命令会类似于:

curl --insecure -sfL https://192.168.49.4/v3/import/jcj5rdjs.yaml | kubectl apply -f -

我们在宿主机执行kubectl 显然无法直接访问到内网地址192.168.49.4,但是由于我们前面创建Rancher时已经做了端口映射,这里我们直接替换一下curl的ip为127.0.0.1即可。大约等待10秒左右就可以在Rancher看到连接上的minikube集群。至此,设置完毕。