现在很多同学都是用MacBook进行开发,但是由于MacOS对docker支持不是很好,创建基于容器的环境也比较费劲。在本文中,我们介绍基于K3D在macOS上本地运行Rancher以进行Kubernetes集群开发和测试。
概述
K3D是轻量级包装,可在Docker中运行Rancher Labs的K3S。K3s是经过认证的Kubernetes发行版,适用于边缘和物联网等只具有较小的资源空间的设备。和KiND一样,K3D使用容器运行时而不是虚拟机部署,从而节省了宝贵的资源。与KiND不同,K3D支持ARM体系结构,所需的RAM减少约16倍。
在MacOS一个创建用于本地开发的多节点K8s集群,并使Rancher来帮助集群管理;也能从命令行管理集群生命周期。实例需要在计算机上安装一些依赖工具,这些工具和正在运行的macOS版本无关紧要:
Docker Desk(禁用Kubernetes);
Homebrew;
Xcode的命令行工具;
Kubernetes命令行工具Kubectl;
Powerlevel10k(可选);
使用K3d安装K3S
使用Homebrew安装k3d,Helm和Kubernetes CLI:
HOMEBREW_NO_AUTO_UPDATE=1 brew install k3d helm@3 kubectl提示:k3d安装需要Xcode CLT,因此请确保先已经安装过。
k3d安装完成后,使用它来创建测试集群:
k3d cluster create应该看到如下输出:
使用Kubernetes CLI对测试集群进行自省:
kubectl get nodes应该看到如下输出:
NAME STATUS ROLES AGE VERSION
k3d-k3s-default-server-0 Ready master 5m17s v1.19.4+k3s1
默认计算机上已经运行一个单节点测试集群。我们创建另一个名为k3s-rancher的,集群有一个主服务器和和3个代理节点:
k3d cluster create k3s-rancher --api-port 6550 --servers 1 --agents 3 --port 443:443@loadbalancer应该看到如下输出:
如果使用Powerlevel10k,则显示:
在这种情况下,集群为k3d-k3s-rancher。
接下来使用Kubernetes CLI查看集群信息:
kubectl get nodes,all应该看到如下输出:
安装Rancher
接着,安装Rancher,首先是证书管理器。
安装证书管理器
cert-manager是安装Rancher的先决条件,安装并验证证书管理器。
安装完成后,用一下命令进行验证:
kubectl get pods --namespace cert-manager应该看到如下输出:
等待所有pods 为READY状态,并确认已部署部署:
kubectl -n cert-manager rollout status deploy/cert-managerOK完成后,应该输出:
Waiting for deployment "cert-manager" rollout to finish: 0 of 1 updated replicas are available...
deployment "cert-manager" successfully rolled out
运行Helm Chart
部署了证书管理器后,使用Helm将Rancher安装到集群中:
应该看到如下输出:
使用以下命令监视Rancher部署部署的状态:
kubectl -n cattle-system rollout status deploy/rancher应该看到如下输出:
部署Rancher完成hou9,可使用以下命令检查安装:
kubectl -n cattle-system get rs,pods,ingresses如果安装正常,应该看到如下输出:
验证Rancher服务器是否已成功部署:
kubectl -n cattle-system get deploy rancher应该看到如下输出:
NAME READY UP-TO-DATE AVAILABLE AGE
rancher 3/3 3 3 2m10s
下次运行docker ps并验证Rancher负载均衡器的端口443是否已映射:
如果有k3d-k3s-rancher-serverlb监听为:0.0.0.0:443->443/tcp的。如果无法监听443端口i,将无法使用https连接到Rancher。
kubectl get nodes应该看到如下输出:
要具体查看每个节点的运行情况,可以使用下面的命令:
docker exec -it k3d-k3s-rancher-server-0 crictl ps && docker exec -it k3d-k3s-rancher-agent-1 crictl ps && docker exec -it k3d-k3s-rancher-agent-2 crictl ps && docker exec -it k3d-k3s-rancher-agent-0 crictl ps应该看到如下输出:
注意到,共有23个容器在运行。检查资源使用情况kubectl top node。应该看到如下输出:
也可以htop以图形方式停止显示机器实际的状态:
更新hosts文件
要使用Rancher UI,我们需要首先修改hosts文件(/etc/host)要添加对rancher.k3d.localhost的解析,将其解析到本地本地环回地址,即:
127.0.0.1 rancher.k3d.localhost启动Rancher UI
然后通过HTTPS浏览。如果使用的是Chrome浏览器,则会报错:
ERR_CERT_INVALID浏览器,告警站点使用了不信任所使用的证书。在macOS上,单击,点击高级点击thisisunsafe。
绕过证书安全性检查后,我们会访问rancher初始登陆欢迎界面,提示创建一个页面管理员和密码:
创建密码,保留.想创建或管理多个集群选择,禁用匿名数据收集,同意条款,然后单击Continue。接下来的页面允许保存Rancher服务器网址。
然后就可以可以访问:
浏览到 以查看集群仪表板:
这是Rancher 2.5中添加的新仪表板,增加集群管理器,还包括用于应用程序的新市场,可以使用任何Helm图表存储库进行安装:
至此,已经开始在本地开始Rancher的工作,具体Web UI下的功能探索,请大家自行探索,我们不再详细介绍。
集群生命周期
停止并重新启动集群很简单:
k3d cluster stop k3s-rancher && k3d cluster start k3s-rancher集群清理
完成后,可以使用以下方法删除集群:
k3d cluster delete k3s-rancher应该看到如下输出:
可以通过运行docker ps进行确认,以查看k3s集群中的服务器节点不再运行。
总结
本文我们介绍了在MacOS基于K3d创建一个用于本地开发的多节点K8s集群,并使Rancher来帮助集群管理;要说的是本文介绍的工具栈并不是唯一的工具栈,还有很多其他工具也可以完成同样的工作,如果你有更好用的工具栈也可以回复介绍给大家。