Операционная среда курса — centos7u6.
Получить исходный код Alibaba Cloud YUM
# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Посмотреть программное обеспечение Containerd в исходном коде YUM
# список ням | grep контейнер
Containerd.io.x86_64 1.4.12-3.1.el7 docker-ce-stable
Установите программное обеспечение Containerd.io,Вы можете установить Containerd
# yum -y установитьContainerd.io
использовать обороты в минуту -qa команда, чтобы проверить, установлен ли он
# rpm -qa | grep containerd
containerd.io-1.4.12-3.1.el7.x86_64
Установите запуск службы контейнера и автоматический запуск при загрузке
# systemctl включение контейнера
# systemctl запуск контейнера
Проверьте статус запуска службы контейнера
# systemctl status containerd
● containerd.service - containerd container runtime
Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)
Active: active (running) since шесть 2023-08-05 19:25:57 CST; 46s ago
Docs: https://containerd.io
Process: 13319 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Main PID: 13323 (containerd)
Tasks: 10
Memory: 20.4M
CGroup: /system.slice/containerd.service
└─13323 /usr/bin/containerd
......
Команду ctr также можно использовать при установке Containerd. Команда ctr в основном используется для управления изображениями контейнеров и контейнеров.
Используйте команду ctr для просмотра информации о клиенте и сервере Containerd.
# ctr version
Client:
Version: 1.6.22
Revision: 8165feabfdfe38c65b599c4993d227328c231fca
Go version: go1.19.11
Server:
Version: 1.6.22
Revision: 8165feabfdfe38c65b599c4993d227328c231fca
UUID: a588fcfe-122c-4b3a-a25a-95eadd30d3a7
Containerd имеет два установочных пакета:
containerd-xxx
,Пакет такого типа не является проблемой для автономного тестирования.,Не включает runC,Нужно заранее установить.cri-containerd-cni-xxxx
,Содержит необходимые связанные файлы в runc и k8s. Этот пакет необходим в кластере k8s. Хотя runC включен,Но он опирается на seccomp (режим безопасных вычислений) в системе.,Это режим, ограничивающий использование системных ресурсов. )Загрузите установочный пакет Containerd
# wget https://github.com/containerd/containerd/releases/download/v1.6.0/cri-containerd-cni-1.6.0-linux-amd64.tar.gz
Посмотреть полученный установочный пакет
#лс
cri-containerd-cni-1.6.0-linux-amd64.tar.gz
Разархивируйте скачанный пакет
# tar xf cri-containerd-cni-1.6.0-linux-amd64.tar.gz
Посмотреть разархивированный каталог
#лс
и т. д. выберите USR
Проверьте каталог и т. д., который в основном содержит файл конфигурации управления службамиContainerd и файл конфигурации виртуальной сетевой карты cni.
# ls etc
cni crictl.yaml systemd
# ls etc/systemd/
system
# ls etc/systemd/system/
containerd.service
Проверьте каталог opt, в основном на наличие файла конфигурации контейнера и подключаемого модуля cni, используемого в среде gce.
# ls opt
cni containerd
# ls opt/containerd/
cluster
# ls opt/containerd/cluster/
gce version
# ls opt/containerd/cluster/gce
cloud-init cni.template configure.sh env
Проверьте каталог usr, который в основном представляет собой файл времени выполнения контейнера, включая runc.
# ls usr
local
# ls usr/local/
bin sbin
# ls usr/local/bin
containerd containerd-shim containerd-shim-runc-v1 containerd-shim-runc-v2 containerd-stress crictl critest ctd-decoder ctr
# ls usr/local/sbin
runc
Проверьте файлContainerd.service, чтобы узнать, где установлен файлContainerd.
# cat etc/systemd/system/containerd.service
# Copyright The containerd Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd #Просмотрите это местоположение и поместите сюда двоичный файлContainerd, чтобы завершить установку.
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
Проверьте каталог хост/usr/local/bin, там ничего нет.
# ls /usr/local/bin/
Проверьте распакованный каталог usr/local/bin, который содержит файл времени выполнения контейнера.
# ls usr/
local
# ls usr/local/
bin sbin
# ls usr/local/bin/
containerd containerd-shim containerd-shim-runc-v1 containerd-shim-runc-v2 containerd-stress crictl critest ctd-decoder ctr
скопировать файлcontainerd в каталог /usr/local/bin. На этот раз вы можете скопироватьcontainerd только один файл или скопировать все файлы.
# cp usr/local/bin/containerd /usr/local/bin/
# ls /usr/local/bin/
containerd
Просмотр распакованного каталога etc/system
# ls etc
cni crictl.yaml systemd
# ls etc/systemd/
system
# ls etc/systemd/system/
containerd.service
скопировать файл конфигурации управления сервисомcontainerd в каталог /usr/lib/systemd/system/
# cp etc/systemd/system/containerd.service /usr/lib/systemd/system/containerd.service
Посмотреть результаты после копирования
# ls /usr/lib/systemd/system/containerd.service
/usr/lib/systemd/system/containerd.service
# containerd --help
NAME:
containerd -
__ _ __
_________ ____ / /_____ _(_)___ ___ _________/ /
/ ___/ __ \/ __ \/ __/ __ `/ / __ \/ _ \/ ___/ __ /
/ /__/ /_/ / / / / /_/ /_/ / / / / / __/ / / /_/ /
\___/\____/_/ /_/\__/\__,_/_/_/ /_/\___/_/ \__,_/
......
Containerd Файл конфигурации по умолчанию: /etc/containerd/config.toml
,Можно использоватьcontainerd config default > /etc/containerd/config.toml
Команда создания файла конфигурации модуля
Создать каталог файла конфигурации
# mkdir /etc/containerd
Создать файл конфигурации
# containerd config default > /etc/containerd/config.toml
Посмотреть файл конфигурации
# кот /etc/containerd/config.toml
Однако позже в приведенный выше файл конфигурации будет внесено много изменений. Здесь мы напрямую меняем его на файл конфигурации, который можно использовать на автономном компьютере или в среде k8s, и настраиваем ускоритель изображений (см. Конфигурацию).
# vim /etc/containerd/config.toml
# cat /etc/containerd/config.toml
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = -999
[grpc]
address = "/run/containerd/containerd.sock"
uid = 0
gid = 0
max_recv_message_size = 16777216
max_send_message_size = 16777216
[debug]
address = ""
uid = 0
gid = 0
level = ""
[metrics]
address = ""
grpc_histogram = false
[cgroup]
path = ""
[plugins]
[plugins.cgroups]
no_prometheus = false
[plugins.cri]
stream_server_address = "127.0.0.1"
stream_server_port = "0"
enable_selinux = false
sandbox_image = "easzlab/pause-amd64:3.2" # Настроенный образ песочницы
stats_collect_period = 10
systemd_cgroup = false
enable_tls_streaming = false
max_container_log_line_size = 16384
[plugins.cri.containerd]
snapshotter = "overlayfs"
no_pivot = false
[plugins.cri.containerd.default_runtime]
runtime_type = "io.containerd.runtime.v1.linux"
runtime_engine = ""
runtime_root = ""
[plugins.cri.containerd.untrusted_workload_runtime]
runtime_type = ""
runtime_engine = ""
runtime_root = ""
[plugins.cri.cni]
bin_dir = "/opt/kube/bin"
conf_dir = "/etc/cni/net.d"
conf_template = "/etc/cni/net.d/10-default.conf"
[plugins.cri.registry]
[plugins.cri.registry.mirrors]
[plugins.cri.registry.mirrors."docker.io"]
endpoint = [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
]
[plugins.cri.registry.mirrors."gcr.io"]
endpoint = [
"https://gcr.mirrors.ustc.edu.cn"
]
[plugins.cri.registry.mirrors."k8s.gcr.io"]
endpoint = [
"https://gcr.mirrors.ustc.edu.cn/google-containers/"
]
[plugins.cri.registry.mirrors."quay.io"]
endpoint = [
"https://quay.mirrors.ustc.edu.cn"
]
[plugins.cri.registry.mirrors."harbor.kubemsb.com"] #Здесь добавлен локальный контейнерный зеркальный склад Гавань, как местный зеркальный склад.
endpoint = [
"http://harbor.kubemsb.com"
]
[plugins.cri.x509_key_pair_streaming]
tls_cert_file = ""
tls_key_file = ""
[plugins.diff-service]
default = ["walking"]
[plugins.linux]
shim = "containerd-shim"
runtime = "runc"
runtime_root = ""
no_shim = false
shim_debug = false
[plugins.opt]
path = "/opt/containerd"
[plugins.restart]
interval = "10s"
[plugins.scheduler]
pause_threshold = 0.02
deletion_threshold = 0
mutation_threshold = 100
schedule_delay = "0s"
startup_delay = "100ms"
# systemctl enable containerd
Created symlink from /etc/systemd/system/multi-user.target.wants/containerd.service to /usr/lib/systemd/system/containerd.service.
# systemctl start containerd
# systemctl status containerd
● containerd.service - containerd container runtime
Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)
Active: active (running) since день 2023-08-06 14:11:12 CST; 5s ago
Docs: https://containerd.io
Process: 20523 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Main PID: 20525 (containerd)
Tasks: 13
Memory: 26.1M
CGroup: /system.slice/containerd.service
└─20525 /usr/local/bin/containerd
......
# ls usr/local/bin/
containerd containerd-shim containerd-shim-runc-v1 containerd-shim-runc-v2 containerd-stress crictl critest ctd-decoder ctr
# cp usr/local/bin/ctr /usr/bin/
# ctr version
Client:
Version: v1.6.0
Revision: 39259a8f35919a0d02c9ecc2871ddd6ccf6a7c6e
Go version: go1.17.2
Server:
Version: v1.6.0
Revision: 39259a8f35919a0d02c9ecc2871ddd6ccf6a7c6e
UUID: c1972cbe-884a-41b0-867f-f8a58c168e6d
Поскольку runC, входящий в двоичный пакет, требует, чтобы поддержка seccomp была установлена в системе по умолчанию и ее необходимо устанавливать отдельно, а разные версии runC имеют одинаковые требования к версии seccomp, рекомендуется загрузить и установить двоичный пакет runC отдельно. , который содержит поддержку модуля seccomp.
Загрузите с помощью wget
# wget https://github.com/opencontainers/runc/releases/download/v1.1.0/runc.amd64
Просмотр загруженных файлов
#лс
runc.amd64
Установите runC
# mv runc.amd64 /usr/sbin/runc
Добавьте разрешения на исполняемый файл в runC
# chmod +x /usr/sbin/runc
Используйте команду runc, чтобы проверить успешность установки.
# запуск -v
запустить версию 1.1.0
зафиксировать: v1.1.0-0-g067aaf85
спецификация: 1.0.2-dev
идти: идти1.17.6
libseccomp: 2.5.3