背景

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

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

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

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

硬件资源

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

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-servernode-name: demo-server-nodetls-san: 192.168.100.136system-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 300396drwxr-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 nodesThe 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 nodesNAME               STATUS     ROLES                       AGE     VERSIONdemo-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:9345node-name: demo-agent1token: K101585a6b044d2f961fcffa9b228daa7504c2e5fd5a91c4c80ef2dc87bc757275a::server:demo-serversystem-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 nodesNAME               STATUS     ROLES                       AGE   VERSIONdemo-agent1        Ready      <none>                      10m   v1.24.6+rke2r1demo-agent2        Ready      <none>                      67s   v1.24.6+rke2r1demo-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_completionsource <(kubectl completion bash)

以后shell失效

$ source ~/.bashrc

参考浏览

kubeadm部署装置集群

k3s我的项目

rke2官网文档

kubectl补全