本文已超过一年。较旧的文章可能包含过时内容。请检查页面信息自发布以来是否已失效。
CRI-O 正在迁移到 pkgs.k8s.io
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 在 OBS 中提供 deb
和 rpm
软件包,作为名为 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
更旧的发布分支,因为已合并到 main
中的 CI 要求需要适当的工作才能回迁到 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
命令来引导使用 kubeadm
的集群,该命令会自动检测 CRI-O 是否在后台运行。还提供了 Fedora 38 和 Ubuntu 22.04 的 Vagrantfile
示例,用于配合 kubeadm
测试软件包。
工作原理揭秘
所有与这些软件包相关的内容都存放在新的CRI-O 打包仓库中。它包含一个 每日协调 GitHub Actions 工作流,适用于所有支持的 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 或在打包仓库中创建 issue 来联系维护者。