Utilice fuentes de imágenes nacionales para crear clústeres de Kubernetes (k8s)

  1. Descripción general
    El viejo dicho es bueno: estudia mucho, mejora, déjate saber más que los demás y comprende más a los demás.

Más cerca de casa, hablamos de Docker antes. A medida que el negocio continúa expandiéndose, los contenedores de Docker continúan aumentando y las máquinas físicas continúan aumentando. En este momento, encontraremos que iniciar sesión en cada máquina para operar Docker manualmente es una tarea muy problemática. cosa.

En este momento, necesitamos una herramienta útil para administrar Docker, que nos ayude a crear, ejecutar, ajustar y destruir estos contenedores, que nos ayude a monitorear qué contenedor está inactivo y luego reiniciarlo, etc.

Kubernetes (k8s) es una buena opción. Hoy hablaremos sobre cómo se construye Kubernetes (k8s).

  1. Descripción del escenario
    IP del servidor A: 192.168.1.12

IP del servidor B: 192.168.1.11

IP del servidor C: 192.168.1.15

Nombre de host del servidor A: zhuifengren2

Nombre de host del servidor B: zhuifengren3

Nombre de host del servidor C: zhuifengren4

Preparar tres servidores con sistema operativo CentOS7.

Docker se ha instalado en los tres servidores. Para obtener información sobre la instalación de Docker, consulte mi otro artículo "Comenzando con Docker" (Comenzando con el blog-CSDN de Docker_Wind Chaser).

El servidor A actúa como nodo maestro y el servidor B y el servidor C actúan como nodos de datos.

  1. Instalación de Kubernetes (k8s) (CentOS7)
    3.1 dirección del sitio web oficial

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

3.2 Requisitos de configuración del servidor

Memoria al menos 2G

CPU al menos 2 núcleos

Disco duro de al menos 20G

3.3 Apagar SELinux

método uno:

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=permisivo/' /etc/selinux/config

Método 2:

vim/etc/sysconfig/selinux

SELINUX=aplicar cambió a SELINUX=deshabilitado

Reiniciar el servidor

3.4 Establecer enrutamiento

gato <<EOF | sudo tee /etc/modules-load.d/k8s.conf

br_netfilter
EOF

gato <<EOF | sudo tee /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --sistema

3.5 Cerrar el sistema Swap

intercambio -a

nosotros /etc/fstab

Comentar el montaje automático de SWAP.

vi /etc/sysctl.d/k8s.conf

Agregue la siguiente línea:
vm.swappiness=0

sysctl -p /etc/sysctl.d/k8s.conf

3.6 Instalar e iniciar Kubernetes (K8)

gato < /etc/yum.repos.d/kubernetes.repo

[kubernetes]
nombre=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enable=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com /kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
excluir=kube*
EOF

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

systemctl habilitar kubelet

systemctl reiniciar kubelet

Los pasos 3.3 a 3.6 se ejecutan en los tres servidores.

  1. Creación de clústeres de Kubernetes (k8s) (CentOS7)
    4.1 Modificar la configuración de Docker

gato > /etc/docker/daemon.json <<EOF

{ “exec-opts”: [“native.cgroupdriver=systemd”], “log-driver”: “json-file”, “log-opts”: { “max-size”: “100 m” }, “almacenamiento- driver”: “overlay2”, “storage-opts”: [ “overlay2.override_kernel_check=true” ], “data-root”: “/data/docker” } EOF











recarga-demonio systemctl

systemctl reiniciar la ventana acoplable

4.2 Ver la imagen requerida

Lista de imágenes de configuración de kubeadmk8s.gcr.io/kube-apiserver:v1.22.3

k8s.gcr.io/kube-controller-manager:v1.22.3
k8s.gcr.io/kube-scheduler:v1.22.3
k8s.gcr.io/kube-proxy:v1.22.3
k8s.gcr.io/pause:3.5
k8s.gcr.io/etcd:3.5.0-0
k8s.gcr.io/coredns/coredns:v1.8.4

4.3 Extraer imágenes de fuentes nacionales

Dado que no se puede acceder a k8s.cgr.io, primero debemos usar la fuente espejo nacional para bajarlo y luego cambiar la etiqueta.

Ejecute el siguiente script:
#/bin/bash
docker pull registro.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.22.3
docker pull registro.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager : v1.22.3
registro de extracción de Docker.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.22.3 registro de
extracción de Docker.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.22.3
registro de extracción de Docker. cn -hangzhou.aliyuncs.com/google_containers/pause:3.5
registro de extracción de docker.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0
registro de extracción de docker.cn-hangzhou.aliyuncs.com/google_containers/coredns: v1 .8.4
docker pull quay.io/coreos/flannel:v0.15.1-amd64

registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.22.3 k8s.gcr.io/kube-apiserver:v1.22.3
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/kube- manager-manager:v1.22.3 k8s.gcr.io/kube-controller-manager:v1.22.3
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.22.3 k8s.gcr.io/kube -scheduler:v1.22.3
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.22.3 k8s.gcr.io/kube-proxy:v1.22.3
registro de etiquetas acoplables.cn-hangzhou.aliyuncs. com/google_containers/pause:3.5 k8s.gcr.io/pause:3.5
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0 k8s.gcr.io/etcd:3.5.0-0
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.4 k8s.gcr.io/coredns/coredns:v1.8.4

docker rmi registro.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.22.3
docker rmi registro.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.22.3
docker rmi registro.cn- hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.22.3
docker rmi registrate.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.22.3
docker rmi regist.cn-hangzhou.aliyuncs.com/google_containers/ pausa: 3.5
registro rmi de docker.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0
registro rmi de docker.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.4

Los pasos de 4.1 4.2 4.3 deben ejecutarse en los tres servidores.

4.4 Inicializar el clúster

Ejecutado en el nodo maestro.

kubeadm init --apiserver-advertise-address=192.168.1.12 --pod-network-cidr=10.244.0.0/16

Entre ellos, 192.168.1.12 es la dirección IP del nodo maestro, que puede modificarse según la situación real.

4.5 Obtenga “http://localhost:10248/healthz”: marque tcp [::1]:10248: conectar: ​​conexión rechazada

Al inicializar el clúster, si se informa el error anterior, siga los pasos a continuación en el nodo maestro:

vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

Ejemplo:
Environment=“KUBELET_SYSTEM_PODS_ARGS=–pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --fail-swap-on=false”

cat > /var/lib/kubelet/config.yaml <<EOF
apiVersion: kubelet.config.k8s.io/v1beta1
tipo: KubeletConfiguration
cgroupDriver: systemd
EOF

recarga-demonio systemctl

systemctl reiniciar kubelet

reinicio de kubeadm -f

4.6 Ejecutar el comando de inicialización del clúster nuevamente

Ejecutado en el nodo maestro.

kubeadm init --apiserver-advertise-address=192.168.1.12 --pod-network-cidr=10.244.0.0/16

Aparece el siguiente mensaje, que indica que la inicialización se realizó correctamente: ¡
Su plano de control de Kubernetes se ha inicializado correctamente!

Para comenzar a usar su clúster, debe ejecutar lo siguiente como usuario normal:

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

Alternativamente, si es usuario root, puede ejecutar:

exportar KUBECONFIG=/etc/kubernetes/admin.conf

Ahora deberías implementar una red de pods en el clúster.
Ejecute "kubectl apply -f [podnetwork].yaml" con una de las opciones enumeradas en:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

Luego puede unirse a cualquier número de nodos trabajadores ejecutando lo siguiente en cada uno como raíz:

kubeadm Únete 192.168.1.12:6443--token x0u0ou.q6271pyjm7cv5hxl
-discovery-token-co-cert-hash un

4.7 Según la información del paso anterior, exporte el archivo de configuración y configure la red

exportar KUBECONFIG=/etc/kubernetes/admin.conf

Aquí usamos la red de franela.

kubectl aplicar -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

En este punto, el nodo maestro está completo.

4.8 Según la información del paso 4.6, agregue dos nodos de datos al clúster

En el servidor B y el servidor C, ejecute los siguientes comandos (de la información del paso 4.6):

kubeadm unirse 192.168.1.12:6443 --token x0u0ou.q6271pyjm7cv5hxl \

–discovery-token-ca-cert-hash sha256:907ffb03d73f7668b96024c328880f95f4249e98da1be44d1caeb01dd62173da

Si la ejecución no tiene éxito o el nodo de datos siempre está en el estado NotReady, consulte el paso 4.5 para modificar la configuración.

4.9 En el nodo maestro, ver información del clúster

kubectl obtener nodo

Si el estado es Listo, el clúster de Kubernetes (K8s) se creó correctamente.

  1. Resumen
    Hoy hablé sobre cómo usar fuentes de imágenes domésticas para construir un clúster de Kubernetes (k8s), espero que pueda ser útil para el trabajo de todos.

v1.21.0
#/bin/bash
registro de extracción de docker.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0
registro de extracción de docker.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1 .21.0
registro de extracción de Docker.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.0
registro de extracción de Docker.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.0 registro de extracción de
Docker.cn- hangzhou.aliyuncs.com/google_containers/pause:3.4.1
registro de extracción de docker.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
registro de extracción de docker.cn-hangzhou.aliyuncs.com/google_containers/coredns: v1.8.0
docker pull quay.io/coreos/flannel:v0.15.1-amd64

registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0 k8s.gcr.io/kube-apiserver:v1.21.0
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/kube- manager-manager:v1.21.0 k8s.gcr.io/kube-controller-manager:v1.21.0
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.0 k8s.gcr.io/kube -scheduler:v1.21.0
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.0 k8s.gcr.io/kube-proxy:v1.21.0 registro
de etiquetas acoplables.cn-hangzhou.aliyuncs. com/google_containers/pause:3.4.1 k8s.gcr.io/pause:3.4.1
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4 .13-0
registro de etiquetas acoplables.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0

docker rmi registro.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0
docker rmi registro.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.0
docker rmi registro.cn- hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.0
docker rmi registro.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.0
docker rmi regist.cn-hangzhou.aliyuncs.com/google_containers/ pausa: 3.4.1
registro de docker rmi.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
registro de docker rmi.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0

Supongo que te gusta

Origin blog.csdn.net/xiuqingzhouyang/article/details/127824766
Recomendado
Clasificación