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.conf
y 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
- 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 .
- 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 sí 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 !
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;¡Este artículo está publicado por OpenWrite , un blog que publica varios artículos !