containerd

containerd 提供了两种压缩包:

  • containerd-${version}-${os}-${arch}.tar.gz,这个压缩包中仅包含了 containerd 相关的二进制文件
  • cri-containerd-cni-${version}-${os}-${arch}.tar.gz,除了 containerd 相关的二进制,还包含了 runc(containerd 运行所依赖的底层容器运行时)以及相关命令的二进制(比如 ctr),如果作为k8s的容器运行时,建议直接选择第二种压缩包。

containerd-1.5.3-linux-amd64.tar.gz

/Downloads/containerd-1.5.3-linux-amd64$ tree
.
└── bin
    ├── containerd
    ├── containerd-shim
    ├── containerd-shim-runc-v1
    ├── containerd-shim-runc-v2
    └── ctr

1 directory, 5 files

cri-containerd-cni-1.5.3-linux-amd64.tar.gz

/Downloads/cri-containerd-cni-1.5.3-linux-amd64$ tree
.
├── etc
│   ├── cni
│   │   └── net.d
│   │       └── 10-containerd-net.conflist
│   ├── crictl.yaml
│   └── systemd
│       └── system
│           └── containerd.service
├── opt
│   ├── cni
│   │   └── bin
│   │       ├── bandwidth
│   │       ├── bridge
│   │       ├── dhcp
│   │       ├── firewall
│   │       ├── flannel
│   │       ├── host-device
│   │       ├── host-local
│   │       ├── ipvlan
│   │       ├── loopback
│   │       ├── macvlan
│   │       ├── portmap
│   │       ├── ptp
│   │       ├── sbr
│   │       ├── static
│   │       ├── tuning
│   │       ├── vlan
│   │       └── vrf
│   └── containerd
│       └── cluster
│           ├── gce
│           │   ├── cloud-init
│           │   │   ├── master.yaml
│           │   │   └── node.yaml
│           │   ├── cni.template
│           │   ├── configure.sh
│           │   └── env
│           └── version
└── usr
    └── local
        ├── bin
        │   ├── containerd
        │   ├── containerd-shim
        │   ├── containerd-shim-runc-v1
        │   ├── containerd-shim-runc-v2
        │   ├── containerd-stress
        │   ├── crictl
        │   ├── critest
        │   ├── ctd-decoder
        │   └── ctr
        └── sbin
            └── runc

16 directories, 36 files

install containerd

curl -fsSL -x https://github.com/containerd/containerd/releases/download/v1.5.3/cri-containerd-cni-1.5.3-linux-amd64.tar.gz | tar xvz -C /

# https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd
mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml
sed -i "s@SystemdCgroup = false@SystemdCgroup = true@g" /etc/containerd/config.toml
sed -i "s@k8s.gcr.io\/pause@registry.aliyuncs.com\/google_containers\/pause@g" /etc/containerd/config.toml

curl -fsSL -x https://github.com/containerd/nerdctl/releases/download/v0.10.0/nerdctl-0.10.0-linux-amd64.tar.gz |tar xvz -C /usr/local/bin nerdctl

systemctl daemon-reload && systemctl enable containerd && systemctl restart containerd

# kubelet选择--container-runtime为containerd
# --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock
root@node1:~# ctr plugins ls
TYPE                            ID                       PLATFORMS      STATUS    
io.containerd.content.v1        content                  -              ok        
io.containerd.snapshotter.v1    aufs                     linux/amd64    ok        
io.containerd.snapshotter.v1    btrfs                    linux/amd64    skip      
io.containerd.snapshotter.v1    devmapper                linux/amd64    error     
io.containerd.snapshotter.v1    native                   linux/amd64    ok        
io.containerd.snapshotter.v1    overlayfs                linux/amd64    ok        
io.containerd.snapshotter.v1    zfs                      linux/amd64    skip      
io.containerd.metadata.v1       bolt                     -              ok        
io.containerd.differ.v1         walking                  linux/amd64    ok        
io.containerd.gc.v1             scheduler                -              ok        
io.containerd.service.v1        introspection-service    -              ok        
io.containerd.service.v1        containers-service       -              ok        
io.containerd.service.v1        content-service          -              ok        
io.containerd.service.v1        diff-service             -              ok        
io.containerd.service.v1        images-service           -              ok        
io.containerd.service.v1        leases-service           -              ok        
io.containerd.service.v1        namespaces-service       -              ok        
io.containerd.service.v1        snapshots-service        -              ok        
io.containerd.runtime.v1        linux                    linux/amd64    ok        
io.containerd.runtime.v2        task                     linux/amd64    ok        
io.containerd.monitor.v1        cgroups                  linux/amd64    ok        
io.containerd.service.v1        tasks-service            -              ok        
io.containerd.internal.v1       restart                  -              ok        
io.containerd.grpc.v1           containers               -              ok        
io.containerd.grpc.v1           content                  -              ok        
io.containerd.grpc.v1           diff                     -              ok        
io.containerd.grpc.v1           events                   -              ok        
io.containerd.grpc.v1           healthcheck              -              ok        
io.containerd.grpc.v1           images                   -              ok        
io.containerd.grpc.v1           leases                   -              ok        
io.containerd.grpc.v1           namespaces               -              ok        
io.containerd.internal.v1       opt                      -              ok        
io.containerd.grpc.v1           snapshots                -              ok        
io.containerd.grpc.v1           tasks                    -              ok        
io.containerd.grpc.v1           version                  -              ok        
io.containerd.grpc.v1           cri                      linux/amd64    ok        

install crio

curl -fsSL https://storage.googleapis.com/k8s-conform-cri-o/artifacts/cri-o.amd64.v1.20.3.tar.gz | tar xvz -C /tmp

cd /tmp/cri-o && ls -l /tmp/cri-o && make install

sed -i "s@k8s.gcr.io\/pause@registry.aliyuncs.com\/google_containers\/pause@g" /etc/crio/crio.conf

cat > /etc/containers/registries.conf <<EOF
unqualified-search-registries = ["docker.io","quay.io"]

[[registry]]
prefix = "docker.io"
location = "hub-mirror.c.163.com"

[[registry.mirror]]
location = "fz5yth0r.mirror.aliyuncs.com"

[[registry.mirror]]
location = "docker.mirrors.ustc.edu.cn"
EOF

systemctl daemon-reload && systemctl enable crio && systemctl restart crio

# kubelet选择--container-runtime为containerd
# --container-runtime=remote --container-runtime-endpoint=unix:///var/run/crio/crio.sock

ref