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:
不巧的是,因为设置了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集群。至此,设置完毕。