【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
- 安装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管理