【K8S】【minikube】Rocky Linux9启用cgroup2部署minikube

说明

centos8、9已经或者即将停止维护后,Redhat系中开源免费的Linux发行版中较为活跃和兼容性较高的推荐使用Rocky Linux
* Rocky Linux9概览
* 内核:5.x版本
* 系统管理服务:systemd(250版本及以上)
* cgroup版本:默认启用cgroup2,支持cgroup1
* 包管理攻击:dnf(yum下一代工具)
* util-linux: 2.37版本及以上
* 默认桌面: Gnome 40.x版本及以上
k8s官方推荐使用cgroup2和systemd对系统进行管理,但考虑到当前大部分生产环境以稳定为主,因为默认启用的其实是cgroup1和cgroupfs驱动。
* cgroup2启用要求
* 操作系统发行版启用 cgroup v2
* Linux 内核为 5.8 或更高版本
* 容器运行时支持cgroup v2 如containerd v1.4 和更高版本;cri-o v1.20 和更高版本
* kubelet和容器运行时被配置为使用systemd cgroup驱动

安装

安装前提

  • 一台物理机或者虚拟机,物理机CPU大于2核vcpu、2G内存、20G磁盘
  • 可连接网络
  • 包括一个容器或者虚拟机管理引擎,此处以Docker为例
  • 操作系统为Rocky Linux9,此处以Rocky Linux9.1为例, 设置ip为192.168.1.2

安装步骤

升级内核

参考:Rocky Linux 9 内核升级至 6.0
* 查看当前内核版本

uname -r
  • 载入公钥及安装ELRepo
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgdnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
  • 载入elrepo-kernel元数据
dnf --disablerepo=\* --enablerepo=elrepo-kernel repolist
  • 查看可用内核包
dnf --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
  • 安装最新版本的kernel
dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
  • 删除旧版本工具包
dnf remove kernel-tools-libs.x86_64 kernel-tools.x86_64
  • 安装新版本内核工具包
dnf –disablerepo=\* –enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
  • 查看所有内核启动项
grubby --info=ALL

# 会显示所有的核心,且包含index、kernel
  • 设置默认内核并查看
# 使用index的指指定默认内核
grubby --set-default index的值
# 查看当前默认内核
grubby --default-kernel
  • 使设置生效及查看
# 使设置生效需要重启
reboot
# 重启后查看使用的内核
uname -r
  • 删除不需要的内核启动项
grubby --remove-kernel=kernel的路径

安装Dcoker

  • 添加docker源
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
  • 安装docker
dnf install -y docker-ce
  • 查看docker版本
docker version
  • 启动并设置为开机启动
systemctl start docker
systemctl enable docker
  • 查看docker默认的配置
# 查看cgroup驱动,应该为systemd
docker info |grep  'Cgroup Driver'

# 查看cgroup版本,应该为v2版本
docker info |grep  'Cgroup Version'
  • 查看containerd运行时版本
# 应该大于1.4版本
ctr version

系统设置查看

此处仅说明查看方法,因为如果使用的是Rocky Linux9,必定是满足的
* 查看cgroup相关

# 系统支持的cgroup版本,包含nodev cgroup2则表示已安装cgroup2,但是不一定启动
grep cgroup /proc/filesystems

# 系统启用的cgroup版本
stat -fc %T /sys/fs/cgroup/
注:
对于 cgroup v2,输出为 cgroup2fs
对于 cgroup v1,输出为 tmpfs
  • 查看systemd版本,必须大于247
systemctl --version

禁用SELinux

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

关闭防火墙

systemctl stop firewalld

禁用swap分区

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

安装minikube

minikube start --force --driver=docker --cni calico --listen-address=0.0.0.0 --container-runtime=containerd --apiserver-ips=192.168.1.2 --registry-mirror=https://registry.docker-cn.com --extra-config=--cgroup-driver=systemd --force-systemd=true

参数说明:
* –force –driver=docker:root权限下强制使用docker
* –cni calico:使用calico网络插件
* –listen-address=0.0.0.0:监听0.0.0.0,暴露部分集群端口到宿主机上
* –container-runtime=containerd:使用contaierd容器运行时,使用docker驱动,且kubernetes版本大于1.24时必须使用
* –apiserver-ips=192.168.1.2:指定apiserver的宿主机ip
* –registry-mirror=https://registry.docker-cn.com:指定镜像仓库,官方的太慢了
* –extra-config=–cgroup-driver=systemd:cgroup驱动强制使用systemd,适用于cgroup2
* –force-systemd=true:集群强制使用systemd管理

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
d
c