Use kubeadm para implementar kubernetes versión 1.27.1

Tabla de contenido

prefacio

1. Preparativos antes de la construcción

1. Planificación de la plataforma Build k8s

2. Requisitos de configuración del hardware del servidor

3. Cómo construir e implementar

2. Proceso de construcción

1. Cómo compilar kubeadm

a. Preparación, inicialización del sistema

b. Instalar docker kubeadm kubelet kubectl en todos los nodos

c. Implementar maestro de kubernetes

D. Añadir nodo nodo

e. Instale el complemento de red y conéctese a Internet

F. Pruebas de conglomerados

Resumir


prefacio

Prefiero un caballero que sea bueno en el habla y rápido en la acción a un caballero que sea lento en el habla pero rápido en la acción.


1. Preparativos antes de la construcción

1. Planificación de la plataforma Build k8s

Clúster maestro único: solo hay un maestro, que administra varios nodos.

Clúster multimaestro: tiene múltiples maestros y administra múltiples nodos. Modo de alta disponibilidad. Un paso de equilibrio de carga más que un solo clúster maestro.

 

El entorno de prueba está construido, por lo que se utiliza un solo clúster maestro y el maestro se puede agregar si es necesario en el futuro.

2. Requisitos de configuración del hardware del servidor

nodo maestro:

entorno de prueba Entorno de producción
UPC 2 8
Memoria

4G

16G
disco duro 20G 100 GRAMOS

nodo nodo:

entorno de prueba Entorno de producción
UPC 4 dieciséis
Memoria 8G

64G

disco duro

40G

500G

3. Cómo construir e implementar

Actualmente hay dos formas comunes:

1) método kubeadm

        kubeadm es una herramienta de implementación de k8s y el método de implementación es relativamente simple. Solo se necesitan dos comandos, kubeadm init (inicialización) y kubeadm join (unión del nodo al maestro). El clúster k8s se puede implementar rápidamente. La ventaja es que es rápido y no requiere procesamiento adicional por su cuenta. Común y ahorra tiempo

Enlace oficial: https://kubernetes.io/docs/reference/setup-tools/kubeadm/

2) modo binario

        Descargar el paquete binario de github e implementar manualmente cada componente es un proceso engorroso. La ventaja es que después de encontrar un problema, se puede localizar con precisión, lo que favorece el mantenimiento posterior. Después de todo, lo opero paso a paso por mí mismo, así que sé más sobre los giros y vueltas en el interior ~

2. Proceso de construcción

1. Cómo compilar kubeadm

Proceso general:

        1) Crear un nodo maestro kubeadm init

        2) Agregue el nodo nodo al clúster actual kubeadm join <IP y puerto del nodo maestro>

        3) Configure el complemento de red y pruebe el clúster k8s

Configuración de la máquina:
        -- Se preparan un maestro y un nodo. Configuración de hardware CPU 2 núcleos, memoria 251G, disco duro 500G
        -- las máquinas pueden hacer ping entre sí, el sistema operativo es CentOS7
        -- la partición de intercambio está prohibida
        -- la imagen se puede extraer

                                maestro: 192.10.18.102
                                nodo: 192.10.18.103

a. Preparación, inicialización del sistema

        Como estoy usando una máquina física antigua que se configuró previamente, omito este proceso. Si necesita utilizar una máquina virtual. Para instalar 3 sistemas operativos Centos7.x, realice la siguiente inicialización:

1) Desactivar el cortafuegos

systemctl stop firewalld
systemctl disable firewalld

2) cerrar selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config   #永久关闭
setenforce 0  #临时关闭

3) cerrar intercambio

swapoff -a  #临时关闭
sed -ri 's/."swap."/#&/' /etc/fstab  #永久关闭

4) Establecer el nombre de host

hostnamectl set-hostname <hostname>

5) Solo agregue hosts al maestro

cat >> /etc/hosts << EOF
ip master
ip node1
ip node2
EOF

6) Pase el tráfico ipv4 en puente a la cadena iptables, configure los parámetros del kernel y optimice 

cat > /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

EOF


sysctl --system   #生效命令

7) sincronización de tiempo

yum install ntpdate -y
ntpdate time.windows.com

8) Instalar ipset, ipvsadm 

yum -y install conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

cat > /etc/modules-load.d/ipvs.conf <<EOF
# Load IPVS at boot
ip_vs

ip_vs_rr

ip_vs_wrr

ip_vs_sh

nf_conntrack

nf_conntrack_ipv4

EOF


systemctl enable --now systemd-modules-load.service


#确认内核模块加载成功
lsmod |egrep "ip_vs|nf_conntrack_ipv4"

B. Actualice el kernel (elija según su propia situación, no puede actualizar si está satisfecho)

1) Comprobar la versión del sistema

cat /etc/redhat-release


2) Ver la versión actual del kernel

uname -r


3) Comprobar si ELRepo está instalado

yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available

Ver la descripción del error que ELRepo no está instalado


4) Instalación de actualización
Instalación de ELRepo

yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

o actualizar

rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

5) Verifique los paquetes de instalación disponibles, la versión de mantenimiento a largo plazo es lt y la última versión estable de la línea principal es ml

yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available

6) Instale el último núcleo

yum  --enablerepo=elrepo-kernel  install  -y  kernel-lt

7) Ver las versiones de kernel disponibles y la secuencia de arranque

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

8) Instalar herramientas auxiliares (no es necesario, algunos sistemas vienen con esta herramienta): grub2-pc

yum install -y grub2-pc

9) Establecer el orden de arranque predeterminado del kernel

grub2-set-default 0
vim /etc/default/grub
GRUB_DEFAULT=0  #这里从原来的saved改为0


10) Generar archivo de configuración grub
# Ejecutar el comando grub2-mkconfig para recrear la configuración del kernel

grub2-mkconfig -o /boot/grub2/grub.cfg


11) Reiniciar la máquina

reboot

12) Comprobar si la versión del kernel es correcta

uname -r

13) Instale la herramienta yum-utils.
Cuando haya más de 3 kernels instalados en el sistema, la versión anterior del kernel se eliminará automáticamente o manualmente yum remove -y para eliminar la versión anterior después de ver el kernel instalado.

yum install -y  yum-utils

14) Eliminar juegos de herramientas antiguos

yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64

15) Instale una nueva versión del kit de herramientas

yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64

16) Ver el núcleo instalado

rpm -qa | grep kernel

c. Configure ipv4, de lo contrario fallará (esto es un pozo, si no lo configura, no puede inicializarse correctamente)

vim /etc/sysconfig/modules/ipvs.modules

cat /etc/sysconfig/modules/ipvs.modules
nf_conntrack

systemctl enable --now systemd-modules-load.service

lsmod |egrep "ip_vs|nf_conntrack_ipv4"

lsmod |egrep "ip_vs|nf_conntrack_ipv"


D. Instalar contenedor 

1) Instalar paquetes dependientes

yum -y install yum-utils device-mapper-persistent-data lvm2

2) Agregar fuente de Ali Docker

[raíz@k8s-maestro ~]

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3) Agregar módulos de superposición y filtro de red

cat >>/etc/modules-load.d/containerd.conf <<EOF

overlay

br_netfilter

EOF
modprobe overlay

modprobe br_netfilter

4) Instale Containerd, instale la última versión aquí (no se puede usar la versión 1.5 y anteriores)

yum -y install containerd.io

5) Cree un archivo de configuración para Containerd

mkdir -p /etc/containerd

containerd config default > /etc/containerd/config.toml

sed -i '/SystemdCgroup/s/false/true/g' /etc/containerd/config.toml

sed -i '/sandbox_image/s/registry.k8s.io/registry.aliyuncs.com\/google_containers/g' /etc/containerd/config.toml

6) inicio contenedor

systemctl enable containerd

systemctl start containerd

e. Instalar kubectl, kubelet, kubeadm 

1) Agregar fuente de Ali kubernetes 

vim /etc/yum.repos.d/kubernetes.repo 

[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

2) Instale kubectl, kubelet, kubeadm

Ver todas las ediciones disponibles

 yum list kubelet --showduplicates |grep 1.27

Instale la última versión 1.27.1 aquí

yum -y install kubectl-1.27.1 kubelet-1.27.1 kubeadm-1.27.1

Configure el kubelet para que se inicie automáticamente en el arranque (en este momento, no hay un archivo de configuración de kubelet y no se puede iniciar, lo cual es normal)

systemctl enable kubelet

systemctl start kubelet

F. El nodo maestro realiza operaciones de inicialización.

1) Ver las imágenes requeridas para la inicialización de k8s v1.27.1

kubeadm config images list --kubernetes-version=v1.27.1

2) Comando de inicialización

kubeadm init --kubernetes-version=1.27.1 --apiserver-advertise-address=10.142.50.190 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

Nota: El segmento de red del pod es: 10.244.0.0/16, la dirección del servidor API es la IP local del Maestro y el segmento de red se puede personalizar, siempre que no haya conflicto.

Explicación detallada de los parámetros:
        -- especifique la versión. (La versión se puede modificar según sea necesario)
        -- Se establece el apserver, que es la ip del nodo actual.
        -- Especifique la dirección del almacén espejo y tire del espejo.        
        -- service-cidr es la red de svc kubectl get svc #Ver información de svc   
            por defecto es 10.96.0.0/12
        -- pod-network-cidr es la red de pod kubectl get pods -o wide #Ver información de red de pod
        -- nodos de pod dentro k8s El segmento IP que puede usar la red, no se puede escribir igual que service-cidr y usa 10.244.0.0/16 de manera predeterminada

Esta operación lleva mucho tiempo.

3) Devuelva la información con éxito, simplemente ejecute el contenido devuelto

Your Kubernetes control-plane has initialized successfully!

 
To start using your cluster, you need to run the following as a regular user:
 

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:


kubeadm join IP:6443 --token maod8l.w4g2cu2tl4er9gil \

  --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ejecución del nodo maestro

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

ejecución de nodo de nodo


kubeadm join IP:6443 --token maod8l.w4g2cu2tl4er9gil \

  --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2. Proceso de construcción binaria

        a. Cree varias máquinas virtuales e instale el sistema operativo Linux

        B. Inicialización del sistema operativo (varios apagado-apagado)

        c. Certificados autofirmados para etcd y apserver (equivalentes a tarjetas de control de acceso, asegurando la interoperabilidad)

        D. Implementar clúster etcd

        e. Implementar el componente maestro

                ser apserver ser controlador-administrador ser programador etcd

        F. Implementar componentes de nodo

                kubelet kube proxy ventana acoplable, etc. 

        g. Implementar la red del clúster


 


Resumir

Supongo que te gusta

Origin blog.csdn.net/m0_59029800/article/details/130215553
Recomendado
Clasificación