CRI-O 正迁移至 pkgs.k8s.io
作者:Sascha Grunert
译者:Wilson Wu (DaoCloud)
Kubernetes 社区最近宣布旧的软件包仓库已被冻结, 现在这些软件包将被迁移到由 OpenBuildService(OBS) 提供支持的社区自治软件包仓库中。 很久以来,CRI-O 一直在利用 OBS 进行软件包构建, 但到目前为止,所有打包工作都是手动完成的。
CRI-O 社区非常喜欢 Kubernetes,这意味着他们很高兴地宣布:
所有未来的 CRI-O 包都将作为在 pkgs.k8s.io 上托管的官方支持的 Kubernetes 基础设施的一部分提供!
现有软件包将进入一个弃用阶段,目前正在
CRI-O 社区中讨论。
新的基础设施将仅支持 CRI-O >= v1.28.2
的版本以及比 release-1.28
新的版本分支。
如何使用新软件包
与 Kubernetes 社区一样,CRI-O 提供 deb
和 rpm
软件包作为 OBS 中专用子项目的一部分,
被称为 isv:kubernetes:addons:cri-o
。
这个项目是一个集合,提供 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 init
命令来引导集群,
该命令会自动检测后台正在运行 CRI-O。还有适用于
Fedora 38
以及 Ubuntu 22.04
的 Vagrantfile
示例,可在使用 kubeadm
的场景中测试下载的软件包。
它是如何工作的
与这些包相关的所有内容都位于新的 CRI-O 打包仓库中。
它包含 Daily Reconciliation GitHub 工作流,
支持所有发布分支以及 CRI-O 标签。
OBS 工作流程中的测试管道确保包在发布之前可以被正确安装和使用。
所有包的暂存和发布都是在 Kubernetes 发布工具箱(krel)的帮助下完成的,
这一工具箱也被用于官方 Kubernetes deb
和 rpm
软件包。
包构建的输入每天都会被动态调整,并使用 CRI-O 的静态二进制包。
这些包是基于 CRI-O CI 中的每次提交来构建和签名的,
并且包含 CRI-O 在特定架构上运行所需的所有内容。静态构建是可重复的,
由 nixpkgs 提供支持,
并且仅适用于 x86_64
、aarch64
以及 ppc64le
架构。
CRI-O 维护者将很乐意听取有关新软件包工作情况的任何反馈或建议! 感谢您阅读本文,请随时通过 Kubernetes Slack 频道 #crio 联系维护人员或在打包仓库中创建 Issue。