4台RaspberryPi4B搭建K8s(K3s)容器集群(二)部署K3s集群
搭建K3S集群及Dashboard
这里我们正式开始搭建K3S集群,并将部署kubernetes dashboard实现可视化操作,同时开放Traefik的dashboard(WEB UI),最后会通过Nginx和Ingress将两个Dashboard暴露给集群外网络环境。
部署K3S
这里有两个选择。
1.通过K3S官方的安装脚本,分别在每一台主机上执行。
2.使用AutoK3s来协助安装。
我们分别来看
使用K3S官方脚本进行安装
官方脚本地址在这里
https://docs.rancher.cn/docs/k3s/installation/install-options/_index/
官方脚本分别安装在各节点主机上之后,可以根据实际需要进行配置后各自启动为Server(Master)或Agent(Worker)。
这里我们为了省事,直接在脚本后加上简单的参数,分别在各台主机上通过脚本直接安装和启动。
启动 K3S Server(Master)
在用来做Master的主机上直接执行
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_NODE_NAME=pi1 sh -
这里使用的是官方的国内地址
参数中加了个K3S_NODE_NAME,也就是这台节点的名字
Server启动之后,需要获取任意一台Server的Token给后面的Agent来使用
执行命令
cat /var/lib/rancher/k3s/server/node-token
记住这个token
启动 K3S Agent(Worker)
在Agent主机上执行
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_NODE_NAME=pi2 K3S_URL=https://192.168.31.81:6443 K3S_TOKEN=K104765c8f2ec3fd560d5594adec956de7d5d841cafdd88cde6270ebffc4a138067::server:7a29c75fedf9ceca1ec863b8b028f38f sh -
其中K3S_NODE_NAME是节点名称,K3S_URL是Server的地址。
K3S_TOKEN就是上面拿到的token,需要完整复制过来。
都执行完毕后,来到Server主机上
kubectl get nodes
可以看到server和agent都启动好了
kubectl get pods -A
能查看到pods也都运行起来了
这里我们使用了1台Server,3台Agent的方式搭建了一个单节点的K3S集群,这种方式相对简单,比较适合实验学习和测试环境。
如果用做生产环境,请参考高可用的方式,部署多台Server,同时要使用外部数据存储一类的东西。
至此使用K3S官方脚本进行安装的过程就告一段落了
使用AutoK3s工具进行安装
我们还可以用另一种方式来部署K3S集群。
AutoK3s 是用于Rancher新出的一款用于简化K3s集群管理的轻量级工具。可以非常简便的在各大云厂商上通过API、CLI和UI等方式快速创建K3s。
由于目前来看它实在是太新了(目前的版本是0.4.3),功能尚未完善,同时存在着一些问题。
官方地址如下
什么是 AutoK3s
首先我们可以在本地电脑上的Docker环境下安装AutoK3s。
docker run -itd --restart=unless-stopped -p 8080:8080 cnrancher/autok3s:v0.4.3
当然直接在MacOS或者Windows系统中安装也没问题,上面的官网页面上有安装脚本和对应的程序。
安装好之后,浏览器访问 localhost:8080 就可以看到了
选择左侧的Cluster,去点击页面右上的Create
我们使用的是自己的服务器集群,所以Provider这里选择native
给集群起个名字 RaspberryPiCluster
分别配置了1台Master主机和3台Worker主机的IP
下面的Advance这里点击show把详情显示出来
由于我们的树莓派都是使用账号密码登录,所以SSH Key Path这里的内容需要直接删掉,否则会报错 can’t get user home directory
PS:此处报错的内容还被反馈了个issue作为了bug,相关内容在这里 fix(native): fix get user home directory for native provider
继续,SSH Password 就是root的密码
然后点开K3s Option这里,把 K3s Install Script 选成 http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh 这个。和脚本安装一样,用的是国内源。
然后点开Additional Options,可以看到UI这个选项默认是Disable。
这个UI就是kubernetes的dashboard了。
注意此处有坑
如果这个时候把UI给Enable的话,那么在一会儿开始自动部署各节点执行命令的时候,会默认对外开放kubernetes的外部端口433。
这样一来,Traefik在启动时,会因为主机的433端口被占用而启动失败。
Warning FailedScheduling default-scheduler 0/1 nodes are available: 1 node(s) didn't have free ports for the requested pod ports.
因此这里就保持UI选项是Disable就可以了。我们后面再手动部署一下kubernetes dashboard即可。
都设置好之后,点击 Create 按钮开始执行部署。中途可能会各种报错
所以我们还可以通过边上的 Ganerate CLI Command 按钮来直接获取完整的执行命令
其实生成的命令中,也是缺点东西的…
就是最后缺了个name变量 加上就好 –name 集群的名字
完整的命令如下
autok3s create --provider native --k3s-channel stable --k3s-install-mirror INSTALL_K3S_MIRROR=cn --k3s-install-script http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh --master 0 --ssh-password xxxxxxx --ssh-port 22 --ssh-user root --worker 0 --master-ips 192.168.31.81 --worker-ips 192.168.31.82,192.168.31.83,192.168.31.84 --name raspberrypicluster
本地(就是装autok3s的电脑)执行一下命令,就能看到4个节点陆续都部署上去了
来到Master这台主机上
kubectl get nodes
可以看到server和agent都启动好了
kubectl get pods -A
能查看到pods也都运行起来了
至此我们使用AutoK3s在4台树莓派上(又)部署好了一个 1 Master 3 Worker 的K3S集群。
如需卸载节点可以参考下面的命令
卸载K3s server
/usr/local/bin/k3s-uninstall.sh
卸载k3s agent
/usr/local/bin/k3s-agent-uninstall.sh