本文发布时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已不正确。

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 中提供了一个名为isv:kubernetes:addons:cri-o的专用子项目中的 debrpm 软件包。该项目充当一个总括,并提供 stable(用于 CRI-O 标签)以及 prerelease(用于 CRI-O release-1.ymain 分支)软件包构建。

稳定版本

预发布版本

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.28stable:/v1.29prerelease:/v1.28prerelease:/v1.29

可以使用运行 kubeadm init 命令来引导使用 kubeadm 的集群,该命令会自动检测到 CRI-O 在后台运行。还有Fedora 38以及Ubuntu 22.04Vagrantfile 示例可用于测试软件包与 kubeadm 的集成。

其工作原理

与这些软件包相关的一切都位于新的CRI-O 打包存储库中。它包含一个每日协调GitHub 操作工作流,用于所有支持的 CRI-O 发布分支和标签。OBS 工作流中的一个测试管道确保软件包可以在发布之前正确安装和使用。软件包的所有暂存和发布都是在Kubernetes Release Toolbox (krel)的帮助下完成的,该工具也用于官方的 Kubernetes debrpm 软件包。

软件包构建输入将进行每日协调,并将由 CRI-O 的静态二进制捆绑包提供。这些捆绑包是为 CRI-O CI 中的每个提交构建和签名的,并且包含 CRI-O 在特定架构上运行所需的一切。静态构建是可重现的,由nixpkgs提供支持,并且仅适用于 x86_64aarch64ppc64le 架构。

CRI-O 维护人员很乐意听取有关新打包工作的任何反馈或建议!感谢您阅读这篇博客文章,请随时通过 Kubernetes Slack 频道 #crio 联系维护人员,或在打包存储库中创建一个问题。