本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
CRI-O 正在向 pkgs.k8s.io 迁移
Kubernetes 社区最近宣布,其旧版软件包仓库已被冻结,现在已迁移到由 OpenBuildService (OBS) 提供支持的社区所属软件包仓库。CRI-O 长期以来一直利用 OBS 进行软件包构建,但到目前为止,所有的打包工作都是手动完成的。
CRI-O 社区非常热爱 Kubernetes,这意味着他们很高兴地宣布:
未来所有 CRI-O 软件包将作为官方支持的 Kubernetes 基础设施的一部分发布,托管在 pkgs.k8s.io 上!
现有软件包将有一个弃用阶段,目前正在 CRI-O 社区进行讨论。新的基础设施将仅支持 CRI-O >= v1.28.2
版本以及比 release-1.28
更新的发布分支。
如何使用新软件包
与 Kubernetes 社区一样,CRI-O 在 OBS 中提供了一个名为 isv:kubernetes:addons:cri-o
的专用子项目,作为其中的一部分提供 deb
和 rpm
软件包。该项目作为一个总括项目,提供 stable
(用于 CRI-O 标签)以及 prerelease
(用于 CRI-O release-1.y
和 main
分支)的软件包构建。
稳定版本
isv:kubernetes:addons:cri-o:stable
: 稳定版软件包isv:kubernetes:addons:cri-o:stable:v1.29
:v1.29.z
标签isv:kubernetes:addons:cri-o:stable:v1.28
:v1.28.z
标签
预发布版本
v1.29 仓库中尚无稳定版本,因为 v1.29.0 将于 12 月发布。CRI-O 社区也不会支持比 release-1.28
更早的发布分支,因为有一些 CI 需求已经合并到 main
分支,只有付出适当的努力才能将其向后移植到 release-1.28
。
例如,如果最终用户想要安装 CRI-O main
分支的最新可用版本,他们可以像为 Kubernetes 添加仓库一样添加该仓库。
基于 rpm
的发行版
对于基于 rpm
的发行版,你可以以 root
用户身份运行以下命令来安装 CRI-O 和 Kubernetes:
添加 Kubernetes 仓库
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF
添加 CRI-O 仓库
cat <<EOF | tee /etc/yum.repos.d/cri-o.repo
[cri-o]
name=CRI-O
baseurl=https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/rpm/repodata/repomd.xml.key
EOF
安装官方软件包依赖
dnf install -y \
conntrack \
container-selinux \
ebtables \
ethtool \
iptables \
socat
从已添加的仓库安装软件包
dnf install -y --repo cri-o --repo kubernetes \
cri-o \
kubeadm \
kubectl \
kubelet
基于 deb
的发行版
对于基于 deb
的发行版,你可以以 root
用户身份运行以下命令:
安装添加仓库所需的依赖项
apt-get update
apt-get install -y software-properties-common curl
添加 Kubernetes 仓库
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key |
gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" |
tee /etc/apt/sources.list.d/kubernetes.list
添加 CRI-O 仓库
curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/Release.key |
gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/ /" |
tee /etc/apt/sources.list.d/cri-o.list
安装软件包
apt-get update
apt-get install -y cri-o kubelet kubeadm kubectl
启动 CRI-O
systemctl start crio.service
CRI-O 软件包路径中的 prerelease:/main
前缀可以替换为 stable:/v1.28
、stable:/v1.29
、prerelease:/v1.28
或 prerelease:/v1.29
,以使用其他数据流的软件包。
使用 kubeadm
引导集群可以通过运行 kubeadm init
命令来完成,该命令会自动检测到 CRI-O 正在后台运行。此外,还提供了适用于 Fedora 38 和 Ubuntu 22.04 的 Vagrantfile
示例,用于测试软件包与 kubeadm
的协同工作。
底层工作原理
所有与这些软件包相关的内容都存放在新的 CRI-O packaging 仓库中。它包含一个每日同步的 GitHub Action 工作流,适用于 CRI-O 的所有受支持的发布分支和标签。OBS 工作流中的一个测试流水线确保软件包在发布前可以被正确安装和使用。所有软件包的暂存和发布都借助 Kubernetes Release Toolbox (krel) 完成,该工具也用于官方的 Kubernetes deb
和 rpm
软件包。
软件包构建的输入将经过每日同步,并由 CRI-O 的静态二进制包提供。这些包在 CRI-O CI 中为每个提交进行构建和签名,并包含 CRI-O 在特定架构上运行所需的一切。这些静态构建是可复现的,由 nixpkgs 提供支持,并且仅适用于 x86_64
、aarch64
和 ppc64le
架构。
CRI-O 维护者非常乐意听取任何关于新打包工作的反馈或建议!感谢你阅读这篇博文,欢迎通过 Kubernetes 的 Slack 频道 #crio 联系维护者,或在 packaging 仓库中创建 Issue。