文档
创建rancher集群
# 启动rancher
docker run --name rancher -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher
创建应用
# 创建deploy
kubectl create deployment demo --image=nginx --port=80
# 创建service
kubectl expose deployment demo
# 创建ingress
kubectl create ingress demo-localhost --class=nginx --rule="demo.localtest.me/*=demo:80"
# 端口重定向到宿主机,macos上建议使用这个方式。因为macos上docker desktop中的docker运行在虚拟机中,rancher跑在了虚拟机中的docker容器里。
kubectl port-forward svc/demo 8081:80
# 访问浏览器 127.0.0.1:8080 即可
安装ingress controller 可选
如果不想用port-forward,可以使用rancher desktop,或者直接安装自己的ingress controller 去处理。
https://kubernetes.github.io/ingress-nginx/deploy/#quick-start
需要代理,只好提前下载到本地
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.13.2/deploy/static/provider/cloud/deploy.yaml
macos的特殊性
通过这个命令可以查看macos上的虚拟机ip
docker run --rm alpine nslookup host.docker.internal
另外一种验证方式 找到rancher的容器ip 比如172.17.0.2
docker run --rm -it alpine/curl -k https://172.17.0.2:31880/ -H 'Host: demo.localtest.me'
todo
也许有更简单的办法是可以直接通过loadbalancer或者Ingress controller直接把rancher容器里service都暴露出来,而不需要通过port-forward
docker desktop是可以直接把自己内置的k8s通过loadbalancer直接暴露出端口到书宿主机的。
估计是考虑到跟docker desktop的对接有点麻烦,rancher开发了自己的rancher desktop