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.