KubeKey implementa K8s v1.28.8 en la práctica

En algunos entornos de producción, solo necesitamos un clúster K8 nativo y no es necesario implementar una consola de administración gráfica como KubeSphere . En nuestra pila de tecnología existente, estamos acostumbrados a utilizar KubeKey para implementar clústeres de KubeSphere y K8. Hoy, les demostraré cómo implementar un clúster K8 puro usando KubeKey en openEuler 22.03 LTS SP3 .

Configuración real del servidor (arquitectura réplica 1:1 de un entorno de producción a pequeña escala, la configuración es ligeramente diferente)

nombre de la CPU IP UPC Memoria disco del sistema disco de datos usar
ksp-master-1 192.168.9.131 8 dieciséis 40 100 k8s-maestro
ksp-master-2 192.168.9.132 8 dieciséis 40 100 k8s-maestro
ksp-master-3 192.168.9.133 8 dieciséis 40 100 k8s-maestro
total 3 24 48 120 300

El entorno de combate real implica información sobre la versión del software.

  • Sistema operativo: openEuler 22.03 LTS SP3 x64

  • K8: v1.28.8

  • En contenedor: 1.7.13

  • Clave de Kube: v3.1.1

1. Configuración básica del sistema operativo

Tenga en cuenta que las siguientes operaciones deben realizarse en todos los servidores a menos que se especifique lo contrario. Este artículo solo selecciona el nodo Master-1 para demostración y asume que los otros servidores se han configurado de la misma manera.

1.1 Configurar el nombre del host

hostnamectl hostname ksp-master-1

1.2 Configurar DNS

echo "nameserver 114.114.114.114" > /etc/resolv.conf

1.3 Configurar la zona horaria del servidor

  • Configure la zona horaria del servidor en Asia/Shanghai .
timedatectl set-timezone Asia/Shanghai

1.4 Configurar la sincronización horaria

  • Instale chrony como software de sincronización horaria
yum install chrony 
  • Edite el archivo de configuración /etc/chrony.confy modifique la configuración del servidor ntp
vi /etc/chrony.conf

# 删除所有的 pool 配置
pool pool.ntp.org iburst

# 增加国内的 ntp 服务器,或是指定其他常用的时间服务器
pool cn.pool.ntp.org iburst

# 上面的手工操作,也可以使用 sed 自动替换
sed -i 's/^pool pool.*/pool cn.pool.ntp.org iburst/g' /etc/chrony.conf
  • Reinicie y configure el servicio chrony para que se inicie automáticamente al arrancar
systemctl enable chronyd --now
  • Verificar el estado de sincronización de crony
# 执行查看命令
chronyc sourcestats -v

# 正常的输出结果如下
[root@ksp-master-1 ~]# chronyc sourcestats -v
                             .- Number of sample points in measurement set.
                            /    .- Number of residual runs with same sign.
                           |    /    .- Length of measurement set (time).
                           |   |    /      .- Est. clock freq error (ppm).
                           |   |   |      /           .- Est. error in freq.
                           |   |   |     |           /         .- Est. offset.
                           |   |   |     |          |          |   On the -.
                           |   |   |     |          |          |   samples. \
                           |   |   |     |          |          |             |
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
111.230.189.174            18  11   977     -0.693      6.795  -1201us  2207us
electrode.felixc.at        18  10   917     +2.884      8.258    -31ms  2532us
tick.ntp.infomaniak.ch     14   7   720     +2.538     23.906  +6176us  4711us
time.cloudflare.com        18   7   913     +0.633      9.026  -2543us  3142us

1.5 Apague el firewall del sistema

systemctl stop firewalld && systemctl disable firewalld

1.6 Deshabilitar SELinux

El sistema mínimamente instalado de openEuler 22.03 SP3 tiene SELinux habilitado de forma predeterminada. Para reducir problemas, todos nuestros nodos deshabilitan SELinux.

# 使用 sed 修改配置文件,实现彻底的禁用
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 使用命令,实现临时禁用,这一步其实不做也行,KubeKey 会自动配置
setenforce 0

1.7 Instalar dependencias del sistema

En todos los nodos, ejecute el siguiente comando para instalar los paquetes básicos de dependencia del sistema para Kubernetes.

# 安装 Kubernetes 系统依赖包
yum install curl socat conntrack ebtables ipset ipvsadm

# 安装 tar 包,不装的话后面会报错。openEuler 也是个奇葩,迭代这么多版本了,默认居然还不安装 tar
yum install tar

2. Configuración del disco del sistema operativo

El servidor agrega un nuevo disco de datos /dev/sdb para el almacenamiento persistente de Containerd y K8s Pod .

Para satisfacer los deseos de algunos usuarios, se puede lograr una expansión dinámica cuando la capacidad del disco es insuficiente después de que la producción esté en línea. Este artículo usa LVM para configurar el disco ( de hecho, el entorno de producción que mantengo rara vez usa LVM ).

Tenga en cuenta que las siguientes operaciones deben realizarse en todos los nodos del clúster a menos que se especifique lo contrario. Este artículo solo selecciona el nodo Master-1 para demostración y asume que los otros servidores se han configurado de la misma manera.

2.1 Utilice LVM para configurar discos

  • Crear PV
 pvcreate /dev/sdb
  • CrearVG
vgcreate data /dev/sdb
  • Crear VI
# 使用所有空间,VG 名字为 data,LV 名字为 lvdata
lvcreate -l 100%VG data -n lvdata

2.2 Formatear disco

mkfs.xfs /dev/mapper/data-lvdata

2.3 Montaje del disco

  • Montaje manual
mkdir /data
mount /dev/mapper/data-lvdata /data/
  • Montar automáticamente en el arranque
tail -1 /etc/mtab >> /etc/fstab

2.4 Crear directorio de datos

  • Crear el directorio raíz de datos local de OpenEBS
mkdir -p /data/openebs/local
  • Crear directorio de datos en contenedores
mkdir -p /data/containerd
  • Cree una conexión suave al directorio de datos de Containerd
ln -s /data/containerd /var/lib/containerd

Nota: Hasta la versión v3.1.1, KubeKey no admitía cambiar el directorio de datos de Containerd durante la implementación. Solo puede usar este enlace suave de directorio como solución alternativa para aumentar el espacio de almacenamiento ( Containerd también se puede instalar manualmente con anticipación ).

3. Instalar e implementar K8

3.1 Descargar KubeKey

Este artículo utiliza el nodo master-1 como nodo de implementación y descarga la última versión del archivo binario KubeKey ( v3.1.1 ) al servidor. El número de versión específico de KubeKey se puede ver en la página de lanzamiento de KubeKey .

  • Descargue la última versión de KubeKey
mkdir ~/kubekey
cd ~/kubekey/

# 选择中文区下载(访问 GitHub 受限时使用)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -
  • El resultado de ejecución correcto es el siguiente.
[root@ksp-master-1 ~]# mkdir ~/kubekey
[root@ksp-master-1 ~]# cd ~/kubekey/
[root@ksp-master-1 kubekey]# export KKZONE=cn
[root@ksp-master-1 kubekey]# curl -sfL https://get-kk.kubesphere.io | sh -

Downloading kubekey v3.1.1 from https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v3.1.1/kubekey-v3.1.1-linux-amd64.tar.gz ...


Kubekey v3.1.1 Download Complete!

[root@ksp-master-1 kubekey]# ll -h
total 114M
-rwxr-xr-x. 1 root root 79M Apr 16 12:30 kk
-rw-r--r--. 1 root root 36M Apr 25 09:37 kubekey-v3.1.1-linux-amd64.tar.gz
  • Vea la lista de versiones de Kubernetes compatibles con KubeKey./kk version --show-supported-k8s
[root@ksp-master-1 kubekey]# ./kk version --show-supported-k8s
v1.19.0
......(受限于篇幅,中间的不展示,请读者根据需求查看)
v1.28.0
v1.28.1
v1.28.2
v1.28.3
v1.28.4
v1.28.5
v1.28.6
v1.28.7
v1.28.8
v1.29.0
v1.29.1
v1.29.2
v1.29.3

Nota: Los resultados de salida son los compatibles con KubeKey, pero eso no significa que KubeSphere y otros K8 también puedan admitirlo perfectamente. Este artículo solo utiliza KubeKey para implementar K8, por lo que no es necesario considerar la compatibilidad de versiones.

La versión K8s compatible con KubeKey es todavía relativamente nueva. Este artículo elige v1.28.8 . Para el entorno de producción, puede elegir v1.26.15 u otras versiones con un número par de versiones menores y más de 5 versiones de parches . No se recomienda elegir una versión que sea demasiado antigua. Después de todo, se lanzó la versión 1.30.

3.2 Crear un archivo de configuración de implementación del clúster K8

  1. Crear archivo de configuración del clúster

Este artículo eligió K8s v1.28.8 . Por lo tanto, el nombre del archivo de configuración especificado es k8s-v1288.yaml . Si no se especifica, el nombre del archivo predeterminado es config-sample.yaml .

./kk create config -f k8s-v1288.yaml --with-kubernetes v1.28.8

Nota: El archivo de configuración predeterminado generado tiene mucho contenido, por lo que no lo mostraré en detalle aquí. Para obtener parámetros de configuración más detallados, consulte el ejemplo de configuración oficial .

  1. Modificar archivo de configuración

El ejemplo de este artículo utiliza tres nodos como plano de control, etcd y nodos trabajadores al mismo tiempo.

Edite el archivo de configuración k8s-v1288.yaml, principalmente modifique la configuración relacionada del tipo: sección Clúster

Modifique la información de hosts y grupos de roles en el tipo: sección Clúster . Las instrucciones de modificación son las siguientes.

  • hosts: especifique la IP del nodo, el usuario ssh, la contraseña ssh y el puerto ssh.
  • roleGroups: especifique 3 nodos etcd y de plano de control, y reutilice la misma máquina como 3 nodos trabajadores
  • internalLoadbalancer: habilite el equilibrador de carga HAProxy integrado
  • Dominio: nombre de dominio personalizado lb.opsxlab.cn . Si no hay requisitos especiales, puede utilizar el valor predeterminado lb.kubesphere.local.
  • clusterName: personalice opsxlab.cn . Si no hay requisitos especiales, puede utilizar el valor predeterminado cluster.local.
  • autoRenewCerts: este parámetro puede realizar la renovación automática del vencimiento del certificado, el valor predeterminado es verdadero
  • contenedorManager: usando contenedores

El ejemplo modificado completo es el siguiente:

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: ksp-master-1, address: 192.168.9.131, internalAddress: 192.168.9.131, user: root, password: "OpsXlab@2024"}
  - {name: ksp-master-2, address: 192.168.9.132, internalAddress: 192.168.9.132, user: root, password: "OpsXlab@2024"}
  - {name: ksp-master-3, address: 192.168.9.133, internalAddress: 192.168.9.133, user: root, password: "OpsXlab@2024"}
  roleGroups:
    etcd:
    - ksp-master-1
    - ksp-master-2
    - ksp-master-3
    control-plane:
    - ksp-master-1
    - ksp-master-2
    - ksp-master-3
    worker:
    - ksp-master-1
    - ksp-master-2
    - ksp-master-3
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers
    internalLoadbalancer: haproxy

    domain: lb.opsxlab.cn
    address: ""
    port: 6443
  kubernetes:
    version: v1.28.8
    clusterName: opsxlab.cn
    autoRenewCerts: true
    containerManager: containerd
  etcd:
    type: kubekey
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    privateRegistry: ""
    namespaceOverride: ""
    registryMirrors: []
    insecureRegistries: []
  addons: []

3.3 Implementar K8

A continuación, ejecutamos el siguiente comando para implementar K8 utilizando el archivo de configuración generado anteriormente.

export KKZONE=cn
./kk create cluster -f k8s-v1288.yaml

Después de ejecutar el comando anterior, KubeKey primero verificará las dependencias y otros requisitos detallados para implementar K8. Después de pasar la verificación, se le pedirá que confirme la instalación. Ingrese y presione ENTRAR para continuar con la implementación.

[root@ksp-master-1 kubekey]# ./kk create cluster -f k8s-v1288.yaml


 _   __      _          _   __
| | / /     | |        | | / /
| |/ / _   _| |__   ___| |/ /  ___ _   _
|    \| | | | '_ \ / _ \    \ / _ \ | | |
| |\  \ |_| | |_) |  __/ |\  \  __/ |_| |
\_| \_/\__,_|_.__/ \___\_| \_/\___|\__, |
                                    __/ |
                                   |___/

10:45:28 CST [GreetingsModule] Greetings
10:45:28 CST message: [ksp-master-3]
Greetings, KubeKey!
10:45:28 CST message: [ksp-master-1]
Greetings, KubeKey!
10:45:28 CST message: [ksp-master-2]
Greetings, KubeKey!
10:45:28 CST success: [ksp-master-3]
10:45:28 CST success: [ksp-master-1]
10:45:28 CST success: [ksp-master-2]
10:45:28 CST [NodePreCheckModule] A pre-check on nodes
10:45:31 CST success: [ksp-master-3]
10:45:31 CST success: [ksp-master-1]
10:45:31 CST success: [ksp-master-2]
10:45:31 CST [ConfirmModule] Display confirmation form
+--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| name         | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd | nfs client | ceph client | glusterfs client | time         |
+--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| ksp-master-1 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 10:45:31 |
| ksp-master-2 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 10:45:31 |
| ksp-master-3 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 10:45:31 |
+--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+

This is a simple check of your environment.
Before installation, ensure that your machines meet all requirements specified at
https://github.com/kubesphere/kubekey#requirements-and-recommendations

Continue this installation? [yes/no]:

Aviso:

  • Los tres clientes relacionados con el almacenamiento, el cliente nfs, el cliente ceph y el cliente glusterfs, no están instalados. Los instalaremos por separado más adelante en la implementación real del almacenamiento de acoplamiento.
  • Docker y Containerd se instalarán automáticamente según el tipo de contenedorManager seleccionado en el archivo de configuración .

La implementación tarda entre 10 y 20 minutos. Depende de la velocidad de la red y la configuración de la máquina. Esta implementación tarda 20 minutos en completarse.

Una vez que se complete la implementación, debería ver un resultado similar al siguiente en su terminal.

10:59:25 CST [ConfigureKubernetesModule] Configure kubernetes
10:59:25 CST success: [ksp-master-1]
10:59:25 CST skipped: [ksp-master-2]
10:59:25 CST skipped: [ksp-master-3]
10:59:25 CST [ChownModule] Chown user $HOME/.kube dir
10:59:26 CST success: [ksp-master-3]
10:59:26 CST success: [ksp-master-2]
10:59:26 CST success: [ksp-master-1]
10:59:26 CST [AutoRenewCertsModule] Generate k8s certs renew script
10:59:27 CST success: [ksp-master-2]
10:59:27 CST success: [ksp-master-3]
10:59:27 CST success: [ksp-master-1]
10:59:27 CST [AutoRenewCertsModule] Generate k8s certs renew service
10:59:28 CST success: [ksp-master-3]
10:59:28 CST success: [ksp-master-2]
10:59:28 CST success: [ksp-master-1]
10:59:28 CST [AutoRenewCertsModule] Generate k8s certs renew timer
10:59:29 CST success: [ksp-master-2]
10:59:29 CST success: [ksp-master-3]
10:59:29 CST success: [ksp-master-1]
10:59:29 CST [AutoRenewCertsModule] Enable k8s certs renew service
10:59:29 CST success: [ksp-master-3]
10:59:29 CST success: [ksp-master-2]
10:59:29 CST success: [ksp-master-1]
10:59:29 CST [SaveKubeConfigModule] Save kube config as a configmap
10:59:29 CST success: [LocalHost]
10:59:29 CST [AddonsModule] Install addons
10:59:29 CST success: [LocalHost]
10:59:29 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.

Please check the result using the command:

        kubectl get pod -A

4. Verificar el clúster K8

4.1 Línea de comando kubectl para verificar el estado del clúster

Esta sección solo analiza brevemente el estado básico, que no es completo. Puede experimentar y explorar más detalles usted mismo.

  • Ver información del nodo del clúster

Ejecute el comando kubectl en el nodo master-1 para obtener la lista de nodos disponibles en el clúster K8s.

kubectl get nodes -o wide

Como puede ver en el resultado, el clúster K8s actual tiene tres nodos disponibles: la IP interna del nodo, la función del nodo, el número de versión de K8s del nodo, el tiempo de ejecución del contenedor y el número de versión, el tipo de sistema operativo, la versión del kernel y otra información.

[root@ksp-master-1 kubekey]# kubectl get nodes -o wide
NAME           STATUS   ROLES                  AGE     VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION                       CONTAINER-RUNTIME
ksp-master-1   Ready    control-plane,worker   9m43s   v1.28.8   192.168.9.131   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
ksp-master-2   Ready    control-plane,worker   8m8s    v1.28.8   192.168.9.132   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
ksp-master-3   Ready    control-plane,worker   8m9s    v1.28.8   192.168.9.133   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
  • Ver lista de pods

Ingrese el siguiente comando para obtener la lista de Pods que se ejecutan en el clúster K8.

kubectl get pods -o wide -A

Como puede ver en el resultado, todos los pods se están ejecutando.

[root@ksp-master-1 kubekey]# kubectl get pod -A -o wide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP              NODE        
kube-system   calico-kube-controllers-64f6cb8db5-fsgnq   1/1     Running   0          4m59s   10.233.84.2     ksp-master-1           
kube-system   calico-node-5hkm4                          1/1     Running   0          4m59s   192.168.9.133   ksp-master-3          
kube-system   calico-node-wqz9s                          1/1     Running   0          4m59s   192.168.9.132   ksp-master-2
kube-system   calico-node-zzr5n                          1/1     Running   0          4m59s   192.168.9.131   ksp-master-1
kube-system   coredns-76dd97cd74-66k8z                   1/1     Running   0          6m22s   10.233.84.1     ksp-master-1
kube-system   coredns-76dd97cd74-94kvl                   1/1     Running   0          6m22s   10.233.84.3     ksp-master-1
kube-system   kube-apiserver-ksp-master-1                1/1     Running   0          6m39s   192.168.9.131   ksp-master-1
kube-system   kube-apiserver-ksp-master-2                1/1     Running   0          4m52s   192.168.9.132   ksp-master-2
kube-system   kube-apiserver-ksp-master-3                1/1     Running   0          5m9s    192.168.9.133   ksp-master-3
kube-system   kube-controller-manager-ksp-master-1       1/1     Running   0          6m39s   192.168.9.131   ksp-master-1
kube-system   kube-controller-manager-ksp-master-2       1/1     Running   0          4m58s   192.168.9.132   ksp-master-2
kube-system   kube-controller-manager-ksp-master-3       1/1     Running   0          5m5s    192.168.9.133   ksp-master-3
kube-system   kube-proxy-2xpq4                           1/1     Running   0          5m3s    192.168.9.131   ksp-master-1
kube-system   kube-proxy-9frmd                           1/1     Running   0          5m3s    192.168.9.133   ksp-master-3
kube-system   kube-proxy-bhg2k                           1/1     Running   0          5m3s    192.168.9.132   ksp-master-2
kube-system   kube-scheduler-ksp-master-1                1/1     Running   0          6m39s   192.168.9.131   ksp-master-1
kube-system   kube-scheduler-ksp-master-2                1/1     Running   0          4m59s   192.168.9.132   ksp-master-2
kube-system   kube-scheduler-ksp-master-3                1/1     Running   0          5m5s    192.168.9.133   ksp-master-3
kube-system   nodelocaldns-gl6dc                         1/1     Running   0          6m22s   192.168.9.131   ksp-master-1
kube-system   nodelocaldns-q45jf                         1/1     Running   0          5m9s    192.168.9.133   ksp-master-3
kube-system   nodelocaldns-rskk5                         1/1     Running   0          5m8s    192.168.9.132   ksp-master-2
  • Ver lista de imágenes

Ingrese el siguiente comando para obtener la lista de imágenes que se han descargado en el nodo del clúster K8s.

[root@ksp-master-1 kubekey]# crictl images ls
IMAGE                                                                   TAG                 IMAGE ID            SIZE
registry.cn-beijing.aliyuncs.com/kubesphereio/cni                       v3.27.3             6527a35581401       88.4MB
registry.cn-beijing.aliyuncs.com/kubesphereio/coredns                   1.9.3               5185b96f0becf       14.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache        1.22.20             ff71cd4ea5ae5       30.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver            v1.28.8             e70a71eaa5605       34.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager   v1.28.8             e5ae3e4dc6566       33.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers          v3.27.3             3e4fd05c0c1c0       33.4MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy                v1.28.8             5ce97277076c6       28.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler            v1.28.8             ad3260645145d       18.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node                      v3.27.3             5c6ffd2b2a1d0       116MB
registry.cn-beijing.aliyuncs.com/kubesphereio/pause                     3.9                 e6f1816883972       321kB

Hasta ahora, hemos completado la implementación de un clúster K8 mínimo con tres nodos maestros y nodos trabajadores reutilizados.

A continuación, implementaremos un servidor web Nginx simple en el clúster K8 para probar y verificar si el clúster K8 es normal.

5. Implementar recursos de prueba

Este ejemplo utiliza herramientas de línea de comandos para implementar un servidor web Nginx en un clúster K8.

5.1 Crear implementación de Nginx

Ejecute el siguiente comando para crear una implementación que implemente el servidor web Nginx. En este ejemplo, crearemos un pod con dos réplicas basadas en la imagen nginx:alpine.

kubectl create deployment nginx --image=nginx:alpine --replicas=2

5.2 Crear servicio Nginx

Cree un nuevo servicio K8s con el nombre de servicio nginx, tipo de servicio Nodeport y puerto de servicio externo 80.

kubectl create service nodeport nginx --tcp=80:80

5.3 Verificar la implementación y el pod de Nginx

  • Ejecute los siguientes comandos para ver los recursos de implementación y pod creados.
kubectl get deployment -o wide
kubectl get pods -o wide
  • Vea los resultados de la siguiente manera:
[root@ksp-master-1 kubekey]# kubectl get deployment -o wide
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
nginx   2/2     2            2           20s   nginx        nginx:alpine   app=nginx

[root@ksp-master-1 kubekey]# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
nginx-6c557cc74d-tbw9c   1/1     Running   0          23s   10.233.102.187   ksp-master-2   <none>           <none>
nginx-6c557cc74d-xzzss   1/1     Running   0          23s   10.233.103.148   ksp-master-1   <none>           <none>

5.4 Verificar el servicio Nginx

Ejecute el siguiente comando para ver la lista de servicios disponibles. En la lista, podemos ver que el tipo de servicio nginx es Nodeport y el puerto 30619 está abierto en el host de Kubernetes.

kubectl get svc -o wide

Vea los resultados de la siguiente manera:

[root@ksp-master-1 kubekey]# kubectl get svc -o wide
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE     SELECTOR
kubernetes   ClusterIP   10.233.0.1     <none>        443/TCP        4d22h   <none>
nginx        NodePort    10.233.14.48   <none>        80:30619/TCP   5s      app=nginx

5.5 Servicio de verificación

Ejecute el siguiente comando para acceder al servicio Nginx implementado y verificar si el servicio se implementó correctamente.

  • Verificar el acceso directo al Pod
curl 10.233.102.187

# 访问结果如下
[root@ks-master-1 ~]# curl 10.233.102.187
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
  • Verificar acceso al Servicio
curl 10.233.14.48

# 访问结果同上,略
  • Verificar acceso a Nodeport
curl 192.168.9.131:30619

# 访问结果同上,略

6. Scripts de Shell automatizados

Todos los pasos del artículo se han compilado en scripts automatizados y no se muestran en este documento debido a limitaciones de espacio.

7. Resumen

Este artículo comparte el proceso detallado y las precauciones para implementar un clúster K8s v1.28.8 usando KubeKey , una herramienta desarrollada por KubeSphere, en el sistema operativo openEuler 22.03 LTS SP3.

Los principales contenidos se resumen a continuación:

  • Configuración básica del sistema operativo openEuler 22.03 LTS SP3
  • Configuración de creación de disco LVM en el sistema operativo openEuler 22.03 LTS SP3
  • Utilice KubeKey para implementar el clúster de alta disponibilidad de K8
  • Prueba de verificación después de completar la implementación del clúster K8

Descargo de responsabilidad:

  • El nivel del autor es limitado. Aunque ha pasado por muchas verificaciones y comprobaciones y ha hecho todo lo posible para garantizar la exactitud del contenido, es posible que todavía haya omisiones . No dude en darnos consejos de expertos de la industria.
  • El contenido descrito en este artículo solo ha sido verificado y probado en entornos de combate reales. Los lectores pueden aprender y aprender de él, pero está estrictamente prohibido utilizarlo directamente en entornos de producción . ¡El autor no es responsable de ningún problema causado por esto !

¡Este artículo está publicado por OpenWrite , un blog que publica varios artículos !

RustDesk suspende los servicios nacionales debido a un fraude desenfrenado Apple lanza el chip M4 Taobao (taobao.com) reinicia el trabajo de optimización de la versión web Los estudiantes de secundaria crean su propio lenguaje de programación de código abierto como regalo de mayoría de edad - Comentarios críticos de los internautas: Confiando en Defense Yunfeng renunció a Alibaba y planea producir en el futuro el destino para programadores de juegos independientes Visual Studio Code 1.89 lanza Java 17. Es la versión Java LTS más utilizada y tiene una participación de mercado de 70. % y Windows 11 continúa disminuyendo. Open Source Daily | Google apoya a Hongmeng para que se haga cargo; Rabbit R1 de código abierto respalda la ansiedad y las ambiciones de Microsoft Haier Electric;
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4197945/blog/11105906
Recomendado
Clasificación