[kubernetes] Enseñarle a construir un clúster de kubernetes en el método kubeadm. Clúster de nodo principal único, descripción de clúster de nodos múltiples.

edificio del clúster de kubernetes

1. Clasificación de conglomerados

Los clústeres de Kubernetes se dividen en clústeres de un solo nodo maestro y clústeres de varios nodos maestros. En aplicaciones prácticas, generalmente usamos un clúster de nodos múltiples para lograr una alta disponibilidad.

  • Modelo de clúster de nodo maestro único:

inserte la descripción de la imagen aquí

  • Modelo de clúster de nodos multimaestros

inserte la descripción de la imagen aquí

2. Requisitos de hardware para la creación de clústeres

  • Nodo maestro: 2 núcleos, memoria 4G, disco 20G

  • Nodo nodo: 4 núcleos, memoria 8G, disco 40G

El maestro solo se usa como un nodo de control y no ocupa una gran cantidad de recursos, pero el nodo del nodo realiza el procesamiento comercial real, etc., y ocupa una cantidad relativamente alta de recursos.

3. Cómo construir un clúster

En general, hay dos formas de crear un clúster de kubernetes:

  1. Kubeadm

Kubeadm es una herramienta de implementación de K8s que proporciona kubeadm init y kubeadm join para una implementación rápida de clústeres de Kubernetes.

Dirección oficial: https://kubernetes.io/docs/reference/setup-tools/kubeadm/

  1. paquete binario

Descargue el paquete binario de la distribución desde github e implemente manualmente cada componente para formar un clúster de Kubernetes.

Comparación de los dos métodos: Kubeadm reduce el umbral de implementación, pero oculta muchos detalles, lo que dificulta la solución de problemas. Si desea ser más controlable, se recomienda usar paquetes binarios para implementar clústeres de Kubernetes. Aunque la implementación manual es problemática, puede aprender muchos principios de trabajo durante el período, lo que también es propicio para el mantenimiento posterior.

4. método de implementación de kubeadm

Kubeadm es una herramienta lanzada por la comunidad oficial para el despliegue rápido de clústeres de kubernetes.Esta herramienta puede completar el despliegue de un clúster de kubernetes a través de dos instrucciones.

Primero, cree un nodo maestro

kubeadm init

En segundo lugar, agregue el nodo Node al clúster actual

kubeadm join <Master节点的IP和端口>

4.1 Requisitos de instalación

  • Una o más máquinas, sistema operativo CentOS7.x-86_ x64
  • Configuración de hardware: 2 GB o más de RAM, CPU de 2 núcleos o más, disco duro de 30 GB o más
  • Puede acceder a la red externa, debe extraer la imagen, si el servidor no puede acceder a Internet, debe descargar la imagen por adelantado e importar el nodo
  • Deshabilitar la partición de intercambio

Aquí uso máquinas virtuales para simular tres servidores, como nodo maestro y nodo nodo respectivamente

inserte la descripción de la imagen aquí

Propiedades del nodo ip
Maestro 192.168.237.136
nodo1 192.168.237.137
nodo2 192.168.237.139

4.2 Trabajo de inicialización

desactivar el cortafuegos

systemctl stop firewalld
systemctl disable firewalld

cerrar selinux

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

cerrar intercambio

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

Establezca el nombre de host de acuerdo con el plan

hostnamectl set-hostname <hostname>

Agregue hosts en el nodo maestro (solo se ejecuta en el nodo maestro)

cat >> /etc/hosts << EOF 
192.168.237.136 master1  # ip 主机名称
192.168.237.137 worker1
192.168.237.139 worker2
EOF

Cadena para pasar tráfico IPv4 en puente a iptables

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效

sincronización de tiempo

yum install ntpdate -y
ntpdate -u ntp.api.bz

4.3 Instalar Docker/kubeadm/kubelet

El CRI (tiempo de ejecución del contenedor) predeterminado de Kubernetes es Docker, por lo tanto, instale Docker primero

4.3.1 Instalar ventana acoplable

Por favor, consulte los artículos anteriores.

https://blog.csdn.net/weixin_45842494/article/details/123013040

4.3.2 Agregar fuente de software Alibaba Cloud YUM

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

4.3.3 Instalar kubeadm, kubelet y kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0  # 指定版本,根据需要选择
systemctl enable kubelet  # 设置开机启动

4.4 Implementar maestro de Kubernetes

Ejecutar en el nodo maestro (Master)

kubeadm init \
--apiserver-advertise-address=192.168.237.136 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16  # 这些网段没严格要求,和当前网段不冲突就行

inserte la descripción de la imagen aquí

Vea el mensaje de aviso que Your Kubernetes control-plane has initialized successfully!indica el éxito y use docker imagesel espejo que se puede ver para tirar.

Use la herramienta kubectl (en la información del aviso, cópiela)

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

kubectl get nodes

inserte la descripción de la imagen aquí

4.5 Unirse al nodo de Kubernetes

Ejecutar en el nodo trabajador (Node)

Para agregar un nuevo nodo al clúster, ejecute la salida del comando kubeadm join en kubeadm init

# 这些内容根据提示写
kubeadm join 192.168.237.136:6443 --token 82lknt.d9fg3q0dnl17zc6d \
    --discovery-token-ca-cert-hash sha256:1c95dcbc9104363f14061d6f5bb3a38dc21c5cec12a884017f5790b388ee6ba3 

inserte la descripción de la imagen aquí

El período de validez del token predeterminado es de 24 horas, después de lo cual el token no está disponible. En este momento, debe volver a crear el token y la operación es la siguiente:

kubeadm token create --print-join-command

En la figura se puede ver cuál es el NotReadyestado actual y es necesario agregar el complemento de red CNI.

4.6 Implementación del complemento de red CNI

kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml
[root@master1 ~]# kubectl get nodes
NAME      STATUS   ROLES    AGE   VERSION
master1   Ready    master   43m   v1.18.0
worker1   Ready    <none>   30m   v1.18.0
worker2   Ready    <none>   29m   v1.18.0
[root@master1 ~]# kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-57546b46d6-zls4k   1/1     Running   0          2m45s
calico-node-9n9hj                          1/1     Running   0          2m45s
calico-node-brrsq                          1/1     Running   0          2m45s
calico-node-l79q8                          1/1     Running   0          2m45s
coredns-7ff77c879f-64z5h                   1/1     Running   0          44m
coredns-7ff77c879f-mprbq                   1/1     Running   0          44m
etcd-master1                               1/1     Running   0          45m
kube-apiserver-master1                     1/1     Running   0          45m
kube-controller-manager-master1            1/1     Running   0          45m
kube-proxy-52ldf                           1/1     Running   0          31m
kube-proxy-sb2sc                           1/1     Running   0          44m
kube-proxy-xvqvh                           1/1     Running   0          31m
kube-scheduler-master1                     1/1     Running   0          45m
[root@master1 ~]# 

inserte la descripción de la imagen aquí

El estado se está ejecutando

4.7 Probar el clúster de kubernetes

Cree un pod en el clúster de Kubernetes y verifique que se esté ejecutando:

kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

kubectl get pod,svc
[root@master1 ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
[root@master1 ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@master1 ~]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
nginx-f89759699-nntwg   1/1     Running   0          78s
[root@master1 ~]# kubectl get pod,svc
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-f89759699-nntwg   1/1     Running   0          2m49s

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        54m
service/nginx        NodePort    10.106.109.109   <none>        80:30179/TCP   2m3s
[root@master1 ~]# 

inserte la descripción de la imagen aquí

Tenga en cuenta que el número de puerto aquí es 30179

Acceso a red externa: NodeIp:Puerto

inserte la descripción de la imagen aquí

Por supuesto, también es posible utilizar la ip del nodo maestro.

inserte la descripción de la imagen aquí

Se crea el clúster de un solo nodo maestro. Más adelante explicaremos la construcción del clúster de nodos multimaestro. Sígueme.

La cuenta pública de WeChat ya se ha abierto. Puede encontrarme buscando "Jiang Xiaonan y sus amigos". Amigos, pueden prestar atención y los artículos se actualizarán sincrónicamente para facilitar su visualización.

Supongo que te gusta

Origin blog.csdn.net/weixin_45842494/article/details/123267341
Recomendado
Clasificación