Directorio de artículos
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:
- Modelo de clúster de nodos multimaestros
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:
- 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/
- 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
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 # 这些网段没严格要求,和当前网段不冲突就行
Vea el mensaje de aviso que
Your Kubernetes control-plane has initialized successfully!
indica el éxito y usedocker images
el 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
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
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 NotReady
estado 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 ~]#
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 ~]#
Tenga en cuenta que el número de puerto aquí es 30179
Acceso a red externa: NodeIp:Puerto
Por supuesto, también es posible utilizar la ip del nodo maestro.
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.