背景
k8s
官网部署装置集群的是应用 kubeadm
形式,然而该形式比较复杂繁琐,所以产生了一些新的部署装置集群形式,比方 k3s
和rke2
等新形式
k3s
有着十分宏大的社区反对,部署装置也非常简单,设计为轻量级的k8s
,能够很好的运行在物联网设施或者边缘计算设施下面
据 rke2
官网文档形容说该部署是继承了 k3s
的可用性、易操作性和部署模式,继承了与上游 Kubernetes
的严密一致性,在一些中央,K3s
与上游的 Kubernetes
有一致 (k3s
魔改了一些 k8s
组件),以便为边缘部署进行优化,rke2
同时也预设了平安配置,合乎各项平安测试标准,然而部署形式上比 k3s
更简单一些
整体来看抉择 k3s
和rke2
都是能够用于生产环境的抉择,如果更重视安全性,能够抉择rke2
硬件资源
3 台 Ubuntu
服务器,零碎版本22.04
,二核 4 G
IP
是 192.168.100.136
(治理节点),192.168.100.137
(agent
节点),192.168.100.138
(agent
节点)
3 台机器能够互相 ping
通
执行命令过程当中须要 sudo
权限或者切换为 root
用户
治理节点配置
节点 IP
是192.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.137
,192.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
补全