Развертывание Kubernetes (K8s 1.28.x) --- Метод создания Docker (суперподробно)

Оглавление

1. Базовая конфигурация среды (должны быть настроены все хосты)

1. Настройте IP-адрес, имя хоста и разрешение хостов.

2. Выключите брандмауэр и отключите SELinux.

3. Установите часто используемое программное обеспечение.

4. Настройте синхронизацию времени

5. Отключить раздел подкачки.

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

7. Настройте функцию ipvs.

2. Работа контейнерной среды

1. Индивидуальный источник программного обеспечения

2. Установите последнюю версию докера.

3. Настройте докер-ускоритель.

4. Запустите докер

3. работа в критической среде

1. скачать cri-dockerd-0.3.4.amd64.tgz

2. Разархивируйте в указанную директорию и просмотрите.

 3. Индивидуальный файл конфигурации.

4. Запустите службу

4. работа портового склада

1. скачать docker-compose-linux-x86_64

2. Дайте разрешение и извлеките его в созданный каталог.

3. Загрузите изображение

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

5. Индивидуальный файл запуска службы.

6. Тест

 5. Инициализация кластера k8s

1. Индивидуальный источник программного обеспечения — все узлы

2. Развертывание среды — все узлы

3. Проверьте список файлов изображений — работайте только на одном узле.

4. Создайте проект на портовом складе.

 5. Получите файл образа на главном узле.

6. Инициализация главного узла

7. узел узла присоединяется

6. Завершение работы среды K8s - работа главного узла.

1. Разрешительная операция

2. Завершение команды

3. Загрузите kube-flannel.yml.

4. Отредактируйте скрипт и выполните его.

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

6. Файл конфигурации приложения.

 7. Проверьте эффект

 8. Проверьте состояние кластера

7. Расширение: может ли kubectl работать на нодах?

1. Базовая конфигурация среды (должны быть настроены все хосты)

Планирование имени хоста:

серийный номер IP-адрес хоста Планирование имени хоста использовать
1 192.168.226.150 kubernetes-master.openlab.cn Кубернетес-мастер
2 192.168.226.151 kubernetes-node1.openlab.cn Кубернетес-узел1
3 192.168.226.152 kubernetes-node2.openlab.cn Кубернетес-узел2
4 192.168.226.153 kubernetes-node3.openlab.cn Кубернетес-узел3
5 192.168.226.155 kubernetes-register.openlab.cn Kubernetes-регистр

Подготовка среды: Centos7.9, 2 процессора, память 4 ГБ, жесткий диск 50 ГБ.

1. Настройте IP-адрес, имя хоста и разрешение хостов.

主机名修改: 
hostnamectl set-hostname kubernetes-master.openlab.cn

hosts解析
[root@localhost ~]# vi /etc/hosts
192.168.226.150 kubernetes-master.openlab.cn kubernetes-master
192.168.226.151 kubernetes-node1.openlab.cn kubernetes-node1
192.168.226.152 kubernetes-node2.openlab.cn kubernetes-node2
192.168.226.153 kubernetes-node3.openlab.cn kubernetes-node3
192.168.226.155 kubernetes-register.openlab.cn kubernetes-register

2. Выключите брандмауэр и отключите SELinux.

[root@kubernetes-master ~]# systemctl stop firewalld
[root@kubernetes-master ~]# systemctl disable firewalld
[root@kubernetes-master ~]# sed -i  '/^SELINUX=/ c  SELINUX=disabled' /etc/selinux/config
[root@kubernetes-master ~]# setenforce 0

3. Установите часто используемое программное обеспечение.

[root@kubernetes-master ~]# yum install -y wget tree bash-completion lrzsz psmisc net-tools vim

4. Настройте синхронизацию времени

[root@kubernetes-master ~]# yum install chrony -y
[root@kubernetes-master ~]# vim /etc/chrony.conf
...
注释第三行到第六行
:3,6 s/^/#
使用阿里云的时间服务器
server ntp1.aliyun.com iburst

启动服务
[root@kubernetes-master ~]# systemctl enable --now chronyd

测试
[root@kubernetes-master ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample     
=====================================================================
^* 120.25.115.20                 2   6    17     4   +145us[ +123us]

5. Отключить раздел подкачки.

临时禁用
[root@localhost ~]# swapoff -a
	
永久禁用
[root@localhost ~]# sed -i 's/.*swap.*/#&/' /etc/fstab
	
检测:
[root@kubernetes-node1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819         385         229           9        1204        1259
Swap:             0           0           0

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

cat >> /etc/sysctl.d/k8s.conf << EOF

#内核参数调整
vm.swappiness=0
#配置iptables参数,使得流经网桥的流量也经过iptables/netfilter防火墙
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

#配置生效
#加载网桥过滤模块
# modprobe br_netfilter
# modprobe overlay

#重新加载
[root@kubernetes-master ~]# sysctl -p /etc/sysctl.d/k8s.conf
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

7. Настройте функцию ipvs.

# 1 安装ipset和ipvsadm
[root@kubernetes-master ~]# yum install ipset ipvsadm -y

# 2 添加需要加载的模块写入脚本文件
[root@kubernetes-master ~]# cat <<EOF >  /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF

# 3 为脚本文件添加执行权限
[root@kubernetes-master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

# 4 执行脚本文件
[root@kubernetes-master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules

# 5 查看对应的模块是否加载成功
[root@kubernetes-master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack

2. Работа контейнерной среды

1. Индивидуальный источник программного обеспечения

[root@kubernetes-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@kubernetes-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. Установите последнюю версию докера.

yum install -y docker-ce

3. Настройте докер-ускоритель.

[root@kubernetes-master ~]# cat >> /etc/docker/daemon.json <<-EOF
{
"registry-mirrors": [
    "http://74f21445.m.daocloud.io",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
 ], 
 "insecure-registries": ["kubernetes-register.openlab.cn"],
 "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

4. Запустите докер

[root@kubernetes-master ~]# systemctl daemon-reload
[root@kubernetes-master ~]# systemctl enable --now docker

3. работа в критической среде

1. скачать cri-dockerd-0.3.4.amd64.tgz

Адрес: Релизы · Mirantis/cri-dockerd (github.com)

2. Разархивируйте в указанную директорию и просмотрите.

[root@kubernetes-master ~]# tar xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/
[root@kubernetes-master ~]# mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin/
[root@kubernetes-master ~]# cri-dockerd --version
cri-dockerd 0.3.4 (e88b1605)

 3. Индивидуальный файл конфигурации.

cat > /etc/systemd/system/cri-dockerd.service<<-EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --
cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

cat > /etc/systemd/system/cri-dockerd.socket <<-EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF

4. Запустите службу

启动服务
设置服务开机自启动
[root@kubernetes-master ~]# systemctl daemon-reload
[root@kubernetes-master ~]# systemctl enable --now cri-dockerd.service

4. работа портового склада

Выполнять только на складской машине

1. скачать docker-compose-linux-x86_64

Адрес загрузки: Релизы · docker/compose · GitHub

2. Дайте разрешение и извлеките его в созданный каталог.

给权限
install -m 755 docker-compose-linux-x86_64 /usr/local/bin/docker-compose

创建目录
mkdir -p /data/server

解压
tar xf harbor-offline-installer-v2.8.4.tgz -C /data/server/

进入目录
cd /data/server/harbor/

3. Загрузите изображение

docker load -i harbor.v2.8.4.tar.gz 

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

复制文件
cp harbor.yml.tmpl harbor.yml
修改文件
vim harbor.yml

修改如下:
hostname: kubernetes-register.openlab.cn
#https:
#  port: 443
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

harbor_admin_password: 123456
data_volume: /data/server/harbor/data

运行
./prepare
./install.sh

5. Индивидуальный файл запуска службы.

/etc/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
#需要注意harbor的安装位置
ExecStart=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target

重启
# systemctl daemon-reload
# systemctl enable harbor.service
# systemctl restart harbor

6. Тест

Только на определенном узле кластера k8s
на мастере

下载镜像
# docker pull busybox
登录仓库
# docker login kubernetes-register.openlab.cn -u admin -p 123456
定制镜像标签
# docker tag busybox:latest kubernetes-register.openlab.cn/library/busybox:latest
推送镜像
# docker push kubernetes-register.openlab.cn/library/busybox:latest

 5. Инициализация кластера k8s

1. Индивидуальный источник программного обеспечения — все узлы

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

2. Развертывание среды — все узлы

# yum install kubeadm kubectl kubelet -y

3. Проверьте список файлов изображений — работайте только на одном узле.

kubeadm config images list

4. Создайте проект на портовом складе.

Веб-страница: http://192.168.226.155.

Учётная запись: admin Пароль: 123456

 5. Получите файл образа на главном узле.

# cat images.sh 
#!/bin/bash
images=$(kubeadm config images list --kubernetes-version=1.28.0 | awk -F'/' '{print $NF}')
for i in ${images}
do
  docker pull registry.aliyuncs.com/google_containers/$i
  docker tag registry.aliyuncs.com/google_containers/$i kubernetes-register.openlab.cn/google_containers/$i
  docker push kubernetes-register.openlab.cn/google_containers/$i
  docker rmi registry.aliyuncs.com/google_containers/$i
done


执行脚本文件
sh images.sh

6. Инициализация главного узла

kubeadm init --kubernetes-version=1.28.0 \
####注意修改下面一行的地址为自己的master地址
--apiserver-advertise-address=192.168.226.150 \
--image-repository kubernetes-register.openlab.cn/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=Swap \
--cri-socket=unix:///var/run/cri-dockerd.sock

7. узел узла присоединяется

kubeadm join 192.168.226.150:6443 --token jie7an.cr33vmg6iwxu4jod \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--discovery-token-ca-cert-hash sha256:7258022a0aeead42dd63fbcca3e1418df26b2f59f89ffce238066ee22032b435

Будьте осторожны, не копируйте напрямую, измените его под свой собственный.

6. Завершение работы среды K8s - работа главного узла.

1. Разрешительная операция

定制k8s的登陆权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

2. Завершение команды

放到master主机的环境文件中
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(kubeadm completion bash)" >> ~/.bashrc
source ~/.bashrc

3. Загрузите kube-flannel.yml.

Если вы не можете найти загрузку, вы можете связаться со мной через QQ: 1445144210.

4. Отредактируйте скрипт и выполните его.

# cat flannel.sh 
#!/bin/bash

for i in $(grep image kube-flannel.yml | grep -v '#' | awk -F '/' '{print $NF}')
do
	docker pull flannel/$i
	docker tag flannel/$i kubernetes-register.openlab.cn/google_containers/$i
	docker push kubernetes-register.openlab.cn/google_containers/$i
	docker rmi flannel/$i
done

执行脚本文件:sh flannel.sh

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

sed -i '/ image:/s#docker.io/flannel#kubernetes-register.openlab.cn/google_containers#' kube-flannel.yml

6. Файл конфигурации приложения.

# kubectl apply -f kube-flannel.yml

 7. Проверьте эффект

[root@kubernetes-master ~]# kubectl get node
NAME                           STATUS   ROLES           AGE   VERSION
kubernetes-master.openlab.cn   Ready    control-plane   18m   v1.28.0
kubernetes-node1.openlab.cn    Ready    <none>          16m   v1.28.0
kubernetes-node2.openlab.cn    Ready    <none>          16m   v1.28.0
kubernetes-node3.openlab.cn    Ready    <none>          16m   v1.28.0
[root@kubernetes-master ~]# kubectl get pod -n kube-system 
NAME                                                   READY   STATUS    RESTARTS   AGE
coredns-76f899b8cf-f5d5g                               1/1     Running   0          18m
coredns-76f899b8cf-qd5zl                               1/1     Running   0          18m
etcd-kubernetes-master.openlab.cn                      1/1     Running   0          18m
kube-apiserver-kubernetes-master.openlab.cn            1/1     Running   0          18m
kube-controller-manager-kubernetes-master.openlab.cn   1/1     Running   0          18m
kube-proxy-c5lbh                                       1/1     Running   0          18m
kube-proxy-h5s6t                                       1/1     Running   0          16m
kube-proxy-lkpxq                                       1/1     Running   0          16m
kube-proxy-zqbrh                                       1/1     Running   0          16m
kube-scheduler-kubernetes-master.openlab.cn            1/1     Running   0          18m



#使用第二条命令全是Running就表示完成了

 8. Проверьте состояние кластера

[root@kubernetes-master ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
controller-manager   Healthy   ok        
etcd-0               Healthy   ok        
scheduler            Healthy   ok 

7. Расширение: может ли kubectl работать на нодах?

Необходимо настроить работу kubectl. Его файл конфигурации — $HOME/.kube. Если вы хотите запустить эту команду на узле узла, вам необходимо скопировать файл .kube на главном узле на узел узла, то есть , выполните его на главном узле. Сделайте следующее:

scp  -r  $HOME/.kube   kubernetes-node1.openlab.cn:$HOME/
​scp  -r  $HOME/.kube   kubernetes-node2.openlab.cn:$HOME/
​scp  -r  $HOME/.kube   kubernetes-node3.openlab.cn:$HOME/

 Тест: на узле узла

Supongo que te gusta

Origin blog.csdn.net/shenql_/article/details/132510265
Recomendado
Clasificación