接上文 👉CentOS7.7-mini版安装rancher2.x并初始化

一、服务器主机名规划

  • rancher集群编排节点
  • k8s-control 集群控制节点
  • k8s-etcd集群编排数据存储节点
  • k8s-work 集群工作计算节点
  • k8s-data 集群工作数据存储节点
  • docker-1 非集群计算与数据存储节点

二、服务器硬件环境规划

所有主机分为系统盘与数据盘,各自承担不同职责与IO压力,数据盘的IO压力不影响节点运行:

  • 系统盘:用于运行系统(linux、windows节点)及k8s系统组件,必须保障集群节点的高效稳定性,不可用于存储(挂载)业务数据,不可出现影响节点稳定的因素存在,如:磁盘IO压力
  • 数据盘:用于存储数据,可能是冷存储只需要更大的存储空间,也可能是热存储需要更高的IO性能,分离数据盘与系统盘可保障在数据盘满IO工作下,不影响k8s节点正常运作

数据盘挂载点,均使用LVM逻辑分区,方便后续无限制扩容

主机名处理器主频/vCPU内存系统盘(GiB)数据盘(GiB)内网网络操作系统
rancher2.7 GHz * 2440 (10000 IOPS)50万PPS
带宽2Gbps
centos7.9
docker-13.4 GHz * 4840 (10000 IOPS)200 (15000 IOPS)50万PPS
带宽2Gbps
centos7.9
k8s-control-etcd-13.4 GHz * 41660 (10000 IOPS)50万PPS
带宽2Gbps
centos7.9
k8s-worker-data-12.4 GHz * 146440 (10000 IOPS)480 (25000 IOPS)50万PPS
带宽2Gbps
centos7.9
k8s-worker-data-22.4 GHz * 146440 (10000 IOPS)480 (25000 IOPS)50万PPS
带宽2Gbps
centos7.9
k8s-worker-data-32.4 GHz * 146440 (10000 IOPS)480 (25000 IOPS)50万PPS
带宽2Gbps
centos7.9

硬件参数说明

主机名处理器信息内存信息硬盘信息内网地址
rancherIntel® Celeron® CPU G1620 @ 2.70GHz2*2 1333 MT/s闪迪120SSD192.168.0.10
docker-1Intel® Core™ i5-7500 CPU @ 3.40GHz8*1 2133 MT/s金士顿240SSD192.168.0.11
k8s-control-etcd-1Intel® Core™ i5-7500 CPU @ 3.40GHz8*2 2133 MT/s金士顿240SSD192.168.0.20
k8s-worker-data-1Intel® Xeon® CPU E5-2680 v4 @ 2.40GHz16*4 2133 MT/s金士顿480SSD192.168.0.21
k8s-worker-data-2Intel® Xeon® CPU E5-2680 v4 @ 2.40GHz16*4 2133 MT/s金士顿480SSD192.168.0.22
k8s-worker-data-3Intel® Xeon® CPU E5-2680 v4 @ 2.40GHz16*4 2133 MT/s金士顿480SSD192.168.0.23

三、服务器初始化

集群环境定义

名称版本说明
Rancher2.6.8
Kubernetesrke2集群:1.23.10使用container而非docker
Dockerdocker-ce:20.10.16rke2集群节点不需要

配置服务器静态网络地址

vi /etc/sysconfig/network-scripts/ifcfg-e 按tab补全网卡名称

BOOTPROTO=static 设置为静态网络
ONBOOT=yes 
IPADDR=192.168.0.10  # ranche节点设置为ip
IPADDR=192.168.0.11  # docker-1节点设置为ip
IPADDR=192.168.0.20  # k8s-control-etcd-1节点设置为ip
IPADDR=192.168.0.21  # k8s-worker-data-1节点设置为ip
IPADDR=192.168.0.22  # k8s-worker-data-2节点设置为ip
IPADDR=192.168.0.23  # k8s-worker-data-3节点设置为ip
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=223.5.5.5
DNS2=223.6.6.6

service network restart

配置yum源

  1. 备份yum资源配置文件

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

  2. 下载新的CentOS-Base.repo 到/etc/yum.repos

    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  3. 运行yum makecache生成缓存

    yum makecache

设置主机名

👉参考

Kubernetes节点主机名不能重复,所以我们需要修改:

  1. 查看主机名
    hostname

  2. 修改主机名
    因为K8S的规定,主机名只支持包含 -. (中横线和点)两种特殊符号,并且主机名不能出现重复。
    hostnamectl set-hostname 主机名

  3. 查看主机名
    hostname
    hostnamectl

  4. 重启
    reboot

  5. 再次查看

时间同步

安装ntpdate工具

yum -y install ntp ntpdate

所有节点设置ntp服务开启启动

sudo systemctl start ntpd       # 启动ntp服务
sudo systemctl enable ntpd      # 设置ntp服务开机启动

所有节点启动时间同步

timedatectl set-ntp yes

同步节点时间

ntpdate ntp1.aliyun.com         # rancher节点同步互联网的时间
ntpdate 192.168.0.10            # 其他节点同步rancher节点的时间

时间写入硬件

hwclock --systohc
hwclock -w

四、Docker单节点部署Rancher

安装docker

安装docker-ce

curl https://releases.rancher.com/install-docker/20.10.sh | sh
配置docker镜像加速器

修改daemon配置文件/etc/docker/daemon.json来使用加速器:👉阿里云提供专属加速器地址

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://你自己的专属加速地址.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

启动服务并设置开机自启

systemctl start docker && systemctl enable docker
卸载docker(参考命令,需要时使用)
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Rancher单节点部署

docker run -d --privileged --restart=unless-stopped   -p 80:80 -p 443:443  --name=rancher \
  -v /opt/pvc/local/rancher:/var/lib/rancher \
  -e CATTLE_AGENT_IMAGE="registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.6.8" \
  registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.6.8

获得默认密码:

docker logs  rancher  2>&1 | grep "Bootstrap Password:"

国内镜像源初始化:registry.cn-hangzhou.aliyuncs.com,2.5的文档,2.6也可以参考:👉如何在国内使用 Rancher

  • 配置system-default-registry
  • 配置Chart 仓库

Rancher升级(参考命令,需要时使用)

docker pull registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.6.8
docker stop rancher
docker create --volumes-from rancher --name rancher-data-v2.6.5 registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.6.5
docker create --volumes-from rancher --name rancher-data-snapshot-v2.6.5 registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.6.5
docker run -d -p 80:80 -p 443:443 \
  --restart=unless-stopped --privileged --name=rancher2.6.8 \
  --volumes-from rancher-data-v2.6.5 \
  registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.6.8

登录rancher,通过检查浏览器左下角显示的版本,确认是否升级成功。
删除旧版本Rancher Server容器

docker rm rancher

五、k8s集群节点初始化准备

清理环境(参考命令,需要时使用)

清理脚本清理命令都执行,没脚本下载脚本后再执行

sh clear-k8s.sh
/usr/local/bin/rke2-uninstall.sh

rke2集群搭建时,人工再度确认/var/lib/etc/opt等目录下,是否还要rancher、docker、k3s、kubernetes、containerd等rancher与k3s、k8s等残留信息

服务器环境配置

NetworkManager配置

vi /etc/NetworkManager/conf.d/rke2-canal.conf

[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:flannel*

systemctl reload NetworkManager

Wicked配置

vi /etc/sysctl.d/90-rke2.conf

net.ipv4.conf.all.forwarding=1
net.ipv6.conf.all.forwarding=1
开启网络转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
配置docker镜像加速器(参考命令,需要时使用)

方式一(推荐):

vi /etc/rancher/rke2/registries.yaml

mirrors:
  docker.io:
    endpoint:
      - "https://你自己的专属加速地址.mirror.aliyuncs.com"

重启节点使配置生效(不同节点用不同命令):

systemctl restart rke2-server.service
systemctl restart rke2-agent.service

方式二:

mkdir -p /etc/containerd && chmod -R 755 /etc/containerd
vi /etc/containerd/config.toml
[plugins.cri.registry]
  [plugins.cri.registry.mirrors]
    [plugins.cri.registry.mirrors."docker.io"]
      endpoint = ["https://你自己的专属加速地址.mirror.aliyuncs.com"]

systemctl restart containerd

六、创建RKE2集群

在Rancher UI中创建RKE2集群:

rke2集群创建页面

  • Kubernetes 版本:v1.23.10+rke2r1
  • 默认容器网络calico
  • 国内镜像加速:registry.cn-hangzhou.aliyuncs.com

其他配置选择默认即可,根据需要修改,创建完毕rke2集群之后,便是注册k8s节点:

  • 根据开头提到的服务器主机名,提前规划k8s节点工作职责与hostname
  • 根据节点职责,选择对应的节点角色注册至集群

集群节点注册示例:

集群节点注册示例

七、集群配置

crictl命令对照docker命令

👉crictl命令官方对照文档参考

系统相关命令:

dockercrictl作用
docker infocrictl info显示容器相关的系统信息
docker versioncrictl version显示容器运行时的版本信息

镜像相关命令:

dockercrictl作用
docker imagescrictl images显示本地镜像列表
docker pullcrictl pull下载镜像
docker push上传镜像
docker rmicrictl rmi删除本地镜像
docker inspectcrictl inspect查看镜像详情
crictl imagefsinfo返回镜像文件系统信息

容器相关命令:

dockercrictl作用
docker pscrictl ps显示容器列表
docker createcrictl create创建容器
docker runcrictl run运行容器
docker startcrictl start启动容器
docker stopcrictl stop停止容器
docker updatecrictl update更新容器
docker rmcrictl rm删除容器
docker inspectcrictl inspect查看容器详情
docker attachcrictl attach连接到容器中
docker execcrictl exec进入容器内部
docker logscrictl logs查看容器日志
docker statscrictl stats查看容器监控状态

相关命令作用:

dockercrictl作用
crictl pods显示 pod 列表
crictl inspectp查看 pod 详情
crictl runp运行pod
crictl rmp删除 Pod
crictl stopp停止 Pod
crictl port-forward将本地端口转发到 Pod

映射crictl

rke2containerd容器运行时,需要做crictl命令映射

control节点映射crictl与kubectl

配置环境变量:

vi /etc/profile.d/rancher_env.sh

export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
export CONTAINER_RUNTIME_ENDPOINT="unix:///var/run/k3s/containerd/containerd.sock"

配置软链接:

source /etc/profile.d/rancher_env.sh && 
ln -s /var/lib/rancher/rke2/bin/crictl /usr/local/bin/crictl && 
ln -s /var/lib/rancher/rke2/bin/kubectl /usr/local/bin/kubectl
worker节点映射crictl

配置环境变量:

vi /etc/profile.d/rancher_env.sh

export CONTAINER_RUNTIME_ENDPOINT="unix:///var/run/k3s/containerd/containerd.sock"

配置软链接:

source /etc/profile.d/rancher_env.sh && 
ln -s /var/lib/rancher/rke2/bin/crictl /usr/local/bin/crictl
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐