在容器实践线路图中介绍了容器技术选型,关于容器运行时,提到了CRI规范与CRI-O实现,使用CRI-O可以在运行时完全替代docker。CRI-O提供了crictl工具,类似docker client,可以pull镜像、ps容器进程、attach到容器进程内等等,除了build与tag/push镜像没提供之外,其他都有了。至于为何不提供镜像build/tag/push操作,官方解释是crictl不是替代docker,呵呵。 本文介绍如何使用CRI-O运行时替换docker运行时,基于CRI-O对接Kubernetes编排。本文所有环境都基于 CentOS7.6 操作系统,内核版本为 3.10.0-957.21.3.el7.x86_64 。
1. 安装CRI-O
- 启用内核模块
modprobe overlay
modprobe br_netfilter
- 设置内核参数
# Setup required sysctl params, these persist across reboots.
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system
- 安装CRI-O
# Install prerequisites
yum install yum-utils
yum-config-manager --add-repo=https://cbs.centos.org/repos/paas7-crio-311-candidate/x86_64/os/
# Install CRI-O
yum install --nogpgcheck cri-o
- 配置 CRI-O,设置 crio pause 镜像下载地址为阿里云镜像仓库
默认配置在 /etc/crio/crio.conf
sed -i "s/pause_image = .*/pause_image = \"registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause:3.1\"/g" /etc/crio/crio.conf
- 启动 CRI-O
systemctl start crio
- 验证 CRI-O 部署
curl -v --unix-socket /var/run/crio/crio.sock http://localhost/info
{"storage_d