当前很多人工智能平台都运行在 kubernetes平台上,操作系统的选择和 kubernetes版本的选择还是比较重要的,选择好了,可以避免升级操作系统内核等比必要的操作。

rocky linux 9.5是否支持安装 kubernetes 1.22.0 ?

Rocky Linux 9.5 理论上可以安装 Kubernetes 1.22.0,但存在一些重要限制和兼容性问题需要特别注意。以下是详细分析:

兼容性评估

组件 支持状态 风险说明
内核要求 ✅ 满足
(Rocky 9.5 内核 ≥ 5.14)
Kubernetes 1.22 要求内核 ≥ 4.x
容器运行时 ⚠️ 部分支持
(containerd ≥1.4.4, CRI-O ≥1.22)
Rocky 9.5 默认容器运行时版本较新(如 containerd 1.6+),需降级或配置兼容
kubeadm工具 ⚠️ 需手动安装旧版本 Kubernetes 1.22 已结束支持(EOL),官方仓库可能无直接安装包
iptables/nft ⚠️ 潜在冲突
(Rocky 9.5 默认使用 nftables)
Kubernetes 1.22 网络插件(如 Calico/Flannel)需兼容 nftables 后端
SSL/TLS库 ⚠️ OpenSSL 3.0 兼容性问题 旧版 Kubernetes 组件可能不兼容 OpenSSL 3.0

安装可行性方案

方案 1:直接安装(需解决依赖)

bash

复制

下载

# 1. 禁用默认仓库并添加Kubernetes 1.22旧仓库
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el9-x86_64
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

# 2. 安装指定版本(需强制解决依赖)
sudo dnf install -y --nogpgcheck \
    kubelet-1.22.0-0 \
    kubeadm-1.22.0-0 \
    kubectl-1.22.0-0 \
    cri-o-1.22.*  # 必须匹配K8s版本

# 3. 手动降级容器运行时(如containerd)
sudo dnf downgrade containerd-1.4.4-*
方案 2:使用容器化安装(推荐)

bash

复制

下载

# 通过kubeadm在容器中运行控制平面
sudo kubeadm init --kubernetes-version=v1.22.0 \
     --cri-socket=unix:///var/run/crio/crio.sock \
     --ignore-preflight-errors=SystemVerification

关键问题与解决方案

  1. 容器运行时兼容性
    问题:Rocky 9.5 默认 containerd ≥1.6,K8s 1.22 需 ≤1.5.x
    解决

    bash

    复制

    下载

    # 安装旧版containerd
    sudo dnf install -y https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.13-3.1.el8.x86_64.rpm
  2. nftables 后端支持
    问题:Calico/Flannel 在 nftables 模式下可能异常
    解决

    bash

    复制

    下载

    # 切换回iptables-legacy
    sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
    sudo kubeadm init ... --skip-phases=preflight
  3. OpenSSL 3.0 不兼容
    问题:kubelet 可能因 SSL 库失败
    解决:在 systemd 服务中降级 SSL

    bash

    复制

    下载

    # /etc/systemd/system/kubelet.service.d/10-openssl.conf
    [Service]
    Environment="LD_PRELOAD=/usr/lib64/libssl.so.1.1 /usr/lib64/libcrypto.so.1.1"

生产环境建议

  1. 升级 Kubernetes 版本
    Rocky Linux 9.5 更适合安装 Kubernetes ≥1.25(官方测试兼容):

    bash

    复制

    下载

    # 安装当前稳定版(1.28+)
    sudo dnf install -y kubelet kubeadm kubectl
  2. 使用 RHEL 8 衍生版
    如需 Kubernetes 1.22,建议选择:

    • Rocky Linux 8.x

    • AlmaLinux 8.x

    • CentOS 7(内核升级后)

  3. 验证工具
    使用 kubeadm 检查兼容性:

    bash

    复制

    下载

    sudo kubeadm init --dry-run \
         --ignore-preflight-errors=all \
         --kubernetes-version=v1.22.0

安装后验证重点

bash

复制

下载

# 检查组件健康状态
kubectl get componentstatus

# 查看kubelet日志
journalctl -u kubelet | grep -i error

# 测试DNS和网络
kubectl run test --image=busybox -- sleep 3600
kubectl exec test -- nslookup kubernetes.default

结论

  • 技术上可行:通过降级关键组件可在 Rocky Linux 9.5 运行 K8s 1.22

  • 不推荐生产:存在稳定性风险,维护成本高

  • 最佳路径
    ✅ 方案 A:将 Kubernetes 升级到 ≥1.25(官方支持 EL9)
    ✅ 方案 B:将操作系统降级到 Rocky Linux 8.x

严重警告:Kubernetes 1.22 已于 2022 年 8 月结束生命周期(EOL),不再接收安全更新。生产环境强烈建议使用受支持的版本。

Rocky Linux 9.5 是否适合安装 kubernetes 1.30?

是的,Rocky Linux 9.5 完全适合安装 Kubernetes 1.30,这是官方推荐且兼容性良好的组合。以下是详细分析和安装指南:


核心兼容性验证

组件 Rocky Linux 9.5 Kubernetes 1.30 要求 兼容性
内核版本 5.14.0-362+ ≥ 4.x ✅ 完全满足
容器运行时 containerd 1.6.22+ containerd ≥1.6 ✅ 官方认证
iptables nftables (兼容模式) 支持 nftables 后端 ✅ 无需切换
SSL 库 OpenSSL 3.0+ 原生支持 OpenSSL 3.0 ✅ 无冲突
cgroup 驱动 默认 cgroup v2 要求 cgroup v2 ✅ 完美匹配

为什么是理想组合?

  1. 官方支持
    Kubernetes 1.30 明确支持 RHEL 9 及其衍生版(包括 Rocky Linux 9.5)。

  2. 软件包生态同步
    Rocky Linux 9.5 仓库直接提供:

    bash

    复制

    下载

    # 可用版本查询
    sudo dnf list --showduplicates kubelet kubeadm kubectl cri-o
    • kubelet-1.30.x

    • cri-o-1.30.x(与 K8s 主版本严格匹配)

  3. 无需降级组件
    所有依赖(containerd/CNI/ipvs)均满足最新要求,规避了兼容性风险。


安装步骤

1. 基础环境配置

bash

复制

下载

# 禁用 SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

# 关闭 Swap
sudo swapoff -a
sudo sed -i '/swap/s/^\(.*\)$/#\1/' /etc/fstab

# 加载内核模块
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

# 网络参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
2. 安装容器运行时(containerd)

bash

复制

下载

# 安装 containerd
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y containerd.io

# 配置 cgroup v2 驱动
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
3. 安装 Kubernetes 1.30

bash

复制

下载

# 添加仓库
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
EOF

# 安装组件
sudo dnf install -y kubelet-1.30.* kubeadm-1.30.* kubectl-1.30.* --disableexcludes=kubernetes

# 启动服务
sudo systemctl enable --now kubelet
4. 初始化集群

bash

复制

下载

# 控制平面初始化
sudo kubeadm init \
  --kubernetes-version=v1.30.0 \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///var/run/containerd/containerd.sock

# 配置用户环境
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5. 安装网络插件(Calico 示例)

bash

复制

下载

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml

关键优势

  • 零适配成本:无需内核升级/运行时降级

  • 长期支持:Rocky Linux 9 支持到 2032 年,K8s 1.30 支持到 2025 年 10 月

  • 性能优化:cgroup v2 提升资源管理效率

  • 安全增强:默认启用 seccomp/AppArmor 配置文件


生产环境建议

  1. 高可用部署
    使用多个控制平面节点:

    bash

    复制

    下载

    kubeadm init --control-plane-endpoint "LOAD_BALANCER_DNS:PORT" \
                 --upload-certs
  2. 自动证书续期
    启用 kubelet 证书轮换:

    yaml

    复制

    下载

    # /var/lib/kubelet/config.yaml
    rotateCertificates: true
    serverTLSBootstrap: true
  3. 使用离线包
    在内网环境通过预下载镜像部署:

    bash

    复制

    下载

    kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers

验证命令

bash

复制

下载

# 检查节点状态
kubectl get nodes -o wide

# 查看核心组件
kubectl get pods -n kube-system

# 测试 DNS
kubectl run dns-test --image=busybox:1.28 --command -- sleep 3600
kubectl exec dns-test -- nslookup kubernetes.default

结论:Rocky Linux 9.5 + Kubernetes 1.30 是当前最推荐的生产级组合,完全遵循 Kubernetes 官方对 RHEL 9 兼容性标准,可安全用于关键业务系统。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐