k3s部署Tx2集群

参考: http://dockone.io/article/9384

准备工作

假定下载到的文件已经上传到服务器节点的~/packages目录下面。

将k3s-amd64二进制文件放置到/usr/local/bin目录下,并赋予可执行权限:

# cp ~/packages/k3s-amd64 /usr/local/bin/ 
# chmod +x /usr/local/bin/k3s-amd64

将离线镜像包放置到指定的位置:

# mkdir -p /var/lib/rancher/k3s/agent/images/
# cp ~/packages/k3s-airgap-images-arm64.tar /var/lib/rancher/k3s/agent/images/

可执行文件和离线镜像不是很好下载,有需要的可以在这里下载k3s-airgap-images-arm64.tark3s-arm64

需要在k3s集群所有节点上都放置上面的离线文件。

如果没有专门的域名服务器提供主机名解析服务,那么在每一台节点的/etc/hosts文件中。写入本节点的IP与主机名映射。

至此,准备工作完成。

部署k3s Server节点

k3s server节点安装时,可以选在同时在本地安装一个k3s Agent节点用以承载工作负载,如果选择不在Server节点上安装Agent节点,则除了k3s集成的Kubernetes组件(如kubelet、API Server)之外,其余的插件、应用均不会被调度到Server节点上。

k3s支持使用多种容器运行时环境,Server默认以containerd作为运行时,不支持更改。Agent节点可以使用contained也可以使用Docker,推荐使用Docker,因为Docker人机更友好,可以方便的管理镜像和容器以及查错。所以如果选择Agent节点以Docker作为容器运行时,那么必须要提前安装并配置好Docker服务。

现在,我们可以启动k3s Server节点:

# k3s-amd64 server \
--docker \
--bind-address=10.0.0.201 \
--cluster-cidr=10.128.0.0/16 \
--service-cidr=10.129.0.0/16 \
--kube-apiserver-arg service-node-port-range=1000-65000 \
--write-kubeconfig=/root/.kube/config \
--write-kubeconfig-mode=644 \
--node-label asrole=worker

参数说明:
–docker:k3s server组件以containerd作为容器运行时。可以顺便在k3s server节点上启动一个Agent节点,Agent节点可以使用Docker作为容器运行时,这样k3s server节点也可以当做工作节点用。当然也可以不在server节点上启动Agent节点(添加参数–disable-agent即可)。
–bind-address:k3s监听的IP地址,非必选,默认是localhost。
–cluster-cidr:与Kubernetes一样,也就是Pod所在网络平面,非必选,默认是10.42.0.0/16。
–service-cidr:与Kubernetes一样,服务所在的网络平面,非必选,默认是10.43.0.0/16。
–kube-apiserver-arg:额外的API Server配置参数,具体可以参考Kuberntes官方网站了解支持的配置选项,非必选。
–write-kubeconfig:安装时顺便写一个Kubeconfig文件,方便使用kubectl工具直接访问。如果不加此参数,则默认的配置文件路径为/etc/rancher/k3s/k3s.yaml,默认只有root用户能读。
–write-kubeconfig-mode:与–write-kubeconfig一起使用,指定Kubeconfig文件的权限。
–node-label:顺便给节点打上一个asrole=worker的label,非必选。

k3s支持众多的安装参数和选型,详细请参考官方文档:https://rancher.com/docs/k3s/l … tion/。

完成之后,检查集群状态:

$ k3s-arm64 kubectl get nodes
WARN[2020-05-14T09:29:22.540598968+08:00] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions 
error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied

提示权限不够,给 /etc/rancher/k3s/k3s.yaml添加可读权限:

$ sudo chmod a+r /etc/rancher/k3s/k3s.yaml

然后检查集群状态:

#$ k3s-arm64 kubectl get nodes
NAME           STATUS   ROLES    AGE     VERSION
face-desktop   Ready    master   2d19h   v1.17.5+k3s1

可见节点已经呈就绪状态。

检查Pod的状态:

$ k3s-arm64 kubectl get po --all-namespaces
NAMESPACE     NAME                                      READY   STATUS      RESTARTS   AGE
kube-system   helm-install-traefik-jtlq8                0/1     Completed   0          2d19h
default       dummy-web-test-7c8f8847cb-jxg4l           1/1     Running     3          2d19h
default       dummy-web-test-7c8f8847cb-zxtqj           1/1     Running     3          2d19h
kube-system   metrics-server-6d684c7b5-7mbhb            1/1     Running     3          2d19h
kube-system   svclb-traefik-kh7p2                       2/2     Running     6          2d19h
kube-system   traefik-7b8b884c8-lp8ck                   1/1     Running     3          2d19h
kube-system   coredns-6c6bb68b64-htrh9                  1/1     Running     3          2d19h
kube-system   local-path-provisioner-58fb86bdfd-2rlzg   1/1     Running     4          2d19h

可以看到,系统命名空间下所有的应用都已经启动了,server节点已经就绪,接下来可以部署k3s agent工作节点了。

在上面的命令中,我们均是以k3s kubectl开头的命令,是否可以直接使用kubectl客户端呢?当然可以,只需要下载一个对应版本的kubectl二进制文件放到系统的Path中,赋予可执行权限即可,使用起来与使用Kubernetes集群一模一样!

由于上面的命令是在前台执行的,一旦断开SSH链接或者终止shell进程,k3s server就停止运行了,因此我们给他配置一个systemd服务,用以像管理系统服务一样管理k3s server节点。

创建文件/lib/systemd/system/k3s-server.service,内容为:

[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
After=network-online.target

[Service]
Type=notify
EnvironmentFile=/etc/systemd/system/k3s.service.env
ExecStart=/usr/local/bin/k3s-arm64 server --docker
KillMode=process
Delegate=yes
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

然后设置服务开机自启:

# systemctl enable k3s-server

CTRL+C结束在前台执行的命令,我们看到服务文件中引用了一个环境变量文件/etc/systemd/system/k3s.service.env,这个文件并不存在需要先创建一个然后才能启动服务:

# touch /etc/systemd/system/k3s.service.env
# systemctl start k3s-server

查看服务状态:

$ systemctl status k3s-server
● k3s-server.service - Lightweight Kubernetes
   Loaded: loaded (/lib/systemd/system/k3s-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-05-14 09:27:15 CST; 31min ago
     Docs: https://k3s.io
 Main PID: 6827 (k3s-server)
    Tasks: 0
   CGroup: /system.slice/k3s-server.service
           └─6827 /usr/local/bin/k3s-arm64 server --docker

5月 14 09:48:47 face-desktop k3s-arm64[6827]: I0514 09:48:47.461392    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:49:47 face-desktop k3s-arm64[6827]: I0514 09:49:47.493009    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:50:47 face-desktop k3s-arm64[6827]: I0514 09:50:47.511674    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:51:47 face-desktop k3s-arm64[6827]: I0514 09:51:47.543578    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:52:47 face-desktop k3s-arm64[6827]: I0514 09:52:47.566575    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:53:47 face-desktop k3s-arm64[6827]: I0514 09:53:47.589274    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:54:47 face-desktop k3s-arm64[6827]: I0514 09:54:47.623797    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:55:47 face-desktop k3s-arm64[6827]: I0514 09:55:47.650076    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:56:47 face-desktop k3s-arm64[6827]: I0514 09:56:47.668509    6827 controller.go:107] OpenAPI Aggregatio
5月 14 09:57:47 face-desktop k3s-arm64[6827]: I0514 09:57:47.698423    6827 controller.go:107] OpenAPI Aggregatio
lines 1-19/19 (END)

提醒:如果出现错误,可以通过journalctl -u k3s-server查看日志。

部署k3s agent节点

在server节点部署完成之后,在server节点的/var/lib/rancher/k3s/server/目录下面生成一个node-token文件,该文件存储了k3s agent节点加入集群时所需的token。

在Server节点上,获取token:

# cat node-token 
K106c55585781217aa70d30fc30bad4ad5db27863a7849a5380107b4e0210866f51::server:7cc3052b9957cb3d34e3c4f5753b7d37

在作为k3s agent节点的系统中,以root用户执行下面的命令启动k3s agent节点,但是,因为我们采用了Docker作为Agent节点的容器运行时,所以我们先将离线镜像导入到Docker中:

# docker load -i k3s-airgap-images-arm64.tar 
225df95e717c: Loading layer [==================================================>]  336.4kB/336.4kB
8b229224d9be: Loading layer [==================================================>]  42.13MB/42.13MB
Loaded image: rancher/coredns-coredns:1.6.3
dadbfa900fbf: Loading layer [==================================================>]  20.73MB/20.73MB
53e5ec09abb1: Loading layer [==================================================>]    104MB/104MB
5a274a584f7e: Loading layer [==================================================>]  5.632kB/5.632kB
Loaded image: rancher/klipper-helm:v0.2.3
Loaded image: rancher/klipper-lb:v0.1.2
d357e9c10ce8: Loading layer [==================================================>]    236kB/236kB
5b52354aa0b8: Loading layer [==================================================>]  2.008MB/2.008MB
27ca7adf84a7: Loading layer [==================================================>]  81.39MB/81.39MB
Loaded image: rancher/library-traefik:1.7.19
5e0d81111355: Loading layer [==================================================>]   5.59MB/5.59MB
290c5da5dffb: Loading layer [==================================================>]  29.39MB/29.39MB
Loaded image: rancher/local-path-provisioner:v0.0.11
932da5156413: Loading layer [==================================================>]  3.062MB/3.062MB
e3b5c4b90500: Loading layer [==================================================>]  36.49MB/36.49MB
Loaded image: rancher/metrics-server:v0.3.6
Loaded image: rancher/pause:3.1

然后在作为agent的Tx2上执行下面的命令安装k3s-agent节点。

# k3s-arm64 agent \
--docker \
--server https://192.168.111.177:6443 \
--token K106c55585781217aa70d30fc30bad4ad5db27863a7849a5380107b4e0210866f51::server:7cc3052b9957cb3d34e3c4f5753b7d37 \
--node-label asrole=worker

参数说明:
–docker:k3s agent以docker作为容器运行时。
–server:k3s server节点监听的url,必选参数。
–token:k3s server安装时生成的token,必选参数。
–node-ip:k3s agent节点的IP地址,非必选参数。
–node-label:同样给k3s agent节点打上一个asrole=worker的标签,非必选参数。

稍等一会儿,在server节点上查看agent节点是否已经加入到了集群中:

# k3s-arm64 kubectl get node
NAME           STATUS   ROLES    AGE   VERSION
face-desktop   Ready    master   3d    v1.17.5+k3s1
ubuntu-tx2     Ready    <none>   11m   v1.17.5+k3s1

可以看到节点已经成功加入到了集群中。
如果想Agent节点配置成systemd可以管理的系统服务,可以参照配置server节点作为系统服务的过程。

rancher导入k3s

登陆rancher页面
在这里插入图片描述
点击导入,输入集群名称然后点击创建
在这里插入图片描述
复制第三条命令,在server的终端中运行即可将节点加入rancher。
如果没有在系统中安装kubectl,则要在命令的kubectl前加上k3s-arm64
在这里插入图片描述
大约过了10s就能在rancher中看到导入的集群信息了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值