Бинарная установка Kubernetes (k8s) v1.32.0
Бинарная установка Kubernetes (k8s) v1.32.0

Бинарная установка Kubernetes (k8s) v1.32.0

представлять

https://github.com/cby-chen/Kubernetes Открытый исходный код — это непросто. Пожалуйста, дайте мне звезду за вашу помощь. Спасибо.

Установка и развертывание двоичного кода Kubernetes (k8s) с высокой доступностью поддерживает двойной стек IPv4+IPv6.

Настоятельно рекомендуется ознакомиться с документацией на Github! ! !

Github обновит документацию при возникновении проблемы и обновит новую версию документации как можно скорее! ! !

Ручной проектадрес:https://github.com/cby-chen/Kubernetes

1. Окружающая среда

имя хоста

IP-адрес

иллюстрировать

программное обеспечение

192.168.1.60

Внешний сетевой узел

Загрузите различные необходимые установочные пакеты

Master01

192.168.1.31

главный узел

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、 kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Master02

192.168.1.32

главный узел

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、 kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Master03

192.168.1.33

главный узел

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、 kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Node01

192.168.1.34

узел-узел

kubelet、kube-proxy、nfs-client、nginx

Node02

192.168.1.35

узел-узел

kubelet、kube-proxy、nfs-client、nginx

192.168.1.36

VIP

подробная версия

программное обеспечение

Версия

cni_plugins_version

v1.6.1

cri_containerd_cni_version

2.0.1

crictl_version

v1.32.0

cri_dockerd_version

0.3.16

etcd_version

v3.5.17

cfssl_version

1.6.5

kubernetes_server_version

1.32.0

docker_version

27.4.0

runc_version

1.2.3

kernel_version

5.4.278

helm_version

3.16.3

nginx_version

1.27.3

сегмент сети

IPv4

Физический хост: 192.168.1.0/24.

service:10.96.0.0/12

pod:172.16.0.0/12

IPv6

Физический хост: 2408:822a:732:5ce1::1001/64

Физический хост: fc00::31/8

service:fd00:1111::/112

pod:fc00:2222::/112

Установить Сумка была упакована:https://mirrors.chenby.cn/https://github.com/cby-chen/Kubernetes/releases/download/v1.32.0/kubernetes-v1.32.0.tar

1.1.k8s базовая конфигурация системной среды

1.2.Настройка IP

Язык кода:shell
копировать
# Уведомление!
# Если виртуальная машина клонирована, UUID и MachineID сетевой карты будут повторяться.
# Необходимо восстановить новый UUIDUUIDиMachineID.
# Дублирующиеся UUID и MachineID не могут получить адрес IPV6 через DHCP.
ssh root@192.168.1.153 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
ssh root@192.168.1.158 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
ssh root@192.168.1.159 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
ssh root@192.168.1.160 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
ssh root@192.168.1.161 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
# 
# Просмотр текущего списка сетевых карт UUID:
# nmcli con show
# Удалить, чтобы изменить UUID Сетевое подключение:
# nmcli con delete uuid <Оригинал UUID>
# Регенерировать UUID:
# nmcli con add type ethernet ifname <Имя интерфейса> con-name <новое имя>
# Снова включите сетевое соединение:
# nmcli con up <новое имя>

# Изменить UUID сетевой карты
# Сначала настройте статический IP-адрес, а затем используйте ssh для настройки непрерывного соединения.
ssh root@192.168.1.153 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
ssh root@192.168.1.158 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
ssh root@192.168.1.159 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
ssh root@192.168.1.160 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
ssh root@192.168.1.161 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"

# Объяснение параметра
# 
# ssh ssh root@192.168.1.31
# Используйте SSH для входа на хост с IP-адресом 192.168.1.31 и используйте удостоверение пользователя root.
# 
# nmcli con delete uuid 708a1497-2192-43a5-9f03-2ab936fb3c44
# удалить UUID для 708a1497-2192-43a5-9f03-2ab936fb3c44 сетевое соединение, которое NetworkManager Уникальный идентификатор конкретной конфигурации сети.
# 
# nmcli con add type ethernet ifname ens18 con-name ens18
# Добавьте тип подключения Ethernet,и укажите имя интерфейсадля ens18,Имя соединения также для ens18。
# 
# nmcli con up ens18
# включать ens18 это сетевое соединение.
# 
# Проще говоря,Что делает эта командадаудалитьконкретная конфигурация сетевого подключения,и добавь имядля ens18 Ethernet-соединение, а затем включите это новое соединение.

# Изменить статический адрес IPv4
ssh root@192.168.1.153 "nmcli con mod ens18 ipv4.addresses 192.168.1.31/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.158 "nmcli con mod ens18 ipv4.addresses 192.168.1.32/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.159 "nmcli con mod ens18 ipv4.addresses 192.168.1.33/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.160 "nmcli con mod ens18 ipv4.addresses 192.168.1.34/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.161 "nmcli con mod ens18 ipv4.addresses 192.168.1.35/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"

# Объяснение параметра
# 
# ssh root@192.168.1.154
# Авторизуйтесь на хосте с IP для192.168.1.154 по SSH.,Используйте удостоверение пользователя root.
# 
# "nmcli con mod ens18 ipv4.addresses 192.168.1.31/24"
# Исправлятьens18сеть подключенаIPv4адресдля192.168.1.31,маска подсетидля 24。
# 
# "nmcli con mod ens18 ipv4.gateway 192.168.1.1"
# Исправлятьens18сеть подключенаIPv4шлюздля192.168.1.1。
# 
# "nmcli con mod ens18 ipv4.method manual"
# Подключите сеть ens18 к Метод настройки IPv4 установлен вручную.
# 
# "nmcli con mod ens18 ipv4.dns "8.8.8.8"
# Подключите сеть ens18 к IPv4 Настройки DNS-серверадля 8.8.8.8。
# 
# "nmcli con up ens18"
# Запустите сетевое соединение ens18.
# 
# Вообще говоря, эта команда предназначена для удаленного входа на указанный хост через SSH и использования команд управления сетью. (nmcli) Измените конфигурацию сетевого подключения ens18, включая IP-адрес, шлюз, метод настройки и DNS-сервер, и запустите сетевое подключение.

# У меня есть публичный IPv6-адрес, но он динамический по DHCP, его нельзя исправить, и его неудобно использовать.
# Поэтому я настроил IPv6-адрес интрасети для получения фиксированного адреса доступа.

# Как я это использую. Настройте только адрес IPv6 без настройки DNS шлюза
ssh root@192.168.1.31 "nmcli con mod ens18 ipv6.addresses fc00::31/8; nmcli con up ens18"
ssh root@192.168.1.32 "nmcli con mod ens18 ipv6.addresses fc00::32/8; nmcli con up ens18"
ssh root@192.168.1.33 "nmcli con mod ens18 ipv6.addresses fc00::33/8; nmcli con up ens18"
ssh root@192.168.1.34 "nmcli con mod ens18 ipv6.addresses fc00::34/8; nmcli con up ens18"
ssh root@192.168.1.35 "nmcli con mod ens18 ipv6.addresses fc00::35/8; nmcli con up ens18"

# Маршрутизация DNS по IPv6-адресу, пример
ssh root@192.168.1.31 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::10; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
ssh root@192.168.1.32 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::20; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
ssh root@192.168.1.33 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::30; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
ssh root@192.168.1.34 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::40; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
ssh root@192.168.1.35 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::50; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"

# Объяснение параметра
# 
# ssh root@192.168.1.31
# Подключитесь по SSH к удаленному хосту с IP-адресом для 192.168.1.31.,использоватьrootПользователь входит в систему。
# 
# "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::10"
# использоватьnmcliЗаказ Исправлятьens18ИнтерфейсIPv6адресдляfc00:43f4:1eea:1::10。
# 
# "nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1"
# использоватьnmcliЗаказ Исправлятьens18ИнтерфейсIPv6шлюздляfc00:43f4:1eea:1::1。
# 
# "nmcli con mod ens18 ipv6.method manual"
# использоватьnmcliКоманда будетens18ИнтерфейсIPv6配置方法Исправлятьдля Ручная настройка。
# 
# "nmcli con mod ens18 ipv6.dns "2400:3200::1"
# Используйте команду nmcli для установки IPv6 интерфейса ens18. DNS-сервер для 2400:3200::1.
# 
# "nmcli con up ens18"
# Используйте команду nmcli, чтобы запустить интерфейс ens18.
# 
# Цель этой команды — настроить IPv6-адрес, шлюз, метод настройки и DNS-сервер интерфейса ens18 на удаленном хосте и запустить интерфейс ens18.

# Просмотр конфигурации сетевой карты
# nmcli device show ens18
# nmcli con show ens18
[root@localhost ~]#  cat /etc/NetworkManager/system-connections/ens18.nmconnection 
[connection]
id=ens18
uuid=5fd4642e-4aa4-4b59-8e22-dd38a4611f06
type=ethernet
interface-name=ens18
timestamp=1734243991

[ethernet]

[ipv4]
address1=192.168.1.31/24,192.168.1.1
dns=192.168.1.99;
method=manual

[ipv6]
addr-gen-mode=default
address1=fc00::31/8
method=auto

[proxy]

[root@localhost ~]# 

# Объяснение параметра
# 1. `[connection]`:
#    - `id`: Уникальный идентификатор соединения, используемый для внутренних ссылок.
#    - `uuid`: Универсальный уникальный идентификатор (UUID) соединения, обеспечивающий уникальность внутри системы.
#    - `type`: Укажите тип подключения,В данном случае для Ethernet.
#    - `interface-name`: Имя сетевого интерфейса (ens18), представляющее физический или логический сетевой интерфейс, связанный с этим соединением.
#    - `timestamp`: Временная метка, указывающая, когда конфигурация соединения была изменена в последний раз.
# 2. `[ethernet]`:
#    - Обычно содержит параметры конфигурации, специфичные для Ethernet, такие как MAC-адрес или скорость соединения.
# 3. `[ipv4]`:
#    - `address1`: Укажите IPv4-адрес и маску подсети в нотации CIDR (`192.168.1.31/24`). Также включает IP-адрес шлюза (192.168.1.1).
#    - `dns`: обозначение要использоватьизDNSсервер(В этом случаедля`8.8.8.8`),Обеспечить конвертацию доменного именидляIP-адресозначает。
#    - `method`: Укажите приобретениеIPv4адресиз方法。在В этом случае,Настройка вручную,выражатьIP-адресдастатически настроенный。
# 4. `[ipv6]`:
#    - `addr-gen-mode`: обозначениеIPv6адрес生成模式。настраиватьдляпо умолчанию,в целом意味着адресда根据ИнтерфейсMACадрес生成из。
#    - `method`: Укажите приобретениеIPv6адресиз方法。在В этом случае,настраиватьдляавтоматический,выражатьиспользоватьDHCPv6илиSLAACПодождите, пока протокол автоматически настроится.。
# 5. `[proxy]`:
#    - в целомдля конфигурацииактерское мастерствонастраивать,нравитьсяHTTPилиSOCKSактерское мастерство。

1.3.Установите имя хоста

Язык кода:shell
копировать
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-master02
hostnamectl set-hostname k8s-master03
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02

# Объяснение параметра
# 
# параметр: set-hostname
# объяснять: Это параметр команды hostnamectl, который используется для установки имени хоста системы.
# 
# параметр: k8s-master01
# объяснять: этотда要настраиватьхозяин名,Волясистемахозяин名настраиватьдля"k8s-master01"。

1.4. Настройте источник yum.

Язык кода:shell
копировать
# Исходный адрес других систем
# https://help.mirrors.cernet.edu.cn/

# Для частного склада
sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/\$contentdir|baseurl=http://192.168.1.123/centos|g' -i.bak  /etc/yum.repos.d/CentOS-*.repo

# для Ubuntu
sed -i 's/cn.archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

# источник расширения epel
sudo yum install -y epel-release
sudo sed -e 's!^metalink=!#metalink=!g' \
    -e 's!^#baseurl=!baseurl=!g' \
    -e 's!https\?://download\.fedoraproject\.org/pub/epel!https://mirror.nju.edu.cn/epel!g' \
    -e 's!https\?://download\.example/pub/epel!https://mirror.nju.edu.cn/epel!g' \
    -i /etc/yum.repos.d/epel{,-testing}.repo

# для CentOS 7
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirror.nju.edu.cn/centos|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo

# для CentOS 8
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirror.nju.edu.cn/centos|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo

# дляCentOS 9
cat <<'EOF' > /etc/yum.repos.d/centos.repo
[baseos]
name=CentOS Stream $releasever - BaseOS
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/BaseOS/$basearch/os
# metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[baseos-debuginfo]
name=CentOS Stream $releasever - BaseOS - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/BaseOS/$basearch/debug/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-debug-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[baseos-source]
name=CentOS Stream $releasever - BaseOS - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/BaseOS/source/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-source-$stream&arch=source&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[appstream]
name=CentOS Stream $releasever - AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/AppStream/$basearch/os
# metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[appstream-debuginfo]
name=CentOS Stream $releasever - AppStream - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/AppStream/$basearch/debug/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-debug-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[appstream-source]
name=CentOS Stream $releasever - AppStream - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/AppStream/source/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-source-$stream&arch=source&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[crb]
name=CentOS Stream $releasever - CRB
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/CRB/$basearch/os
# metalink=https://mirrors.centos.org/metalink?repo=centos-crb-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[crb-debuginfo]
name=CentOS Stream $releasever - CRB - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/CRB/$basearch/debug/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-crb-debug-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[crb-source]
name=CentOS Stream $releasever - CRB - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/CRB/source/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-crb-source-$stream&arch=source&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
EOF

cat <<'EOF' > /etc/yum.repos.d/centos-addons.repo
[highavailability]
name=CentOS Stream $releasever - HighAvailability
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/HighAvailability/$basearch/os
# metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0

[highavailability-debuginfo]
name=CentOS Stream $releasever - HighAvailability - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/HighAvailability/$basearch/debug/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-debug-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[highavailability-source]
name=CentOS Stream $releasever - HighAvailability - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/HighAvailability/source/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-source-$stream&arch=source&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[nfv]
name=CentOS Stream $releasever - NFV
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/NFV/$basearch/os
# metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0

[nfv-debuginfo]
name=CentOS Stream $releasever - NFV - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/NFV/$basearch/debug/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-debug-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[nfv-source]
name=CentOS Stream $releasever - NFV - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/NFV/source/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-source-$stream&arch=source&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[rt]
name=CentOS Stream $releasever - RT
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/RT/$basearch/os
# metalink=https://mirrors.centos.org/metalink?repo=centos-rt-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0

[rt-debuginfo]
name=CentOS Stream $releasever - RT - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/RT/$basearch/debug/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-rt-debug-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[rt-source]
name=CentOS Stream $releasever - RT - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/RT/source/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-rt-source-$stream&arch=source&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[resilientstorage]
name=CentOS Stream $releasever - ResilientStorage
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/ResilientStorage/$basearch/os
# metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0

[resilientstorage-debuginfo]
name=CentOS Stream $releasever - ResilientStorage - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/ResilientStorage/$basearch/debug/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-debug-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[resilientstorage-source]
name=CentOS Stream $releasever - ResilientStorage - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/ResilientStorage/source/tree/
# metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-source-$stream&arch=source&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0

[extras-common]
name=CentOS Stream $releasever - Extras packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/SIGs/$releasever-stream/extras/$basearch/extras-common
# metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-$stream&arch=$basearch&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[extras-common-source]
name=CentOS Stream $releasever - Extras packages - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/SIGs/$releasever-stream/extras/source/extras-common
# metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-source-$stream&arch=source&protocol=https,http
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
EOF

1.5. Установите необходимые инструменты.

Язык кода:shell
копировать
# для Ubuntu
apt update && apt upgrade -y && apt install -y wget psmisc vim net-tools nfs-kernel-server telnet lvm2 git tar curl

# для CentOS 7
yum update -y && yum -y install  wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl

# для CentOS 8
yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl

# для CentOS 9
yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl
1.5.1 Загрузка файлов, необходимых в автономном режиме (необязательно)

Установите идентичную систему на интернет-сервере для загрузки необходимых пакетов.

CentOS7
Язык кода:shell
копировать
# Загрузите необходимые инструменты
yum -y install createrepo yum-utils wget epel*

# Загрузите все пакеты зависимостей
repotrack createrepo wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl gcc keepalived haproxy bash-completion chrony sshpass ipvsadm ipset sysstat conntrack libseccomp

# удалитьlibseccomp
rm -rf libseccomp-*.rpm

# Скачать libseccomp
wget http://rpmfind.net/linux/centos/8-stream/BaseOS/x86_64/os/Packages/libseccomp-2.5.1-1.el8.x86_64.rpm

# Создать исходную информацию yum
createrepo -u -d /data/centos7/

# Скопируйте пакет на компьютер во внутренней сети.
scp -r /data/centos7/ root@192.168.1.31:
scp -r /data/centos7/ root@192.168.1.32:
scp -r /data/centos7/ root@192.168.1.33:
scp -r /data/centos7/ root@192.168.1.34:
scp -r /data/centos7/ root@192.168.1.35:

# Создайте файл конфигурации репо на компьютере интрасети.
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/123.repo  << EOF 
[cby]
name=CentOS-$releasever - Media
baseurl=file:///root/centos7/
gpgcheck=0
enabled=1
EOF

# Установите скачанный пакет
yum clean all
yum makecache
yum install /root/centos7/* --skip-broken -y

#### Примечание #####
# После завершения установки может возникнуть проблема, связанная с невозможностью использования yum, поэтому выполните ее еще раз.
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/123.repo  << EOF 
[cby]
name=CentOS-$releasever - Media
baseurl=file:///root/centos7/
gpgcheck=0
enabled=1
EOF
yum clean all
yum makecache
yum install /root/centos7/*.rpm --skip-broken -y

#### Примечание #####
# Установить chrony и libseccomp
# yum install /root/centos7/libseccomp-2.5.1*.rpm -y
# yum install /root/centos7/chrony-*.rpm -y
CentOS8
Язык кода:shell
копировать
# Загрузите необходимые инструменты
yum -y install createrepo yum-utils wget epel*

# Загрузите все пакеты зависимостей
repotrack wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl gcc keepalived haproxy bash-completion chrony sshpass ipvsadm ipset sysstat conntrack libseccomp

# Создать исходную информацию yum
createrepo -u -d /data/centos8/

# Скопируйте пакет на компьютер во внутренней сети.
scp -r centos8/ root@192.168.1.31:
scp -r centos8/ root@192.168.1.32:
scp -r centos8/ root@192.168.1.33:
scp -r centos8/ root@192.168.1.34:
scp -r centos8/ root@192.168.1.35:

# Создайте файл конфигурации репо на компьютере интрасети.
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/123.repo  << EOF 
[cby]
name=CentOS-$releasever - Media
baseurl=file:///root/centos8/
gpgcheck=0
enabled=1
EOF

# Установите скачанный пакет
yum clean all
yum makecache
yum install /root/centos8/* --skip-broken -y

#### Примечание #####
# После завершения установки может возникнуть проблема, связанная с невозможностью использования yum, поэтому выполните ее еще раз.
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/123.repo  << EOF 
[cby]
name=CentOS-$releasever - Media
baseurl=file:///root/centos8/
gpgcheck=0
enabled=1
EOF
yum clean all
yum makecache
yum install /root/centos8/*.rpm --skip-broken -y
CentOS9
Язык кода:shell
копировать
# Загрузите необходимые инструменты
yum -y install createrepo yum-utils wget epel*

# Загрузите все пакеты зависимостей
repotrack wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl
# Создать исходную информацию yum
createrepo -u -d centos9/

# Скопируйте пакет на компьютер во внутренней сети.
scp -r centos9/ root@192.168.1.31:
scp -r centos9/ root@192.168.1.32:
scp -r centos9/ root@192.168.1.33:
scp -r centos9/ root@192.168.1.34:
scp -r centos9/ root@192.168.1.35:

# Создайте файл конфигурации репо на компьютере интрасети.
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/123.repo  << EOF 
[cby]
name=CentOS-$releasever - Media
baseurl=file:///root/centos9/
gpgcheck=0
enabled=1
EOF

# Установите скачанный пакет
yum clean all
yum makecache
yum install /root/centos9/*.rpm --skip-broken -y
Загрузка пакетов и зависимостей Ubuntu
Язык кода:shell
копировать
#!/bin/bash

logfile=123.log
ret=""
function getDepends()
{
   echo "fileName is" $1>>$logfile
   # use tr to del < >
   ret=`apt-cache depends $1|grep Depends |cut -d: -f2 |tr -d "<>"`
   echo $ret|tee  -a $logfile
}
# Нужно получить пакеты, это зависит от
libs="wget psmisc vim net-tools nfs-kernel-server telnet lvm2 git tar curl gcc keepalived haproxy bash-completion chrony sshpass ipvsadm ipset sysstat conntrack libseccomp"

# download libs dependen. deep in 3
i=0
while [ $i -lt 3 ] ;
do
    let i++
    echo $i
    # download libs
    newlist=" "
    for j in $libs
    do
        added="$(getDepends $j)"
        newlist="$newlist $added"
        apt install $added --reinstall -d -y
    done

    libs=$newlist
done

# Создать исходную информацию
apt install dpkg-dev
sudo cp /var/cache/apt/archives/*.deb /data/ubuntu/ -r
dpkg-scanpackages . /dev/null |gzip > /data/ubuntu/Packages.gz -r

# Скопируйте пакет на компьютер во внутренней сети.
scp -r ubuntu/ root@192.168.1.31:
scp -r ubuntu/ root@192.168.1.32:
scp -r ubuntu/ root@192.168.1.33:
scp -r ubuntu/ root@192.168.1.34:
scp -r ubuntu/ root@192.168.1.35:

# Настройте источник apt на машине интрасети.
vim /etc/apt/sources.list
cat /etc/apt/sources.list
deb file:////root/ ubuntu/

# УстановитьdebСумка
apt install ./*.deb

1.6. Для выборочной загрузки требуются инструменты.

Язык кода:shell
копировать
#!/bin/bash

# Посмотреть адрес версии:
# 
# https://github.com/containernetworking/plugins/releases/
# https://github.com/containerd/containerd/releases/
# https://github.com/kubernetes-sigs/cri-tools/releases/
# https://github.com/Mirantis/cri-dockerd/releases/
# https://github.com/etcd-io/etcd/releases/
# https://github.com/cloudflare/cfssl/releases/
# https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG
# https://download.docker.com/linux/static/stable/x86_64/
# https://github.com/opencontainers/runc/releases/
# https://github.com/helm/helm/tags
# http://nginx.org/download/

# Version numbers
cni_plugins_version='v1.6.1'
cri_containerd_cni_version='2.0.1'
crictl_version='v1.32.0'
cri_dockerd_version='0.3.16'
etcd_version='v3.5.17'
cfssl_version='1.6.5'
kubernetes_server_version='1.32.0'
docker_version='27.4.0'
runc_version='1.2.3'
kernel_version='5.4.278'
helm_version='3.16.3'
nginx_version='1.27.3'

# URLs 
base_url='https://mirrors.chenby.cn/https://github.com'
kernel_url="http://mirrors.tuna.tsinghua.edu.cn/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-${kernel_version}-1.el7.elrepo.x86_64.rpm"
runc_url="${base_url}/opencontainers/runc/releases/download/v${runc_version}/runc.amd64"
docker_url="https://mirrors.ustc.edu.cn/docker-ce/linux/static/stable/x86_64/docker-${docker_version}.tgz"
cni_plugins_url="${base_url}/containernetworking/plugins/releases/download/${cni_plugins_version}/cni-plugins-linux-amd64-${cni_plugins_version}.tgz"
cri_containerd_cni_url="${base_url}/containerd/containerd/releases/download/v${cri_containerd_cni_version}/containerd-${cri_containerd_cni_version}-linux-amd64.tar.gz"
crictl_url="${base_url}/kubernetes-sigs/cri-tools/releases/download/${crictl_version}/crictl-${crictl_version}-linux-amd64.tar.gz"
cri_dockerd_url="${base_url}/Mirantis/cri-dockerd/releases/download/v${cri_dockerd_version}/cri-dockerd-${cri_dockerd_version}.amd64.tgz"
etcd_url="${base_url}/etcd-io/etcd/releases/download/${etcd_version}/etcd-${etcd_version}-linux-amd64.tar.gz"
cfssl_url="${base_url}/cloudflare/cfssl/releases/download/v${cfssl_version}/cfssl_${cfssl_version}_linux_amd64"
cfssljson_url="${base_url}/cloudflare/cfssl/releases/download/v${cfssl_version}/cfssljson_${cfssl_version}_linux_amd64"
helm_url="https://mirrors.huaweicloud.com/helm/v${helm_version}/helm-v${helm_version}-linux-amd64.tar.gz"
kubernetes_server_url="https://cdn.dl.k8s.io/release/v${kubernetes_server_version}/kubernetes-server-linux-amd64.tar.gz"
nginx_url="http://nginx.org/download/nginx-${nginx_version}.tar.gz"

# Download packages
packages=(
  # $kernel_url
  $runc_url
  $docker_url
  $cni_plugins_url
  $cri_containerd_cni_url
  $crictl_url
  $cri_dockerd_url
  $etcd_url
  $cfssl_url
  $cfssljson_url
  $helm_url
  $kubernetes_server_url
  $nginx_url
)

for package_url in "${packages[@]}"; do
  filename=$(basename "$package_url")
  if curl --parallel --parallel-immediate -k -L -C - -o "$filename" "$package_url"; then
    echo "Downloaded $filename"
  else
    echo "Failed to download $filename"
    exit 1
  fi
done

1.7. Отключите брандмауэр.

Язык кода:shell
копировать
# Ubuntu игнорирует, CentOS выполняет
systemctl disable --now firewalld

1.8. Отключите SELinux.

Язык кода:shell
копировать
# Ubuntu игнорирует, CentOS выполняет
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

# Объяснение параметра
# 
# setenforce 0
# Эта команда используется для установки SELinux режим исполнения. 0 значит закрыто SELinux。
# 
# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
# Эта команда использует sed Инструменты для редактирования /etc/selinux/config документ. в '-i' Этот параметр означает непосредственное изменение исходного файла вместо вывода его на терминал или в другой файл. 's#SELINUX=принудительный#SELINUX=отключено#g' да sed команда замены, которая заменит все "SELINUX=enforcing" Заменить для «SELINUX=отключено». Вот '#' да разделитель,используется для замены традиционных '/' разделитель, чтобы избежать конфликтов с '/' конфликт.

1.9 Закройте раздел подкачки.

Язык кода:shell
копировать
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a && sysctl -w vm.swappiness=0

cat /etc/fstab
# /dev/mapper/centos-swap swap                    swap    defaults        0 0


# Объяснение параметра:
# 
# -ri: Этот параметр используется для замены совпадающих шаблонов в исходном файле. -r представляет собой расширенное регулярное выражение, а -i позволяет напрямую изменять файл.
# 's/.*swap.*/#&/': этотдаодинsedЗаказ,Используется для поиска строки, содержащей своп, в файле /etc/fstab.,И добавьте # в начале строки, чтобы закомментировать ее.
# /etc/fstab: этотдаодиндокументпуть,То есть файл /etc/fstab,используется для хранения файловсистемаповерхность。
# swapoff -a: Эта команда используется для закрытия всех включенных разделов подкачки.
# sysctl -w vm.swappiness=0: этот个Заказ用于Исправлятьvm.swappinessзначение параметрадля0,выражатьсистема在物理内存充足час更倾向于использовать物理内存而非交换分区。

1.10 Настройка сети (выберите один из двух способов)

Язык кода:shell
копировать
# Ubuntu игнорирует, CentOS выполняет,CentOS9 не поддерживает Способ 1

# Способ 1
# systemctl disable --now NetworkManager
# systemctl start network && systemctl enable network

# Способ 2
cat > /etc/NetworkManager/conf.d/calico.conf << EOF 
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*
EOF
systemctl restart NetworkManager

# Объяснение параметра
#
# Этот параметр используется для указания того, будет ли NetworkManager управляемые устройства. Он состоит из следующих двух частей
# 
# interface-name:cali*
# Выражено с помощью "cali" Имена интерфейсов, начинающиеся с, исключаются из NetworkManager внешнее управление. Например, «кали0», "cali1" На интерфейс ожидания не влияет NetworkManager управлять.
# 
# interface-name:tunl*
# Выражено с помощью "tunl" Имена интерфейсов, начинающиеся с, исключаются из NetworkManager внешнее управление. Например, «тунл0», "tunl1" На интерфейс ожидания не влияет NetworkManager управлять.
# 
# Используя этот параметр, определенные интерфейсы можно исключить из NetworkManager вне сферы управления,чтобы другие инструментыили Процессами можно управлять независимои配置этот些接口。

1.11. Синхронизация времени.

Язык кода:shell
копировать
# Сервер
# apt install chrony -y
yum install chrony -y
cat > /etc/chrony.conf << EOF 
pool ntp.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.1.0/24
local stratum 10
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
EOF

systemctl restart chronyd ; systemctl enable chronyd

# клиент
# apt install chrony -y
yum install chrony -y
cat > /etc/chrony.conf << EOF 
pool 192.168.1.31 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
EOF

systemctl restart chronyd ; systemctl enable chronyd

#использоватьклиент进行验证
chronyc sources -v

# Объяснение параметра
#
# pool ntp.aliyun.com iburst
# обозначениеиспользоватьntp.aliyun.comделатьдлячас间сервер池,iburst选项выражать在初始同步час会发送多个请求к加快同步速度。
# 
# driftfile /var/lib/chrony/drift
# Указывает путь к файлу для сохранения информации о отклонении тактового сигнала.
# 
# makestep 1.0 3
# Установите, что если разница между системным временем и временем сервера превышает 1 секунду, она будет корректироваться с шагом в 1 секунду. Если отклонение превышает 3 секунды, корректировка времени производится немедленно.
# 
# rtcsync
# Включение функции аппаратной синхронизации часов может повысить точность часов.
# 
# allow 192.168.0.0/24
# Разрешить 192.168.0.0/24сегмент Хосты в пределах сети синхронизируются по времени с помощью chrony.
# 
# local stratum 10
# Воля本地час钟设дляstratum 10. Значение страты представляет точность часов. Чем меньше значение, тем выше точность.
# 
# keyfile /etc/chrony.keys
# Указывает путь к файлу ключей, используемому для аутентификации синхронизации времени.
# 
# leapsectz right/UTC
# обозначениечас区дляUTC。
# 
# logdir /var/log/chrony
# Укажите каталог хранения файлов журнала.

1.12.Настроить ulimit

Язык кода:shell
копировать
ulimit -SHn 65535
cat >> /etc/security/limits.conf <<EOF
* soft nofile 655360
* hard nofile 131072
* soft nproc 655350
* hard nproc 655350
* seft memlock unlimited
* hard memlock unlimitedd
EOF

# Объяснение параметра
#
# soft nofile 655360
# softвыражать软限制,nofile указывает максимальное количество файлов, которые может открыть процесс.,по умолчанию值для1024。этот里из软限制настраиватьдля655360,Прямо сейчасодин进程可打开из最大документ数для655360。
#
# hard nofile 131072
# hardвыражать硬限制,Прямо сейчассистеманастраиватьиз最大值。nofile указывает максимальное количество файлов, которые может открыть процесс.,по умолчанию值для4096。этот里из硬限制настраиватьдля131072,Прямо сейчассистеманастраиватьиз最大документ数для131072。
#
# soft nproc 655350
# softвыражать软限制,nproc представляет максимальное количество процессов, которые может создать пользователь.,по умолчанию值для30720。этот里из软限制настраиватьдля655350,Прямо сейчасодин用户可创建из最大进程数для655350。
#
# hard nproc 655350
# hardвыражать硬限制,Прямо сейчассистеманастраиватьиз最大值。nproc представляет максимальное количество процессов, которые может создать пользователь.,по умолчанию值для4096。этот里из硬限制настраиватьдля655350,Прямо сейчассистеманастраиватьиз最大进程数для655350。
#
# seft memlock unlimited
# seftвыражать软限制,memlock представляет собой максимальный объем памяти, который процесс может заблокировать в ОЗУ.,по умолчанию值для64 KB。этот里из软限制настраиватьдляunlimited,Прямо сейчасодин进程可锁定из最大内存для Безлимитный。
#
# hard memlock unlimited
# hardвыражать硬限制,Прямо сейчассистеманастраиватьиз最大值。memlock представляет собой максимальный объем памяти, который процесс может заблокировать в ОЗУ.,по умолчанию值для64 KB。этот里из硬限制настраиватьдляunlimited,Прямо сейчассистеманастраиватьиз最大内存锁定для Безлимитный。

1.13. Настройте вход без пароля.

Язык кода:shell
копировать
# apt install -y sshpass
yum install -y sshpass
ssh-keygen -f /root/.ssh/id_rsa -P ''
export IP="192.168.1.31 192.168.1.32 192.168.1.33 192.168.1.34 192.168.1.35"
export SSHPASS=123123
for HOST in $IP;do
     sshpass -e ssh-copy-id -o StrictHostKeyChecking=no $HOST
done

# этот段脚本изделать用дана машине Установитьsshpassинструмент,И автоматически передавайте локальный открытый ключ SSH на несколько удаленных хостов через sshpass.,к Реализуйте вход по SSH без ручного ввода пароля.
# 
# Конкретное объяснение заключается в следующем:
# 
# 1. `apt install -y sshpass` или `yum install -y sshpass`:проходить Сумка管理器(aptилиyum)Установитьsshpassинструмент,Это позволит в дальнейшем использовать команду sshpass.
#
# 2. `ssh-keygen -f /root/.ssh/id_rsa -P ''`: создать пару ключей SSH. Эта команда сгенерирует файл закрытого ключа id_rsa и файл открытого ключа id_rsa.pub в каталоге /root/.ssh.,同час不настраиватьпароль(Прямо сейчас-Pза параметрамидлянулевой),方便后续проходитьssh-copy-idЗаказавтоматическийкопироватьоткрытый ключ。
# 
# 3. `export IP="192.168.1.31 192.168.1.32 192.168.1.33 192.168.1.34 192.168.1.35"`: установите переменную среды IP, содержащую несколько IP-адресов удаленных хостов, разделенных пробелами, что указывает на то, что вы хотите передать открытый ключ SSH копировать на эти удаленные хосты.
# 
# 4. `export SSHPASS=123123`:настраивать环境变量SSHPASS,ВоляsshpassнеобходимыйSSHпароль(在этот里да"123123")присвойте ему значение,этот样sshpassЗаказ可кавтоматическийиспользоватьэтот个пароль进行登录。
# 
# 5. `for HOST in $IP;do`: просмотрите каждый IP-адрес в переменной среды IP и назначьте текущий IP-адрес переменной HOST.
# 
# 6. `sshpass -e ssh-copy-id -o StrictHostKeyChecking=no $HOST`: используйте инструмент sshpass для копирования локального открытого ключа SSH на удаленный хост. Среди них опция -e указывает на использование пароля в переменной среды (т. е. SSHPASS) для входа в систему, а -o Опция StrictHostKeyChecking=no означает, что не проверять открытый ключ удаленного хоста при подключении, чтобы избежать интерактивного подтверждения.
# 
# проходитьэтот段脚本,Вы можете легко передать локальный открытый ключ SSH на несколько удаленных хостов.,Реализуйте вход по SSH без ручного ввода пароля.

1.14. Добавьте источник включения.

Язык кода:shell
копировать
# Ubuntu игнорирует, CentOS выполняет

# для RHEL-8или Источник конфигурации CentOS-8
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm -y 
sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo 
sed -i "s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g" /etc/yum.repos.d/elrepo.repo 

# для RHEL-7 SL-7 или CentOS-7 Установить ELRepo 
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y 
sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo 
sed -i "s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g" /etc/yum.repos.d/elrepo.repo 

# 查看可用Установить Сумка
yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available

1.15. Обновите ядро ​​до версии 4.18 или выше.

Язык кода:shell
копировать
# Ubuntu игнорирует, CentOS выполняет

# Установить последнее ядро
# 我этот里选择изда Стабильная версияkernel-ml   Если вам необходимо обновить долгосрочное обслуживание Версияkernel-lt  
yum -y --enablerepo=elrepo-kernel  install  kernel-ml

# Просмотрите те ядра, которые были
rpm -qa | grep kernel

# Посмотреть ядро ​​по умолчанию
grubby --default-kernel

# Если неда最新изиспользовать Заказнастраивать
grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo)

# Перезапуск вступает в силу
reboot

# v8 整合Заказдля:
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm -y ; sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo ; sed -i "s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g" /etc/yum.repos.d/elrepo.repo ; yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available -y ; yum  --enablerepo=elrepo-kernel  install kernel-lt -y ; grubby --default-kernel ; reboot 

# v7 整合Заказдля:
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y ; sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo ; sed -i "s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g" /etc/yum.repos.d/elrepo.repo ; yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available -y ; yum  --enablerepo=elrepo-kernel  install  kernel-lt -y ; grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo) ; grubby --default-kernel ; reboot 

# Оффлайн Версия 
yum install -y /root/cby/kernel-lt-*-1.el7.elrepo.x86_64.rpm ; grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo) ; grubby --default-kernel ; reboot 

1.16.Установить ipvsadm

Язык кода:shell
копировать
# дляCentOS7Оффлайн Установить
# yum install /root/centos7/ipset-*.el7.x86_64.rpm /root/centos7/lm_sensors-libs-*.el7.x86_64.rpm  /root/centos7/ipset-libs-*.el7.x86_64.rpm /root/centos7/sysstat-*.el7_9.x86_64.rpm  /root/centos7/ipvsadm-*.el7.x86_64.rpm  -y

# для Ubuntu
# apt install ipvsadm ipset sysstat conntrack -y

# для CentOS
yum install ipvsadm ipset sysstat conntrack libseccomp -y
cat >> /etc/modules-load.d/ipvs.conf <<EOF 
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF

systemctl restart systemd-modules-load.service

lsmod | grep -e ip_vs -e nf_conntrack
ip_vs_sh               16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  0
ip_vs                 237568  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          217088  3 nf_nat,nft_ct,ip_vs
nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
nf_defrag_ipv4         16384  1 nf_conntrack
libcrc32c              16384  5 nf_conntrack,nf_nat,nf_tables,xfs,ip_vs

# Объяснение параметра
#
# ip_vs
# IPVS да Linux Модуль в ядре, используемый для реализации балансировки нагрузки и высокой доступности. Он обеспечивает высокопроизводительные и масштабируемые сетевые услуги путем распределения входящих запросов с внешнего прокси-сервера на реальный внутренний сервер.
#
# ip_vs_rr
# IPVS Один из алгоритмов планирования, который использует опрос для распределения запросов на внутренний сервер, при этом каждый запрос распределяется последовательно.
#
# ip_vs_wrr
# IPVS Один из алгоритмов планирования, который использует взвешенный опрос для распределения запросов на внутренние серверы, при этом каждый запрос распределяется в соответствии с указанным весовым соотношением.
#
# ip_vs_sh
# IPVS Один из алгоритмов планирования, использующий метод хеширования согласно источнику IP адрес и цель IP адрес для распространения запросов.
#
# nf_conntrack
# этотдаодин内核модуль,Используется для отслеживания и управления сетевыми подключениями.,Сумка括 TCP、UDP и ICMP Ждем согласования. Это основа для реализации отслеживания состояния межсетевого экрана.
#
# ip_tables
# этотдаодин内核модуль,предусмотрено Linux система IP Поддерживаются функции фильтрации пакетов и трансляции сетевых адресов (NAT).
#
# ip_set
# этотдаодин内核модуль,расширенный iptables функция для поддержки более эффективного IP Операции по сбору адресов.
#
# xt_set
# этотдаодин内核модуль,расширенный iptables функция для поддержки более эффективного数据Сумка匹配и操делать。
#
# ipt_set
# этотдаодин用户нулевой间инструмент,Для настройки и управления xt_set Модуль ядра.
#
# ipt_rpfilter
# этотдаодин内核модуль,Используется для реализации фильтрации обратного пути.,используется для предотвращения IP обманывать DDoS атаковать.
#
# ipt_REJECT
# этотдаодин iptables цель, для отклонения IP пакет и отправляет ответ отправителю, указывающий, что пакет был отклонен.
#
# ipip
# этотдаодин内核модуль,используется для реализации IP инкапсулированный в Функция туннелирования IP (IP-over-IP). Он может создавать виртуальные туннели между различными сетями для передачи IP пакет.

1.17. Измените параметры ядра.

Язык кода:shell
копировать
cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
fs.may_detach_mounts = 1
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.netfilter.nf_conntrack_max=2310720

net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 327680
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_conntrack_max = 65536
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 16384

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 1
EOF

sysctl --system

# этот些даLinuxсистемаиз一些параметрнастраивать,для конфигурациии Оптимизировать сеть、документсистемаи Виртуальная память и другие функции。к下да Подробное объяснение каждого параметра:
# 
# 1. net.ipv4.ip_forward = 1
#    - этот个параметрдавать возможность了IPv4изIPфункция пересылки,允许серверделатьдля Переадресация сетевого маршрутизаторапакет.
# 
# 2. net.bridge.bridge-nf-call-iptables = 1
#    - При использовании технологии сетевого моста пакеты передаются на обработку в iptables.
#   
# 3. fs.may_detach_mounts = 1
#    - 允许在挂载документсистемачас,Разрешено использовать другим процессам.
#
# 4. vm.overcommit_memory=1
# — этот параметр разрешает исходную стратегию перераспределения памяти.,когдасистемаиз内存已经被完全использоватьчас,система仍然会分配额外из内存。
# 
# 5. vm.panic_on_oom=0
#    - когдасистема Недостаточно памяти(OOM)час,Отключите сбой системы и перезапустите.
# 
# 6. fs.inotify.max_user_watches=89100
#    - настраиватьсистема允许один用户изinotify实例可к监控издокумент数目из上限。
# 
# 7. fs.file-max=52706963
#    - настраиватьсистема同час打开издокумент数из上限。
# 
# 8. fs.nr_open=52706963
#    - настраиватьсистема同час打开издокумент描述符数из上限。
# 
# 9. net.netfilter.nf_conntrack_max=2310720
#    - настраиватьсистема可к创建из网络连接跟踪поверхность项из最大数量。
# 
# 10. net.ipv4.tcp_keepalive_time = 600
#     - Установите время простоя (в секундах) TCP-сокета. Если по истечении этого времени активных данных нет, ядро ​​отправит пакет контрольного сигнала.
# 
# 11. net.ipv4.tcp_keepalive_probes = 3
#     - Установите количество обнаружений пульса TCP без получения ответа.
# 
# 12. net.ipv4.tcp_keepalive_intvl = 15
#     - Установите временной интервал (в секундах) для обнаружения пульса TCP.
# 
# 13. net.ipv4.tcp_max_tw_buckets = 36000
#     - настраиватьсистема可киспользоватьизTIME_WAIT套接字из最大数量。
# 
# 14. net.ipv4.tcp_tw_reuse = 1
#     - Включает повторное использование сокетов TIME_WAIT, позволяя новым сокетам использовать старые сокеты TIME_WAIT.
# 
# 15. net.ipv4.tcp_max_orphans = 327680
#     - настраиватьсистема可к同час存在изTCP套接字垃圾回收Сумка裹数из最大数量。
# 
# 16. net.ipv4.tcp_orphan_retries = 3
#     - настраиватьсистемадля孤立изTCP套接字из重试次数。
# 
# 17. net.ipv4.tcp_syncookies = 1
#     - Включить TCP SYN защита файлов cookie,используется для предотвращенияSYNнаводнениеатаковать.
# 
# 18. net.ipv4.tcp_max_syn_backlog = 16384
#     - Установите максимальную длину количества полуподключений (очереди полуподключений) для новых TCP-соединений.
# 
# 19. net.ipv4.ip_conntrack_max = 65536
#     - настраиватьсистема可к创建из网络连接跟踪поверхность项из最大数量。
# 
# 20. net.ipv4.tcp_timestamps = 0
#     - Отключите функцию метки времени TCP, чтобы обеспечить лучшую безопасность.
# 
# 21. net.core.somaxconn = 16384
#     - настраиватьсистема核心слойиз连接队列из最大值。
# 
# 22. net.ipv6.conf.all.disable_ipv6 = 0
#     - Включите протокол IPv6.
# 
# 23. net.ipv6.conf.default.disable_ipv6 = 0
#     - Включите протокол IPv6.
# 
# 24. net.ipv6.conf.lo.disable_ipv6 = 0
#     - Включите протокол IPv6.
# 
# 25. net.ipv6.conf.all.forwarding = 1
#     - Разрешить пересылку пакетов IPv6.

1.18. Настройте локальное разрешение хостов на всех узлах.

Язык кода:shell
копировать
cat > /etc/hosts <<EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.31 k8s-master01
192.168.1.32 k8s-master02
192.168.1.33 k8s-master03
192.168.1.34 k8s-node01
192.168.1.35 k8s-node02
192.168.1.36 lb-vip

fc00::31 k8s-master01
fc00::32 k8s-master02
fc00::33 k8s-master03
fc00::34 k8s-node01
fc00::35 k8s-node02
EOF

2. Установка базового компонента k8s

Примечание. Вы можете выбрать версию 2.1 или 2.2.

2.1. Установите Containerd как среду выполнения (рекомендуется).

Язык кода:shell
копировать
# https://github.com/containernetworking/plugins/releases/
# wget https://mirrors.chenby.cn/https://github.com/containernetworking/plugins/releases/download/v1.6.1/cni-plugins-linux-amd64-v1.6.1.tgz

cd cby/

#Создаем каталог, необходимый для плагина cni
mkdir -p /etc/cni/net.d /opt/cni/bin 
#Распакуйте двоичный пакет cni
tar xf cni-plugins-linux-amd64-v*.tgz -C /opt/cni/bin/

# https://github.com/containerd/containerd/releases/
# wget https://mirrors.chenby.cn/https://github.com/containerd/containerd/releases/download/v2.0.1/containerd-2.0.1-linux-amd64.tar.gz

#декомпрессия
tar -xzf containerd-*-linux-amd64.tar.gz -C /usr/local/

#Создаем файл запуска службы
cat > /etc/systemd/system/containerd.service <<EOF
[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
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF


# Объяснение параметра:
#
# этотдаодин用于启动containerdконтейнер运行часизsystemd unitдокумент。подда对该документ不同部分из详细解释:
# 
# [Unit]
# Description=containerd container runtime
# описатьunitизделать用даделатьдляcontainerdконтейнер运行час。
# 
# Documentation=https://containerd.io
# URL-адрес документации для среды выполнения контейнера.
# 
# After=network.target local-fs.target
# Определяет, какие зависимости следует соблюдатьunitдолжен быть активирован。в сетии本地документсистема Запустить после завершения загрузки,确保了контейнер运行час在этот些依赖项可用час才会启动。
# 
# [Service]
# ExecStartPre=-/sbin/modprobe overlay
# 在启动containerd之前执行из Заказ。этот里из Заказдапытаться Загрузить ядроизoverlayмодуль,нравиться果失败则忽略错误继续执行подиз Заказ。
# 
# ExecStart=/usr/local/bin/containerd
# Фактическая команда, выполняемая для запуска среды выполнения контейнераContainerd.
# 
# Type=notify
# Указывает тип уведомления для службы. Здесь используется тип уведомления, что означает, что systemd будет уведомлен посредством уведомления, когда служба будет готова.
# 
# Delegate=yes
# Разрешите systemd перезапустить и остановить эту службу.
# 
# KillMode=process
# Режим уничтожения, используемый при завершении работы контейнера. Здесь используется режим процесса, что означает остановку среды выполнения контейнера путем завершения процесса.
# 
# Restart=always
# 定义了когдаконтейнер运行час终止后из Перезапуск策略。этот里настраиватьдляalways,Указывает, когда среда выполнения контейнера завершается.,都会автоматический重新启动。
# 
# RestartSec=5
# Количество секунд ожидания перед перезапуском после завершения работы контейнера.
# 
# LimitNPROC=infinity
# обозначениеконтейнер运行час可киспользоватьиз最大进程数量。этот里настраиватьдля Безлимитный。
# 
# LimitCORE=infinity
# обозначениеконтейнер运行час可киспользоватьиз最大CPUКоличество ядер。этот里настраиватьдля Безлимитный。
# 
# LimitNOFILE=infinity
# обозначениеконтейнер运行час可к打开из最大документ数。этот里настраиватьдля Безлимитный。
# 
# TasksMax=infinity
# обозначениеконтейнер运行час可к创建из最大任务数。этот里настраиватьдля Безлимитный。
# 
# OOMScoreAdjust=-999
# Укажите значение корректировки оценки OOM (недостаточно памяти) при запуске контейнера. Отрицательные значения указывают на то, что среда выполнения контейнера имеет более высокий приоритет.
# 
# [Install]
# WantedBy=multi-user.target
# 定义了Служитьиз Установить Расположение。этот里обозначениедляmulti-user.target,выражать Воля Служить Установитьдля多用户模式下из启动项。

2.1.1 Настройте модули, необходимые для Containerd

Язык кода:shell
копировать
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

# Объяснение параметра:
#
# containerdдаодинконтейнер运行час,для управленияи Запустить контейнер。это支持多种不同изпараметр配置来自定义контейнер运行часиз行дляи Функция。
# 
# 1. overlay:overlayдаконтейнерdпо умолчаниюиспользоватьиздрайвер хранилища,это提供了一种轻量级из、штабелируемый、逐слой增量издокументсистема。этопроходить在现有документсистема上叠加документсистемаслой来创建контейнериздокументсистемавид。每个контейнер可к有自己из一组документсистемаслой,Эти слои могут обмениваться файлами из базового изображения.,и измените его внутри контейнера. Используйте оверлеи для эффективного использования дискового пространства,并使контейнер更加轻量级。
# 
# 2. br_netfilter:br_netfilterдаLinux内核提供изодин网络过滤器модуль,用于在контейнер网络中进行网络过滤иNATВперед。когдаконтейнери主机之间из网络通信需要进行DNATили ВОЗSNATчас,Модуль br_netfilter умеет конвертировать IP-адрес. Он также может предоставлять функции сетевой фильтрации на основе правил iptables.,用于限制контейнер之间иликонтейнер与外部网络之间из通信。
# 
# этот些параметр可к在containerdиз配置документили ВОЗЗаказ行中обозначение。例нравиться,可кпроходитьнастраивать--storage-driverпараметр来选择использоватьoverlayделатьдлядрайвер хранилища,проходитьнастраивать--iptablesпараметры для включенияили Запрещатьbr_netfilterмодуль。具体изиспользовать方法и配置细节可к参考containerdиз官方文档。

2.1.2 Загрузка модулей

Язык кода:shell
копировать
systemctl restart systemd-modules-load.service

# Объяснение параметра:
# - `systemctl`: даLinuxсистема管理Служитьиз Заказ行инструмент,可к管理systemd initсистема。
# - `restart`: даsystemctlЗаказизодин选项,Используется для перезапуска службы.
# - `systemd-modules-load.service`: даодинсистема Служить,для загрузки Модуль ядра.
# 
# Объединение вышеуказанных параметров вместе для объяснения `systemctl restart Значение systemd-modules-load.service`:
# этот个Заказ用于重新启动система Служить`systemd-modules-load.service`,этода Ответственный Загрузить ядромодульиз Служить。在重新启动该Служить后,система会重新加载所有из Модуль ядра.

2.1.3 Настройте ядро, необходимое для Containerd

Язык кода:shell
копировать
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

# Загрузить ядро
sysctl --system

# Объяснение параметра:
# 
# этот些параметрдаLinux操делатьсистемаиспользуется в сетии网络桥接настраиватьизпараметр。
# 
# - net.bridge.bridge-nf-call-iptables:этот个параметр控制网络桥接设备да Нет звонкаiptablesсеть обработки правилпакет.когда该параметрнастраиватьдля1час,网络数据Сумка Воля被传递到iptablesПроцесс;когда该параметрнастраиватьдля0час,Сетевые пакеты будут доставляться напрямую, минуя iptables. По умолчанию,этот个значение параметрада1,Прямо сейчасдавать возможностьiptablesсеть обработки правилпакет.
# 
# - net.ipv4.ip_forward:этот个параметр用于控制данетдавать возможностьIPфункция пересылки。IPВперед使得操делатьсистема可к Воля接收到из数据Сумка从один网络接口Вперед到另один网络接口。когда该параметрнастраиватьдля1час,давать возможностьIPфункция пересылки;когда该параметрнастраиватьдля0час,Отключите переадресацию IP. в сетевой среде,Обычно необходимо включить функцию переадресации IP для обеспечения связи между различными сетями. По умолчанию,этот个значение параметрада0,То есть функция IP-переадресации отключена.
#
# - net.bridge.bridge-nf-call-ip6tables: этот параметр аналогичен net.bridge.bridge-nf-call-iptables,нодаэто用于IPv6数据Сумкаиз处理。когда该параметрнастраиватьдля1час,IPv6数据Сумка Воля被传递到ip6tablesПроцесс;когда该параметрнастраиватьдля0час,Пакеты IPv6 будут доставляться напрямую, минуя ip6tables. По умолчанию,этот个значение параметрада1,Прямо сейчасдавать возможностьip6tablesОбработка правилIPv6пакет.
# 
# этот些значение параметра可кпроходить Исправлять操делатьсистемаиз配置документ(в целомда'/etc/sysctl.conf')来进行настраивать。Исправлять完成后,需要использовать'sysctl Команда -p' перезагружает файл конфигурации, чтобы параметры вступили в силу.

2.1.4 Создание файла конфигурации Containerd

Язык кода:shell
копировать
# Объяснение параметра:
# 
# этот段代码да用于Исправлять并配置containerdизпараметр。
# 
# 1. Сначала используйте команду `mkdir -p /etc/containerd`Создает каталог /etc/containerd. Если каталог уже существует, никакие операции не выполняются.
# 2. Используйте команду `containerd config default | tee /etc/containerd/config.toml` создает файл конфигурации по умолчанию и одновременно передает выходные данные в файл /etc/containerd/config.toml.
# 3. использоватьsedЗаказ Исправлять/etc/containerd/config.tomlдокумент,ВоляSystemdCgroupзначение параметра从falseизменятьдляtrue。-iпараметрвыражать直接在Оригиналдокумент中进行编辑。
# 4. использоватьcatЗаказ结合grepЗаказ查看/etc/containerd/config.tomlдокумент中SystemdCgroupзначение параметраданет已Исправлятьдляtrue。
# 5. использоватьsedЗаказ Исправлять/etc/containerd/config.tomlдокумент,Воляregistry.k8s.ioизадрес Заменить дляm.daocloud.io/registry.k8s.io。-iпараметрвыражать直接在Оригиналдокумент中进行编辑。
# 6. использоватьcatЗаказ结合grepЗаказ查看/etc/containerd/config.tomlдокумент中sandbox_imageзначение параметраданет已Исправлятьдляm.daocloud.io/registry.k8s.io。
# 7. использоватьsedЗаказ Исправлять/etc/containerd/config.tomlдокумент,Воляconfig_pathзначение параметра从""изменятьдля"/etc/containerd/certs.d"。-iпараметрвыражать直接在Оригиналдокумент中进行编辑。
# 8. использоватьcatЗаказ结合grepЗаказ查看/etc/containerd/config.tomlдокумент中certs.dзначение параметраданет已Исправлятьдля/etc/containerd/certs.d。
# 9. Используйте команду mkdir, чтобы создать каталог /etc/containerd/certs.d/docker.io. Если каталог уже существует, никакие операции выполняться не будут. Параметр -p указывает, что при создании каталога, если родительский каталог не существует, родительский каталог будет создан автоматически.
# 
# наконец,использоватьcat重定向操делать符Воля内容写入/etc/containerd/certs.d/docker.io/hosts.tomlдокумент。该документ会Настроить ускоритель,вserverпараметрнастраиватьдля"https://docker.io",hostпараметрнастраиватьдля"https://hub-mirror.c.163.com",и добавитьcapabilitiesпараметр。

# Создать файл конфигурации по умолчанию
mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml

# Измените файл конфигурации Containerd.

# sed -i "s#SystemdCgroup\ \=\ false#SystemdCgroup\ \=\ true#g" /etc/containerd/config.toml
# cat /etc/containerd/config.toml | grep SystemdCgroup

# Изображение паузы в песочнице
sed -i "s#registry.k8s.io#registry.aliyuncs.com/chenby#g" /etc/containerd/config.toml
cat /etc/containerd/config.toml | grep sandbox

# Настроить ускоритель
[root@k8s-master01 ~]# vim /etc/containerd/config.toml
[root@k8s-master01 ~]# cat /etc/containerd/config.toml | grep certs.d -C 5

    [plugins.'io.containerd.cri.v1.images'.pinned_images]
      sandbox = 'registry.aliyuncs.com/chenby/pause:3.10'

    [plugins.'io.containerd.cri.v1.images'.registry]
      config_path = '/etc/containerd/certs.d'

    [plugins.'io.containerd.cri.v1.images'.image_decryption]
      key_model = 'node'

  [plugins.'io.containerd.cri.v1.runtime']
[root@k8s-master01 ~]# 

mkdir /etc/containerd/certs.d/docker.io -pv
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://jockerhub.com"]
  capabilities = ["pull", "resolve"]
EOF

# Уведомление!
# SystemdCgroupпараметрдаcontainerd中изодин配置параметр,用于настраиватьcontainerd在运行过程中использоватьизCgroup(контрольная группа)путь。ContainerdиспользоватьSystemdCgroupпараметр来обозначение应该использовать哪个Cgroupотслеживатьи管理контейнериз资源использовать。
# 
# CgroupдаLinux内核提供из一种资源изоляцияимеханизм управления,Может использоваться для ограничения, распределения и мониторинга использования ресурсов группами процессов. Используйте Cгруппы,Может ограничивать лимиты ресурсов и изолировать контейнеры.,Чтобы предотвратить конфликты за ресурсы и недобросовестную конкуренцию между контейнерами.
#
# Установив параметры SystemdCgroup,Это гарантирует, что контейнер сможет найти правильный путь к Cgroup.,и правильно ограничить использование ресурсов изолированного контейнера,Убедитесь, что контейнер может работать должным образом. Если параметр SystemdCgroup установлен неправильно,Может привести к тому, что контейнер не сможет правильно использовать ресурсы.,или ВОЗ无法保证资源из公平分配иизоляция。
# 
# в целом,SystemdCgroupпараметризделать用дадлячтобы обеспечитьcontainerd能够正确地管理контейнериз资源использовать,Добиться ограничения ресурсов, изоляции и справедливого распределения.

2.1.5 Запуск и настройка запуска при загрузке

Язык кода:shell
копировать
systemctl daemon-reload
# для перезарядкиsystemd管理изединицадокумент。когда你新增или Исправлять了某个единицадокумент(нравиться.serviceдокумент、.socketдокумент等),需要运行该Заказ来刷新systemd对该документиз配置。

systemctl enable --now containerd.service
# давать возможность并立Прямо сейчас启动docker.serviceединица。docker.serviceдаDocker守护进程изsystemdСлужитьединица。

systemctl stop containerd.service
# Остановите работающий модуль docker.service, то есть остановите процесс демона Docker.

systemctl start containerd.service
# Запустите модуль docker.service, то есть запустите демон Docker.

systemctl restart containerd.service
# Перезапустите модуль docker.service, что означает перезапуск демона Docker.

systemctl status containerd.service
# показыватьdocker.serviceединицаизкогда前状态,Сумка括运行状态、данетдавать возможность等信息。

2.1.6 Настройка места выполнения подключения клиента crictl

Язык кода:shell
копировать
# https://github.com/kubernetes-sigs/cri-tools/releases/
# wget https://mirrors.chenby.cn/https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.32.0/crictl-v1.32.0-linux-amd64.tar.gz

#декомпрессия
tar xf crictl-v*-linux-amd64.tar.gz -C /usr/bin/
#Создаем файл конфигурации
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

#тест
systemctl restart  containerd
crictl info

# Уведомление!
# поддапараметр`crictl`из详细解释
# 
# `crictl`даодин用于与контейнер运行час通信из Заказ行инструмент。этодаконтейнер运行час接口(CRI)инструментизодин实现,Может управлять средой выполнения контейнера и управлять ею.
#
# 1. `конечная точка времени выполнения: unix:///run/containerd/containerd.sock`
# Укажите адрес сокета терминала при запуске контейнера. В этом примере,обозначениеизадресда`unix:///run/containerd/containerd.sock`,этотдаодинUnix域套接字адрес。
# 
# 2. `image-endpoint: unix:///run/containerd/containerd.sock`
# обозначениеконтейнер镜像Служитьиз终端套接字адрес。在этот个例子中,обозначениеизадресда`unix:///run/containerd/containerd.sock`,этотдаодинUnix域套接字адрес。
# 
# 3. `timeout: 10`
# настраивать与контейнер运行час通信из超часчас间,единицада Второй。在этот个例子中,超часчас间被настраиватьдля10Второй。
# 
# 4. `debug: false`
# обозначениеданетвключать Режим отладки。在этот个例子中,Режим отладки被настраиватьдлязакрытие,Прямо сейчас`false`。нравиться果настраиватьдля`true`,Будет выведена более подробная информация об отладке.
#
# Эти параметры можно изменить по мере необходимости,к便与контейнер运行час进行有效из通信иуправлять.

2.2 Установите Docker как среду выполнения

2.2.1 Разархивируйте программу докера

Язык кода:shell
копировать
# Адрес загрузки двоичного пакета: https://download.docker.com/linux/static/stable/x86_64/
# wget https://mirrors.ustc.edu.cn/docker-ce/linux/static/stable/x86_64/docker-27.4.0.tgz

#декомпрессия
tar xf docker-*.tgz 
#Копируем двоичный файл
cp docker/* /usr/bin/

2.2.2 Создайте служебный файл контейнера

Язык кода:shell
копировать
#Создайте служебный файл контейнер и начнем
cat >/etc/systemd/system/containerd.service <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=1048576
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF

# Объяснение параметра:
# 
# [Unit]
# - Description=containerd container время выполнения: указывает информацию об описании службы.
# - Documentation=https://containerd.io: указывает ссылку на документацию службы.
# - After=network.target local-fs.target:обозначение Служитьиз启动顺序,в сетии本地документсистема启动之后再启动该Служить。
# 
# [Service]
# - ExecStartPre=-/sbin/modprobe наложение: команда выполняется перед запуском службы; используйте `-`, чтобы игнорировать ошибки.
# - ExecStart=/usr/bin/containerd: указывает команду запуска службы.
# - Type=notify: указывает тип службы. «notify» означает, что служба отправит уведомление в systemd после завершения запуска.
# - Delegate=yes: позволяет службе проксировать ответы от других служб, например завершать работу других служб после получения команды завершения работы.
# - KillMode=process:обозначение Служить终止часиз行для,`process`выражать终止Служить进程。
# - Restart=always:обозначение Служить终止后данетавтоматический Перезапуск,`always`выражать总даавтоматический Перезапуск。
# - RestartSec=5:обозначение Служить Перезапускизчас间间隔,единицадля Второй。
# - LimitNPROC=infinity: ограничивает максимальное количество процессов для службы. «Бесконечность» означает отсутствие ограничений.
# - LimitCORE=infinity: ограничение максимального количества ядер для службы. «Бесконечность» означает отсутствие ограничений.
# - LimitNOFILE=1048576:限制Служитьиз最大документ数,обозначениедля1048576。
# - TasksMax=infinity: Ограничьте максимальное количество задач для службы. «Бесконечность» означает отсутствие ограничений.
# - OOMScoreAdjust=-999: OOM указанной службы (Out of Память), отрицательное число означает снижение вероятности прекращения работы.
# 
# [Install]
# - WantedBy=multi-user.target:обозначение Служитьиз Установить Способ,`multi-user.target`выражать该Служить在多用户模式下Установить。


# Настройте автозапуск при включении
systemctl enable --now containerd.service

. . . . . . . немного. . . . . . .

Невозможно отобразить из-за ограничения на количество символов!

Невозможно отобразить из-за ограничения на количество символов!

Невозможно отобразить из-за ограничения на количество символов!

Из-за ограничения по количеству слов на этой платформе содержание статьи было удалено! ! !

адрес:

https://github.com/cby-chen/Kubernetes

о

https://www.oiox.cn/

https://www.oiox.cn/index.php/start-page.html

CSDN, GitHub, Zhihu, Open Source China, Sifou, Nuggets, Jianshu, Huawei Cloud, Alibaba Cloud, Tencent Cloud, Bilibili, Toutiao, Sina Weibo, личный блог

«Эксплуатацию и обслуживание Сяо Чена» можно найти во всем Интернете.

Статья в основном публикуется в публичном аккаунте WeChat: «Сообщество обмена операциями и обслуживанием Linux».

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose