k3s部署Tx2集群

2024-03-26 20:38
文章标签 部署 集群 tx2 k3s

本文主要是介绍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.tar,k3s-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 KubernetesLoaded: loaded (/lib/systemd/system/k3s-server.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2020-05-14 09:27:15 CST; 31min agoDocs: https://k3s.ioMain PID: 6827 (k3s-server)Tasks: 0CGroup: /system.slice/k3s-server.service└─6827 /usr/local/bin/k3s-arm64 server --docker5月 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中看到导入的集群信息了。
在这里插入图片描述

这篇关于k3s部署Tx2集群的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/849781

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee