4台RaspberryPi4B搭建K8s(K3s)容器集群(四)使用Docker部署Rancher2.5.8导入K3s集群

4台RaspberryPi4B搭建K8s(K3s)容器集群(四)使用Docker部署Rancher2.5.8导入K3s集群

使用Docker部署Rancher2.5.8

为了更方便的使用K8S,我们可以部署Rancher作为管理平台来使用。

Rancher官网
企业级多集群Kubernetes管理平台

Rancher文档 | K8S文档 | Rancher | Rancher文档

目前官网上能看到的最新版是v2.5.8,下面在Docker下来进行部署。

为了省事我就放在四台树莓派中的主节点上了,但是在这里建议为了分配一下负载压力,应该把Rancher部署在其他节点上。(事实上后来我也是把Rancher重新放在了192.168.31.82这台设备上了)

我们直接来到dockerhub上去找Rancher的镜像
image.png

可以看到v2.5.8最新有个v2.5.8-patch2而且第一个刚好就是linux-arm64的,适用于我们的树莓派4arm64位的OS,也就是目前装的Raspbian Buster这个系统。

所以我们直接到Matser那台机器上直接去拉镜像就好

docker pull rancher/rancher:v2.5.8-patch2-a44c77e8ddca69155df78c7226f33f388ce8452f-linux-arm64

注意
部署rancher:v2.5.8-patch2这个版本的时候,实际上踩了坑。

下面的内容中,会有解决的过程。

如果不想趟坑,请直接去拉取后面说到的v2.5.8这个 Tag

docker pull  rancher/rancher:v2.5.8@sha256:d8802d9fd23eb062ab0a30c7e53f7c995b2e4df981299b6c14d21347f30ceb86

这里多说一下,docker pull 镜像的时候最好提前去dockerhub上查一下Tags。

很多时候发布版的镜像是同时支持不同的系统的,比如下面这种,我们需要留意一下 OS/ARCH 这里

image.png

我们需要的是下面这个arm64的,而不是amd64的。

因此这时候生拉硬拽不可以,需要在 docker pull 命令中加上DIGEST,这样就可以指定要拉取的是哪个系统的镜像了

image.png

然后把上面这段DIGEST的内容复制到 docker pull 命令里的镜像名后面,像这样

docker pull rancher/rancher:v2.5.8@sha256:d8802d9fd23eb062ab0a30c7e53f7c995b2e4df981299b6c14d21347f30ceb86

镜像名TAG后面有个 @ 然后才是DIGEST的内容

回到我们刚才的rancher:v2.5.8-patch2这里

docker pull rancher/rancher:v2.5.8-patch2-a44c77e8ddca69155df78c7226f33f388ce8452f-linux-arm64

镜像拉取下来之后,就可以跑一跑看看了。

先查看一下镜像,然后用镜像ID跑起来一个容器。这里给Rancher的对外端口是8080和8443

image.png

docker run -d --restart=unless-stopped -p 8080:80 -p 8443:443 --name=rancher2.5.8-patch2 --privileged a33ba7143766 

等一小会儿让服务启动起来。

这时也可以看一下容器日志看看启动过程中有没有什么问题

docker logs -f rancher2.5.8-patch2 

浏览器访问一下 https://192.168.31.81:8443/

依旧提示不安全,点高级——继续前往 或者秘籍 thisisunsafe

image.png

成功访问到了Rancher页面,给admin设置个登录密码

image.png

设置好URL,直接保存就可以,然后我们就看到主页面了

123745505-f20bcc00-d8e2-11eb-8c04-b66a559e0f68.png

上来就是集群列表,此处的local就是安装Rancher的时候自动部署的一个k3s集群,其中只有一个server节点来支持Rancher的运行。

下面我们来导入刚才自己部署好的K3S集群

Rancher 导入K3S集群

点击集群列表上面的添加集群,选择导入

image.png
给新集群起个名字然后点击创建

image.png

然后来到了这里

image.png

搭建实验室测试环境,要什么安全不安全的,问就是不信任,不安全。

复制最后这行命令,到K3S集群里的那台Master节点机器上去执行,这样4台节点机上会依次安装好对接Rancher用的server和agent服务。

偶尔会出现 error: no objects passed to apply 的情况,再试几次就好

image.png

回到Rancher页面上,点一下完成

image.png

可以看到我们导入的新集群正在 Pending

注意这里如果运气好的话,会在后面的几十秒内陆续看到这个状态变成 Waiting 和 Active

然而并没有,Pending了几分钟,依旧没有任何变化。
为什么会搞成这样

掉坑里了

我们回到Master上,查看k3s下的服务状态

kubectl get deployment -A

image.png

结果发现cattle-cluster-agent压根就没启动起来

于是再查看一下pod的状态

kubectl get pods -A

image.png

能看到 cattle-cluster-agent 的状态始终是 ImagePullBackOff

由此推测应该是镜像拉取的时候出了问题

我们通过describe命令 进一步查看一下这个pod的情况

格式 kubectl describe pods -n NAMESPACE NAME

kubectl describe pods -n cattle-system cattle-cluster-agent-ccf68598b-8d4zs

image.png

可以看到问题时出现在拉取rancher-agent镜像的时候出现了问题

拉取用的镜像路径是这个

rancher/rancher-agent:v2.5.8-patch2-a44c77e8ddca69155df78c7226f33f388ce8452f-head

这个最后面的 head 就非常的形迹可疑

于是我们又来到了dockerhub上,查看一下rancher-agent的相关Tags

用我们装的
v2.5.8-patch2-a44c77e8ddca69155df78c7226f33f388ce8452f
这个版本来查

image.png

根本就没有
v2.5.8-patch2-a44c77e8ddca69155df78c7226f33f388ce8452f-head
不过我们顺手找到了
v2.5.8-patch2-a44c77e8ddca69155df78c7226f33f388ce8452f-linux-arm64

这个Tag是我们适用的,那么我们接下来就需要让K3S主节点在执行Rancher导入新集群的命令时使用这个镜像就好了

回到Rancher的页面上,去找刚才有问题的那个命令

image.png

在集群列表里,点击新集群最右侧的三个点儿,选择导入主机,就可以再次看到命令页面了

image.png

既然我们已经知道问题出在这个YAML中的镜像地址上,那么我们就直接把这个YAML的内容复制出来看看

直接把yaml的url复制到浏览器里去访问就好

image.png

能看到 containers 下面的 image 内容就是刚才出错的那个Tag

既然自动生成的文件有问题,那我们就改一改然后自己执行一下就好。

来到Master里面,去找到manifests目录

cd /var/lib/rancher/k3s/server/manifests/

然后创建个yaml文件(这里命名为temp.yaml),把浏览器里看到的刚才那个问题文件内容复制进去就好。

vi temp.yaml

image.png

这里image的tag修改为刚才从dockerhub上找到的正确的那个
v2.5.8-patch2-a44c77e8ddca69155df78c7226f33f388ce8452f-linux-arm64

保存文件

:wq

赋权

chmod 777 -R temp.yaml

应用一下

kubectl apply -f temp.yaml

image.png

去看一眼cattle-cluster-agent的服务已经正常启动了

image.png


注意
如果还有问题
例如cattle-cluster-agent始终会提示 ErrImagePull
那么就要考虑使用更稳定的Tag
rancher/rancher:v2.5.8
rancher/rancher:v2.5.8@sha256:d8802d9fd23eb062ab0a30c7e53f7c995b2e4df981299b6c14d21347f30ceb86


回到Rancher页面上,新的集群也已经是 Active 状态

image.png

点开看一下

image.png

点击上面的仪表盘我们的节点机和部署过的服务都可以在这里看到了

image.png

前面搭建K3S的时候开启的那个kubernetes-dashboard在这里也看到了,还有之前配置的Nginx服务

到这里,我们的树莓派K8s(K3s)集群环境算是搭建完成了。

后面的文章中,会从应用开发的角度逐步把这套环境使用起来。


顺带一提,后来我买了乐高拼了个壳

image.png


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注