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

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 中提供 debrpm 软件包,作为名为 isv:kubernetes:addons:cri-o 的专用子项目的一部分。该项目作为一个伞形项目,提供 stable(用于 CRI-O 标签)和 prerelease(用于 CRI-O release-1.ymain 分支)软件包构建。

稳定版本

预发布版本

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

通过运行 kubeadm init 命令来引导使用 kubeadm 的集群,该命令会自动检测 CRI-O 是否在后台运行。还提供了 Fedora 38Ubuntu 22.04Vagrantfile 示例,用于配合 kubeadm 测试软件包。

工作原理揭秘

所有与这些软件包相关的内容都存放在新的CRI-O 打包仓库中。它包含一个 每日协调 GitHub Actions 工作流,适用于所有支持的 CRI-O 发布分支和标签。OBS 工作流中的测试管道确保软件包在发布前能够正确安装和使用。所有软件包的预发布和发布都借助 Kubernetes Release Toolbox (krel) 完成,该工具也用于官方 Kubernetes debrpm 软件包。

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

CRI-O 维护者乐于听取关于新打包工作的任何反馈或建议!感谢您阅读这篇博文,欢迎通过 Kubernetes Slack 频道 #crio 或在打包仓库中创建 issue 来联系维护者。