Demostración práctica de la implementación openEuler del clúster de la versión Kubernetes 1.29.4

Este artículo fue compartido por la comunidad de nube de Huawei " OpenEuler implementa el clúster de versiones Kubernetes 1.29.4 " por Jiang Wanzhengchouyu.

1. Preparación del nodo del clúster de Kubernetes

1.1 Descripción del sistema operativo host

Número de serie sistema operativo y comentarios de versión
1 CentOS7u9 u OpenEuler2203

1.2 Descripción de la configuración del hardware del host

Requisitos CPU memoria disco duro función nombre de host
valor 8C 8G 1024 GB maestro k8s-master01
valor 8C 16G 1024 GB trabajador (nodo) k8s-worker01
valor 8C 16G 1024 GB trabajador (nodo) k8s-worker02

1.3 Configuración del anfitrión

1.3.1 Configuración del nombre de host

Dado que esta vez se utilizan tres hosts para completar la implementación del clúster de Kubernetes, uno de ellos es el nodo maestro, llamado k8s-master01; dos de ellos son nodos trabajadores, llamados: k8s-worker01 y k8s-worker02.

# nodo maestro

hostnamectl set-hostname k8s-master01

#trabajador01nodo
hostnamectl set-hostname k8s-worker01
 
#trabajador02nodo
hostnamectl set-hostname k8s-worker02

1.3.2 Dirección IP, resolución de nombres y confianza mutua

La configuración #IP no se explicará aquí.

#La siguiente es la configuración de resolución de nombres.
[root@k8s-master01 ~]# gato /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.11 k8s-maestro01
192.168.0.12 k8s-trabajador01
192.168.0.13 k8s-trabajador02

#Configuración de confianza mutua del host  
[root@k8s-master01 ~]# ssh-keygen
Generando par de claves rsa pública/privada.
Ingrese el archivo en el que guardar la clave (/root/.ssh/id_rsa):
Ingrese la frase de contraseña (vacía si no hay frase de contraseña):
Ingrese la misma contraseña nuevamente:
Su identificación se ha guardado en /root/.ssh/id_rsa
Su clave pública se ha guardado en /root/.ssh/id_rsa.pub
La huella digital clave es:
SHA256:Rr6W4rdnY350fzMeszeWFR/jUJt0VOZ3yZECp5VJJQA root@k8s-master01
La imagen aleatoria de la clave es:
+---[RSA 3072]----+
| Eo++=++*|
| ++o*+|
| . . +oB|
| O. *o|
| Entonces o =|
| . O. .o|
| . + . . +u|
| . o. = . *B|
| ...*.o sí*|
+----[SHA256]-----+
[root@k8s-master01 ~]# para i en {11..13};do ssh-copy-id 192.168.0.${i};hecho

/usr/bin/ssh-copy-id: INFORMACIÓN: Fuente de las claves que se instalarán: "/root/.ssh/id_rsa.pub"
No se puede establecer la autenticidad del host '192.168.0.11 (192.168.0.11)'.
La huella digital de la clave ED25519 es SHA256:s2R582xDIla4wyNozHa/HEmRR7LOU4WAciEcAw57U/Q.
Esta clave no se conoce con ningún otro nombre.
¿Está seguro de que desea continuar conectándose (sí/no/[huella digital])? Sí
/usr/bin/ssh-copy-id: INFORMACIÓN: intentando iniciar sesión con las nuevas claves para filtrar las que ya están instaladas
/usr/bin/ssh-copy-id: INFORMACIÓN: Quedan 1 clave(s) por instalar; si se le solicita ahora, debe instalar las nuevas claves.

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
contraseña de [email protected]:

Número de claves agregadas: 1

1.3.4 Configuración del cortafuegos

Todos los hosts requieren operación.

Desactive el firewall existente

# systemctl desactivar firewalld

# systemctl detener firewalld

o

systemctl desactivar --ahora firewalld

Ver el estado del firewall

# firewall-cmd --estado

no corras

Comando de ejecución de referencia:

[root@k8s-master01 ~]# para i en {11..13};hacer ssh 192.168.0.${i} 'systemctl deshabilitar --ahora firewalld'; hecho

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
[root@k8s-master01 ~]# para i en {11..13};hacer ssh 192.168.0.${i} 'firewall-cmd --state'; hecho

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
no corras

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
no corras

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
no corras

1.3.5 Configuración SELINUX

Todos los hosts requieren operación. Modificar la configuración de SELinux requiere reiniciar el sistema operativo.

# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#sestado

Comando de ejecución de referencia:

[root@k8s-master01 ~]# para i en {11..13};hacer ssh 192.168.0.${i} 'sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/ configuración'; hecho

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
 
[root@k8s-master01 ~]# para i en {11..13};hacer ssh 192.168.0.${i} 'sestatus'; hecho

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
Estado de SELinux: deshabilitado

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
Estado de SELinux: deshabilitado

Sólo usuarios autorizados. Todas las actividades pueden ser monitoreadas y reportadas.
Estado de SELinux: deshabilitado

1.3.6 Configuración de sincronización horaria

Todos los hosts requieren operación. El sistema de instalación mínimo requiere la instalación del software ntpdate.

# crontab-l

0 */1 * * * /usr/sbin/ntpdate hora1.aliyun.com
para i en {11..13}; haga ssh 192.168.0.${i} ' echo '0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com' >> /etc/crontab'; hecho
#Establecer zona horaria de Shanghai, octavo distrito este

timedatectl set-timezone Asia/Shanghai

para i en {11..13};hacer ssh 192.168.0.${i} ' timedatectl set-timezone Asia/Shanghai' ;hecho

1.3.7 Actualizar el kernel del sistema operativo

El sistema centos necesita actualizar el contenido. Específicamente, Baidu y OpenEuler2203 no necesitan actualizarse.

1.3.8 Configurar el reenvío de enrutamiento del kernel y el filtrado de puentes

Todos los hosts requieren operación.

Agregar archivos de configuración de filtrado de puentes y reenvío de kernel

sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
# gato > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.intercambio = 0
EOF
#Configurar y cargar el módulo br_netfilter

gato <<EOF | sudo tee /etc/modules-load.d/k8s.conf
cubrir
br_netfilter
EOF

#Cargar módulo de superposición br_netfilter
modprobe br_netfilter
superposición de sonda mod
#Comprueba si está cargado

#lsmod | grep br_netfilter

br_netfilter 22256 0
puente 151336 1 br_netfilter

# Hazlo efectivo

 sysctl --sistema

# Utilice el archivo de configuración predeterminado para que surta efecto
sistema -p

# Utilice el archivo de configuración recién agregado para que surta efecto
sysctl -p /etc/sysctl.d/k8s.conf

1.3.9 Instalar ipset e ipvsadm

Todos los hosts requieren operación.

Instalar ipset e ipvsadm

# yum -y instalar ipset ipvsadm
Configurar el método de carga del módulo ipvsadm
Agregar módulos que deben cargarse

# cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash
modprobe-ip_vs
modprobe-ip_vs_rr
modprobe-ip_vs_wrr
modprobe-ip_vs_sh
modprobe-nf_conntrack
EOF
 
Autorizar, ejecutar, comprobar si está cargado
chmod 755 /etc/sysconfig/modules/ipvs.module && /etc/sysconfig/modules/ipvs.module

Compruebe si el módulo correspondiente se ha cargado correctamente
#lsmod | grep -e ip_vs -e nf_conntrack_ipv4

1.3.10 Cerrar partición SWAP

Una vez completada la modificación, es necesario reiniciar el sistema operativo. Si no se reinicia, se puede apagar temporalmente. El comando es swapoff -a.

Cierre la partición de intercambio permanentemente y necesite reiniciar el sistema operativo

# gato /etc/fstab

......

# /dev/mapper/centos-swap swap valores predeterminados 0 0

Agregue # al comienzo de la línea anterior

2. Instalación de un entorno de contenedores en contenedores.

2.1 Instalar el paquete de entorno contenedor

Todos los hosts requieren operación.

#Archivos empaquetados

para i en {11..13};haga ssh 192.168.0.${i} ' wget https://blog-source-mkt.oss-cn-chengdu.aliyuncs.com/resources/k8s/kubeadm%20init/ k8s1.29.tar.gz'; hecho

# Descomprima el contenedor e instálelo
para i en {11..13}; haga ssh 192.168.0.${i} ' tar -zxvf /root/k8s1.29.tar.gz'; hecho

para i en {11..13};hacer ssh 192.168.0.${i} ' tar -zxvf /root/workdir/containerd-1.7.11-linux-amd64.tar.gz && mv /root/bin/* /usr/local/bin/ && rm -rf /root/bin'; hecho
# Crear un servicio, todos los hosts deben operar
gato << EOF > /usr/lib/systemd/system/containerd.service
[Unidad]
Descripción = tiempo de ejecución del contenedor
Documentación = https://containerd.io
Después=network.target local-fs.target

[Servicio]
ExecStartPre=-/sbin/modprobe superposición
ExecStart=/usr/local/bin/containerd

Tipo=notificar
Delegado=si
KillMode = proceso
Reiniciar=siempre
ReiniciarSeg=5

# Tener límites distintos de cero causa problemas de rendimiento debido a gastos generales contables
# en el núcleo. Recomendamos utilizar cgroups para realizar la contabilidad local del contenedor.
LímiteNPROC=infinito
LímiteCORE=infinito

# Comenta TasksMax si tu versión de systemd no lo admite.
# Solo systemd 226 y superiores admiten esta versión.
TareasMax=infinito
OOMScoreAdjust=-999

[Instalar]
WantedBy=multiusuario.objetivo
EOF
# Iniciar servicio de contenedor
para i en {11..13}; haga ssh 192.168.0.${i} 'systemctl daemon-reload && systemctl enable --now containerd '; hecho

# Instalar runc
para i en {11..13}; haga ssh 192.168.0.${i} 'install -m 755 /root/workdir/runc.amd64 /usr/local/sbin/runc '; hecho
#Instalar el complemento cni
para i en {11..13}; haga ssh 192.168.0.${i} 'mkdir -p /opt/cni/bin && tar -xzvf /root/workdir/cni-plugins-linux-amd64-v1.4.0 .tgz -C /opt/cni/bin/ '; hecho
# Generar archivo de configuración del contenedor y modificarlo
para i en {11..13}; haga ssh 192.168.0.${i} 'mkdir -p /etc/containerd && containerd config default | sudo tee /etc/containerd/config.toml '; hecho
 
# Modificar la imagen del sandbox, todos los hosts deben operar

sed -i 's#sandbox_image = "registry.k8s.io/pause:.*"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#' /etc/containerd/config.toml
#Reiniciar contenedor
systemctl reiniciar contenedor

2.2 Instalar k8s en el host maestro

# Configurar la fuente k8s v2.19, todos los nodos deben estar instalados
gato <<EOF | camiseta /etc/yum.repos.d/kubernetes.repo
[kubernetes]
nombre=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
habilitado=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
EOF
#Instale las herramientas k8s, todos los nodos deben estar instalados
mmm limpiar todo && mmm makecache

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# Configurar kubelet Para lograr coherencia entre el cgroupdriver utilizado por Docker y el cgroup utilizado por kubelet, se recomienda modificar el siguiente contenido del archivo. Es necesario instalar todos los nodos.

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

O el siguiente comando
eco 'KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"' > /etc/sysconfig/kubelet
systemctl habilitar kubelet

#Tenga en cuenta que no inicie kubelet, kubeadm se iniciará automáticamente. Si se inicia, la instalación informará un error.

# Instale el comando k8s y ejecútelo en el nodo maestro. Aquí solo está la imagen de la versión 1.29.4.

kubeadm init --apiserver-advertise-address=192.168.0.11 --image-repository registro.aliyuncs.com/google_containers --kubernetes-version v1.29.4 --service-cidr=10.96.0.0/12 --pod-network- cidr=10.224.0.0/16
#Finalmente ejecuta el siguiente comando
mkdir -p $INICIO/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

exportar KUBECONFIG=/etc/kubernetes/admin.conf

2.3 Instalar el complemento de red calico

kubectl aplicar -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
#Finalmente verifique el estado de los nodos y las ramas del pod.

kubectl obtiene nodos
 
kubectl obtiene vainas -A

 

Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~

Linus se encargó de evitar que los desarrolladores del kernel reemplazaran las pestañas con espacios. Su padre es uno de los pocos líderes que puede escribir código, su segundo hijo es el director del departamento de tecnología de código abierto y su hijo menor es un núcleo de código abierto. Colaborador Robin Li: El lenguaje natural se convertirá en un nuevo lenguaje de programación universal. El modelo de código abierto se quedará cada vez más atrás de Huawei: tomará 1 año migrar completamente 5,000 aplicaciones móviles de uso común a Hongmeng, que es el lenguaje más propenso. Vulnerabilidades de terceros. Se lanzó el editor de texto enriquecido Quill 2.0 con características, confiabilidad y experiencia de desarrolladores que Ma Huateng y Zhou Hongyi se dieron la mano para "eliminar los rencores". La fuente de Laoxiangji no es el código, las razones detrás de esto son muy conmovedoras. Google anunció una reestructuración a gran escala.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/11053977
Recomendado
Clasificación