乐趣区

关于kubernetes:使用rke2搭建k8s集群

背景

k8s官网部署装置集群的是应用 kubeadm 形式,然而该形式比较复杂繁琐,所以产生了一些新的部署装置集群形式,比方 k3srke2等新形式

k3s有着十分宏大的社区反对,部署装置也非常简单,设计为轻量级的k8s,能够很好的运行在物联网设施或者边缘计算设施下面

rke2 官网文档形容说该部署是继承了 k3s 的可用性、易操作性和部署模式,继承了与上游 Kubernetes 的严密一致性,在一些中央,K3s 与上游的 Kubernetes 有一致 (k3s 魔改了一些 k8s 组件),以便为边缘部署进行优化,rke2同时也预设了平安配置,合乎各项平安测试标准,然而部署形式上比 k3s 更简单一些

整体来看抉择 k3srke2都是能够用于生产环境的抉择,如果更重视安全性,能够抉择rke2

硬件资源

3 台 Ubuntu 服务器,零碎版本22.04,二核 4 G

IP192.168.100.136(治理节点),192.168.100.137(agent 节点),192.168.100.138(agent节点)

3 台机器能够互相 ping

执行命令过程当中须要 sudo 权限或者切换为 root 用户

治理节点配置

节点 IP192.168.100.136

获取 rke2 安装程序

$ curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/rke2/install.sh | INSTALL_RKE2_MIRROR=cn sh -

创立自定义配置文件

$ mkdir -p /etc/rancher/rke2
$ vim /etc/rancher/rke2/config.yaml

写入内容如下

  • 自定义一个token
  • 配置节点名,该名称是全局惟一的,用于 dns 路由
  • TLS证书上增加额定的主机名或 IPv4/IPv6 地址作为备用名称,此处填写本机IP
  • 配置国内镜像
token: demo-server
node-name: demo-server-node
tls-san: 192.168.100.136
system-default-registry: "registry.cn-hangzhou.aliyuncs.com"

启动服务(rke2-server是采纳 systemd 治理,确保节点重启后或过程解体或被杀时主动重启)

$ systemctl start rke2-server
$ systemctl enable rke2-server

查看装置的二进制执行文件,rke2默认是装置到 /var/lib/rancher/rke2/bin/ 门路上面,然而该门路是不被 $PATH 所蕴含的

$ ll /var/lib/rancher/rke2/bin/
total 300396
drwxr-xr-x 2 root root      4096 Oct  8 08:41 ./
drwxr-xr-x 4 root root      4096 Oct  8 08:41 ../
-rwxr-xr-x 1 root root  57352072 Oct  8 08:41 containerd*
-rwxr-xr-x 1 root root   7381616 Oct  8 08:41 containerd-shim*
-rwxr-xr-x 1 root root  11606088 Oct  8 08:41 containerd-shim-runc-v1*
-rwxr-xr-x 1 root root  11626984 Oct  8 08:41 containerd-shim-runc-v2*
-rwxr-xr-x 1 root root  24838144 Oct  8 08:41 crictl*
-rwxr-xr-x 1 root root  20586248 Oct  8 08:41 ctr*
-rwxr-xr-x 1 root root  48570656 Oct  8 08:41 kubectl*
-rwxr-xr-x 1 root root 114644328 Oct  8 08:41 kubelet*
-rwxr-xr-x 1 root root  10973592 Oct  8 08:41 runc*

批改全局PATH

$ vim /etc/profile.d/rke2.sh

# 写入如下内容
export PATH=$PATH:/var/lib/rancher/rke2/bin

从新加载环境

$ source /etc/profile

当初能够执行 kubectl 命令了,然而发现报错如下

$ kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?

这个次要是 rke2 应用的配置文件门路问题

能够通过长期指定环境变量

$ KUBECONFIG=/etc/rancher/rke2/rke2.yaml kubectl get nodes

也能够批改 /etc/profile.d/rke2.sh 新减少一行

export KUBECONFIG=/etc/rancher/rke2/rke2.yaml

最初验证查看有一个单节点k8s

$ kubectl get nodes
NAME               STATUS     ROLES                       AGE     VERSION
demo-server-node   Ready      control-plane,etcd,master   6m27s   v1.24.6+rke2r1

Agent节点配置

Agent节点共有两个192.168.100.137192.168.100.138

获取安装程序

$ curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/rke2/install.sh | INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_TYPE="agent"  sh -

创立配置文件

$ mkdir -p /etc/rancher/rke2/
$ vim /etc/rancher/rke2/config.yaml

写入内容如下

  • server参数示意治理节点的IP,留神,这个中央应用https
  • node-name配置节点名称,两个 agent 的配置为不一样的名称
  • token参数是治理节点 192.168.100.136 的地位为 /var/lib/rancher/rke2/server/token 的数据,整个粘贴过去就行
server: https://192.168.100.136:9345
node-name: demo-agent1
token: K101585a6b044d2f961fcffa9b228daa7504c2e5fd5a91c4c80ef2dc87bc757275a::server:demo-server
system-default-registry: "registry.cn-hangzhou.aliyuncs.com"

启动 agent 并配置开机启动

$ systemctl start rke2-agent
$ systemctl enable rke2-agent

两台·agent的操作是根本一样的,惟一区别就是 /etc/rancher/rke2/config.yaml 文件中的 node-name 参数须要不同

验证集群搭建

在治理节点上执行

$ kubectl get nodes
NAME               STATUS     ROLES                       AGE   VERSION
demo-agent1        Ready      <none>                      10m   v1.24.6+rke2r1
demo-agent2        Ready      <none>                      67s   v1.24.6+rke2r1
demo-server-node   Ready      control-plane,etcd,master   34m   v1.24.6+rke2r1

配置 kubectl 补全

装置

$ apt-get install bash-completion

配置 ~/.bashrc 新增如下两行

source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)

以后 shell 失效

$ source ~/.bashrc

参考浏览

kubeadm部署装置集群

k3s我的项目

rke2官网文档

kubectl补全

退出移动版