【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.org
dnf 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