新版本的kubernetes不在使用docker作为容器运行时,而是直接使用containerd。因此在安装kubernetes时需要安装containerd。
安装
安装containerd非常简单,配置好yum仓库,一条yum命令即可安装成功。
#containerd网络仓库配置
dnf install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
添加仓库自:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install containerd
安装完成之后需要修改配置文件。containerd安装完成后会默认在/etc/containerd/目录下生成一个配置文件config.toml,但是该文件缺少很多信息,因此我们需要重新生成一个配置文件,然后对新生成的配置文件进行修改。
#生成新配置文件
containerd config default > /etc/containerd/config.toml
修改配置信息
修改Cgroup为systemd
在[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 下找到SystemdCgroup,将false改为true
修改sandbox镜像地址
把配置文件中的
sandbox_image = "registry.k8s.io/pause:3.6"
改为阿里云的地址
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8"
sandbox_image 是容器运行时(如 containerd、CRI-O 等)或容器编排系统(如 Kubernetes)中一个关键配置参数,用于指定 沙箱容器(Sandbox Container) 的基础镜像。
沙箱容器是一个特殊的容器,用于为其他容器提供共享的底层环境(如网络、IPC 命名空间等)。例如:在 Kubernetes 中,每个 Pod 的第一个容器就是沙箱容器(称为 pause 容器),它负责维持 Pod 的网络命名空间。
配置镜像加速
# 修改配置文件,添加配置镜像加速相关信息的配置文件的路径
vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"
# 创建文件夹
mkdir -p /etc/containerd/certs.d/docker.io
#创建配置文件
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://docker.1ms.run"]
capabilities = ["pull", "resolve"]
EOF
说明:该配置方式对crictl命令有效,对ctr命令无效,使用ctr下载镜像时,需要指定镜像的地址和版本,如: ctr --debug=true image pull docker.1ms.run/busybox:latest
tree containerd/
containerd/
├── certs.d
│ └── docker.io
│ └── hosts.toml
└── config.toml
2 directories, 2 files
安装crictl工具
#下载源码包
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.29.0/crictl-v1.29.0-linux-amd64.tar.gz
#解压缩
tar zxvf crictl-v1.29.0-linux-amd64.tar.gz -C /usr/local/bin
# -C:指定解压缩后文件存放的位置
修改配置文件
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
# 重启containerd
systemctl restart containerd
或者通过命令行工具修改
crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl config image-endpoint unix:///run/containerd/containerd.sock
安装cni插件
在没有安装cni插件时,containerd会报错缺少cni插件。
#下载安装包
wget https://github.com/containernetworking/plugins/releases/download/v1.4.0/cni-plugins-linux-amd64-v1.4.0.tgz
#创建目录
mkdir -p /opt/cni/bin/
#解压缩
tar xzvf cni-plugins-linux-amd64-v1.4.0.tgz -C /opt/cni/bin/
修改配置文件
mkdir -p /etc/cni/net.d/
cat > /etc/cni/net.d/10-containerd-net.conflist <<EOF
{
"cniVersion": "1.0.0",
"name": "containerd-net",
"plugins": [
{
"type": "bridge",
"bridge": "cni0",
"isGateway": true,
"ipMasq": true,
"promiscMode": true,
"ipam": {
"type": "host-local",
"ranges": [
[{
"subnet": "10.88.0.0/16"
}],
[{
"subnet": "2001:4860:4860::/64"
}]
],
"routes": [
{ "dst": "0.0.0.0/0" },
{ "dst": "::/0" }
]
}
},
{
"type": "portmap",
"capabilities": {"portMappings": true}
}
]
}
EOF
[root@rocky9 ~]# systemctl restart containerd
[root@rocky9 ~]# crictl info
……
#重启containerd即可
下载镜像示例
[root@node-001 docker.io]# crictl pull httpd
Image is up to date for sha256:83d938198316505b3aebd52bed1e54e5f2a49591cc41e09a30f480e5c00ea0cf
[root@node-001 docker.io]# crictl pull nginx
Image is up to date for sha256:53a18edff8091d5faff1e42b4d885bc5f0f897873b0b8f0ace236cd5930819b0
[root@node-001 docker.io]# crictl pull bitnami/php-fpm
Image is up to date for sha256:0fdfdfd1cd46d5ef32ed47af20e8ae3ad58b0f4d62516519994bf74b8f6611a5
[root@node-001 docker.io]# crictl images ls
IMAGE TAG IMAGE ID SIZE
docker.1ms.run/calico/cni v3.25.0 d70a5947d57e5 88MB
docker.1ms.run/calico/node v3.25.0 08616d26b8e74 87.2MB
docker.io/bitnami/php-fpm latest 0fdfdfd1cd46d 115MB
docker.io/library/httpd latest 83d9381983165 58.5MB
docker.io/library/nginx latest 53a18edff8091 72.2MB
registry.aliyuncs.com/google_containers/kube-proxy v1.28.0 ea1030da44aa1 24.6MB
registry.aliyuncs.com/google_containers/pause 3.9 e6f1816883972 322kB
评论 (0)