参考: 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集群相关推荐

  1. 轻量级Kubernetes之k3s:5:集群搭建

    在前面的文章中对k3s进行了一些概要信息和安装选项以及离线安装方式的介绍,这篇文章通过具体的实例来介绍如何使用k3s搭建kubernetes集群. 集群环境准备 hostname IP 内存 硬盘 操 ...

  2. ceph 部署单机集群

    文章目录 ceph-deploy部署集群 ceph-deploy 部署单机 ceph-deploy 创建osd ceph osd创建资源池 ceph创建rbd块设备 ceph创建fs文件系统 本文档主 ...

  3. 使用Kubespray部署Kubernetes集群

    Kubespray是Google开源的一个部署生产级别的Kubernetes服务器集群的开源项目,它整合了Ansible作为部署的工具.项目地址:https://github.com/kubernet ...

  4. 2、使用 kubeadm 方式快速部署K8S集群

    文章目录 一.kubernetes 官方提供的三种部署方式 二.使用kubeadm搭建k8s集群 2.1 基础环境设置 2.2 安装Docker 2.3 添加kubernetes软件源 2.4 安装k ...

  5. zookeeper+kafka集群部署+storm集群

    zookeeper+kafka集群部署+storm集群 一.环境安装前准备: 准备三台机器 操作系统:centos6.8 jdk:jdk-8u111-linux-x64.gz zookeeper:zo ...

  6. Docker部署Zookeeper集群

    Docker部署Zookeeper集群 官方网站: http://zookeeper.apache.org/ http://zookeeper.apache.org/doc/r3.4.8/zookee ...

  7. 从零部署TiDB集群

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | yangyidba 来源 | 公众号「yang ...

  8. 部署Ceph集群(块存储,文件系统存储,对象存储)

    一 前言 分布式文件系统(Distributed File System):文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于C/S模式 1, ...

  9. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...

  10. 通过operator部署redis集群(ucloud版)

    operator部署有状态的应用会简单很多 github文档:https://github.com/ucloud/redis-cluster-operator#deploy-redis-cluster ...

最新文章

  1. lvs调整hash表大小
  2. Realm Mobile Platform添加水平可扩展性,支持遗留数据源和复制
  3. 内核功能导致重启_红帽RHEL Linux 7.7正式版发布 支持内核实时修复技术无需重启...
  4. 在一个字符串寻找另一个字符串,并且输出短字符串头字母在长字符串的下标...
  5. Android自定义View之仿QQ侧滑菜单实现
  6. 【MM模块】Blocking Reasons 冻结原因
  7. Unity3d截图两种方式
  8. 参数注入:不使用xml,使用java配置参数的方法,以前的spring的方法
  9. 微信小程序 获取用户信息并保存登录状态
  10. 数据结构——二叉树的递归算法
  11. c语言数据类型_C语言基础数据类型
  12. 关于node.js杂记
  13. POJ 2798 2进制转换为16进制
  14. sql数据表改为自动递增显示与其他表关联_MySQL萌新第一季 第四话-数据表的基本操作...
  15. ps笔刷套装:逼真下雪/落雪效果
  16. Docker端口映射
  17. 100句激励自己的英文名言
  18. 迅雷调用Potplayer边下边播
  19. CSS3中的transition和transform属性
  20. 关于Synergy无法启动

热门文章

  1. 在线生成app icon图标
  2. vant中picker选择器
  3. 互联网常见34个术语解释
  4. 《Option Volatility Pricing》阅读笔记之 Option Terminology (期权术语)
  5. 激光导航AGV为何如此受企业青睐?
  6. IEEE论文参考文献格式(bib)
  7. jsp统计页面访问量和刷访问量的简单使用
  8. 利用爬虫刷CSDN博客访问量
  9. 高级口译 WordList1
  10. 常用的几种图片无损压缩工具