[Implementación de Kubernetes] Clúster de la versión Build K8S1.23 basado en el sistema operativo Ubuntu20.04

1. Información de planificación de la arquitectura del clúster

  • Segmento de red de pod: 10.244.0.0/16
  • segmento de red de servicio: 10.10.0.0/16
  • Nota: Los segmentos de la red de pod y servicio no pueden entrar en conflicto. Si hay un conflicto, la instalación del clúster K8S fallará.

información del servidor:

nombre de la CPU dirección IP Sistema operativo
k8s-maestro-1 16.32.15.123 20.04.1-Ubuntu
k8s-nodo-1 16.32.15.124 20.04.1-Ubuntu

2. Preparación para la inicialización del sistema (funcionamiento síncrono de todos los nodos)

1. Para cambiar de usuario, los usuarios realizan rootlas siguientes operacionesroot

sudo -i

2. Configure la fuente del almacén nacional e instale las dependencias requeridas.
Nota: El siguiente es Ubuntu20.04un ejemplo de la fuente del almacén del sistema. Si la versión del sistema es diferente, puede ir al almacén espejo de Ali para encontrar la versión correspondiente. !

cd /etc/apt
cp sources.list sources.list_default
> sources.list

cat >> sources.list << EOF
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
EOF
apt-get update
apt-get upgrade

Instalar las dependencias requeridas

apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg2

3. Agregar resolución de nombre de dominio local

cat  >> /etc/hosts << EOF
16.32.15.123 k8s-master-1
16.32.15.124 k8s-node-1
EOF

Modifique el nombre de host, copie en el servidor correspondiente para ejecutar

hostnamectl set-hostname k8s-master-1 && bash
hostnamectl set-hostname k8s-node-1 && bash

4. Instale ntpdatepara mantener la hora del servidor constante

apt install ntpdate
ntpdate ntp1.aliyun.com

Configure tareas cronometradas para sincronizar automáticamente la hora a la 1:00 am todos los días

crontab -e
0 1 * * * ntpdate ntp1.aliyun.com

Ctrl+c Ctrl+x Y EnterGuardar y Salir

Verifique que la tarea programada esté configurada correctamente

crontab -l

5. Cierra la partición de intercambio

swapoff --all

Prohibir el arranque desde la partición de intercambio de intercambio de arranque

sed -i -r '/swap/ s/^/#/' /etc/fstab

6. Instale Docker
para agregar Key a la base de datos local de confianza

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

Agregar repositorio de Docker

 sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stable"

Instalar ventana acoplable

sudo apt-get install docker-ce docker-ce-cli containerd.io -y

Configurar el controlador Docker

cat <<EOF | tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://aoewjvel.mirror.aliyuncs.com"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

Inicie Docker && únase al arranque automático

mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
systemctl enable --now docker
systemctl status docker

3. Instale kubeadm (operación síncrona de todos los nodos)

1. Configure la fuente nacional de yum, y el requisito previo de instalación depende de

apt-get update && apt-get install -y apt-transport-https curl
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF

Instalar dependencias

apt-get update && apt-get install -y apt-transport-https curl

Error informado durante la ejecución:

Solución:
Nota: La CLAVE aquí no es única, la marqué con un círculo rojo en la imagen de arriba, copie su CLAVE y ejecute nuevamente

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05
apt-get update && apt-get install -y apt-transport-https curl

2. Instale kubeadm, kubelet, kubectl

apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00

Agregar inicio automático

systemctl enable kubelet

Marcar el paquete especificado como retenido, impidiendo las actualizaciones automáticas de software

apt-mark hold kubelet kubeadm kubectl 

4. Inicializar el clúster K8S (operación de nodo maestro)

kubeadm init \
--apiserver-advertise-address 16.32.15.123 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--ignore-preflight-errors=SystemVerification

Explicación de la información del parámetro de inicialización:

  • repositorio de imágenes: especifique la fuente de imagen de Alibaba Cloud en China

  • pod-network-cidr: segmento de red de pod

  • service-cidr: segmento de red de servicio

  • apiserver-advertise-address: apiserver地址

  • ignore-preflight-errors: ignore algunos errores comprobados

Dado que kubernetes usa el certificado CA por defecto, es necesario configurar el certificado para que kubectl acceda al Master

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Probar kubectlsi se puede usar el comando

kubectl get node

5. Agregar nodos Node al clúster K8S

1. El comando kubeadm obtiene los que se unen al clúster token(ejecutado por el nodo maestro)

kubeadm token create --print-join-command
kubeadm join 16.32.15.123:6443 --token kczwmr.x2ekr2pjq5iuhquh --discovery-token-ca-cert-hash sha256:2c8b60dfb13094634cd1476c902dd08e23042a1fb0d23f998c361d30655071f1

2. ¡Copie lo adquirido para unir el clúster token al nodo Nodo! (ejecución de nodo de nodo)

kubeadm join 16.32.15.123:6443 --token kczwmr.x2ekr2pjq5iuhquh --discovery-token-ca-cert-hash sha256:2c8b60dfb13094634cd1476c902dd08e23042a1fb0d23f998c361d30655071f1

3. Ver información del nodo del clúster (ejecutado por el nodo maestro)

kubectl get node

inserte la descripción de la imagen aquí
Bien, como puede ver en la figura anterior, el nodo se unió correctamente al clúster K8S.

6. Instale el complemento de red Calico

Dado que el funcionario calico está en el extranjero, la descarga es relativamente lenta, después de todo, hay un muro. Descargué calico.yamlel archivo y lo puse giteeen el doméstico. A continuación, usaré la dirección nacional para descargar calico.yamlel archivo, ¡por favor sepa!

El nodo maestro ejecuta:

wget -O /root/calico.yaml https://gitee.com/qinziteng/K8S/raw/master/YMAL/calico.yaml
kubectl apply -f calico.yaml

Ver el estado del pod del clúster:

kubectl get pods -n kube-system


Compruebe el estado del nodo del nodo del clúster:

 kubectl get node

inserte la descripción de la imagen aquí
Como arriba, es correcto, si aún no está listo, debe esperar un tiempo ~

7. Prueba la disponibilidad de CoreDNS

1. Crea un contenedor de prueba

kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh

2. Pruebe si se puede analizar normalmente

nslookup kubernetes.default.svc.cluster.local

inserte la descripción de la imagen aquí

Como se muestra en la figura anterior, se puede analizar normalmente.Hasta ahora, el clúster de la versión K8S1.23 basado en el sistema operativo Ubuntu20.04 se ha implementado con éxito y es correcto.

Supongo que te gusta

Origin blog.csdn.net/weixin_45310323/article/details/132119447
Recomendado
Clasificación