Versión ARM de OpenEuler 22.03 Implementación de KubeSphere v3.4.0 continuación de la guía incompleta

Autor: Habilidades de operación y mantenimiento

Prefacio

Puntos de conocimiento

  • Clasificación: nivel de entrada
  • KubeKey instala e implementa la versión ARM de KubeSphere y Kubernetes
  • Preguntas frecuentes sobre KubeSphere y Kubernetes para ARM

Configuración real del servidor (servidor de prueba en la nube personal)

nombre de la CPU IP UPC Memoria disco del sistema disco de datos usar
ks-master-1 172.16.33.16 6 dieciséis 50 200 KubeSphere/k8s-master
ks-master-2 172.16.33.22 6 dieciséis 50 200 KubeSphere/k8s-master
ks-master-3 172.16.33.23 6 dieciséis 50 200 KubeSphere/k8s-master
total 10 18 48 150 600+

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

  • Chip de servidor: Kunpeng-920

  • Sistema operativo: openEuler 22.03 LTS SP2 aarch64

  • KubeSphere: v3.4.0

  • Kubernetes: v1.26.5

  • En contenedor: 1.6.4

  • Clave de Kube: v3.0.10

1. Introducción a este artículo

Este artículo es una secuela de la guía incompleta para implementar KubeSphere v3.4.0 en la versión ARM de OpenEuler 22.03 . Debido al límite en el número de caracteres, el documento completo se ha dividido en dos artículos.

En el artículo anterior, completamos la implementación de los clústeres de KubeSphere y Kubernetes. En el próximo artículo, presentaremos principalmente los dos temas siguientes:

  • Implemente recursos de prueba para verificar si las funciones básicas de KubeSphere y Kubernetes son normales.
  • Resuelva el problema de los componentes de servicio anormales de la versión ARM de KubeSphere y Kubernetes ( valor principal de este artículo )

KubeSphere y Kubernetes se implementan en la arquitectura ARM y la implementación de KubeSphere y clústeres completos de Kubernetes. Cuando los componentes conectables de KubeSphere están habilitados, la implementación de componentes individuales fallará. Necesitamos reemplazar manualmente la imagen de la versión ARM proporcionada por el oficial o un tercero o crear manualmente la imagen de la versión ARM basada en el código fuente oficial.

Este artículo registra en detalle los diversos problemas y errores encontrados durante la implementación final y las soluciones correspondientes. Debido a las capacidades limitadas, todos los problemas de incompatibilidad arquitectónica encontrados en este artículo se resolvieron reemplazando manualmente los repositorios de terceros u otros repositorios oficiales con imágenes de versión ARM iguales o similares.

Se recomienda que los lectores que planeen usarlo en producción tengan la capacidad de usar el código fuente oficial y DockerFile para construir la versión ARM de la imagen del contenedor que sea exactamente igual a la versión X86. No reemplace versiones similares ni use imágenes de terceros. Precisamente porque este artículo no implica el uso de código fuente oficial y Dockerfile para crear imágenes ARM, se denomina guía incompleta .

2. Anomalías y soluciones durante la instalación.

2.1 El formato del paquete binario del componente relacionado con Kubernetes no coincide

  • Error al reportar
# containerd 启动失败
Oct 12 10:44:00 KP-Euler-ZH-01 systemd[1]: Starting containerd container runtime...
Oct 12 10:44:00 KP-Euler-ZH-01 (ntainerd)[27271]: containerd.service: Failed to execute /usr/bin/containerd: Exec format error
Oct 12 10:44:00 KP-Euler-ZH-01 (ntainerd)[27271]: containerd.service: Failed at step EXEC spawning /usr/bin/containerd: Exec format error
Oct 12 10:44:00 KP-Euler-ZH-01 systemd[1]: containerd.service: Main process exited, code=exited, status=203/EXEC
Oct 12 10:44:00 KP-Euler-ZH-01 systemd[1]: containerd.service: Failed with result 'exit-code'.
Oct 12 10:44:00 KP-Euler-ZH-01 systemd[1]: Failed to start containerd container runtime.
Oct 12 10:44:05 KP-Euler-ZH-01 systemd[1]: containerd.service: Scheduled restart job, restart counter is at 241.
Oct 12 10:44:05 KP-Euler-ZH-01 systemd[1]: Stopped containerd container runtime.

# 查看 kk 下载的二进制包
[root@ks-master-1 kubekey]# ll kubekey/kube/v1.26.5/ -R
kubekey/kube/v1.26.5/:
total 4
drwxr-xr-x. 2 root root 4096 Oct 12 10:18 amd64

kubekey/kube/v1.26.5/amd64:
total 211048
-rw-r--r--. 1 root root  46788608 Oct 12 10:04 kubeadm
-rw-r--r--. 1 root root  48046080 Oct 12 10:18 kubectl
-rw-r--r--. 1 root root 121277432 Oct 12 10:04 kubelet

[root@ks-master-1 kubekey]# ll kubekey/containerd/1.6.4/ -R
kubekey/containerd/1.6.4/:
total 4
drwxr-xr-x. 2 root root 4096 Oct 12 10:20 amd64

kubekey/containerd/1.6.4/amd64:
total 43396
-rw-r--r--. 1 root root 44436699 Oct 12 10:21 containerd-1.6.4-linux-amd64.tar.gz
  • solución
kk 默认下载的二进制包都是 amd64 格式的不适用于 ARM 环境,需要手工修改创建集群的配置文件
在 spec.hosts 的主机配置中增加节点的 arch 属性
  • Efecto de instalación correcto

Hay muchos resultados de registro durante el proceso de instalación. Este artículo solo muestra los puntos importantes. Asegúrese de observar que al descargar el paquete binario, el formato es arm64 . Otros resultados de registro no se mostrarán aquí para ahorrar espacio.

Continue this installation? [yes/no]: yes
10:49:21 CST success: [LocalHost]
10:49:21 CST [NodeBinariesModule] Download installation binaries
10:49:21 CST message: [localhost]
downloading arm64 kubeadm v1.26.5 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 43.3M  100 43.3M    0     0  1035k      0  0:00:42  0:00:42 --:--:-- 1212k
10:50:04 CST message: [localhost]
downloading arm64 kubelet v1.26.5 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  111M  100  111M    0     0  1018k      0  0:01:51  0:01:51 --:--:-- 1027k
10:51:56 CST message: [localhost]
downloading arm64 kubectl v1.26.5 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 44.3M  100 44.3M    0     0  1022k      0  0:00:44  0:00:44 --:--:-- 1081k
10:52:41 CST message: [localhost]
downloading arm64 helm v3.9.0 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 43.6M  100 43.6M    0     0  1035k      0  0:00:43  0:00:43 --:--:-- 1181k
10:53:24 CST message: [localhost]
downloading arm64 kubecni v1.2.0 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 36.2M  100 36.2M    0     0  1039k      0  0:00:35  0:00:35 --:--:-- 1236k
10:54:00 CST message: [localhost]
downloading arm64 crictl v1.24.0 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12.7M  100 12.7M    0     0  1032k      0  0:00:12  0:00:12 --:--:-- 1080k
10:54:13 CST message: [localhost]
downloading arm64 etcd v3.4.13 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15.3M  100 15.3M    0     0  1026k      0  0:00:15  0:00:15 --:--:-- 1074k
10:54:28 CST message: [localhost]
downloading arm64 containerd 1.6.4 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 31.9M  100 31.9M    0     0  1015k      0  0:00:32  0:00:32 --:--:-- 1021k
10:55:01 CST message: [localhost]
downloading arm64 runc v1.1.1 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 8837k  100 8837k    0     0  1099k      0  0:00:08  0:00:08 --:--:-- 1182k
10:55:09 CST message: [localhost]
downloading arm64 calicoctl v3.23.2 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 55.5M  100 55.5M    0     0  1030k      0  0:00:55  0:00:55 --:--:-- 1214k
10:56:04 CST success: [LocalHost]

3. Componentes y soluciones anormales

Dado que el soporte de KubeSphere Community Edition para ARM no es perfecto, de forma predeterminada solo puede garantizar que KubeSphere-Core se pueda implementar con éxito bajo la arquitectura ARM. Cuando los complementos están habilitados, no todos los complementos tienen imágenes ARM. Cuando no hay Imagen de la versión ARM correspondiente. El sistema extrae la versión x86 de la imagen para crear e iniciar el servicio. Por lo tanto, provocará excepciones en el inicio del servicio causadas por diferentes arquitecturas. La excepción debe resolverse según el mensaje de error.

Las soluciones para resolver excepciones incluyen las siguientes:

  • Utilice otros repositorios oficiales de componentes anormales o la misma versión de la imagen ARM proporcionada por un tercero ( solución subóptima , primero busque la oficial, no es necesario buscar imágenes proporcionadas por usuarios de terceros)
  • Utilice otros repositorios oficiales de componentes anormales o versiones similares de imágenes ARM proporcionadas por terceros ( solución garantizada , limitada al entorno de prueba de I+D)
  • Utilice el código fuente oficial del componente y Dockerfile para crear la imagen ARM usted mismo ( la mejor solución, debido a la capacidad limitada, por lo que este artículo no la cubre y puede actualizarse más adelante).

El contenido de esta sección registra completamente los problemas encontrados durante todo el proceso de implementación y las soluciones correspondientes, que también es el valor central de este artículo.

3.1 Verifique el Pod correspondiente al componente anormal

[root@ks-master-1 ~]# kubectl get pods -A -o wide | grep CrashLoopBackOff | grep -v weave
argocd                         devops-argocd-applicationset-controller-8486797d4d-72888   0/1     CrashLoopBackOff        24 (5m4s ago)    107m   10.233.103.12   ks-master-1   <none>           <none>
istio-system                   istiod-1-14-6-6576b8664b-28c44                             0/1     CrashLoopBackOff        25 (43s ago)     107m   10.233.102.8    ks-master-2   <none>           <none>
kubesphere-controls-system     default-http-backend-767cdb5fdc-ptqhh                      0/1     CrashLoopBackOff        24 (5m5s ago)    108m   10.233.93.9     ks-master-3   <none>           <none>
kubesphere-devops-system       devops-jenkins-774fdb948b-4rk56                            0/1     Init:CrashLoopBackOff   23 (4m57s ago)   107m   10.233.93.18    ks-master-3   <none>           <none>

Si selecciona el componente de tejido durante la implementación inicial como yo, el Pod correspondiente en el espacio de nombres de tejido también estará en la lista de Pod fallidos. Debido a que el tejido está desactualizado y no se puede resolver, los Pods correspondientes al tejido se excluyen al filtrar Pods anormales.

Incluso después de excluir el tejido, el resultado anterior no incluye todos los componentes anormales. Porque antes de recopilar este resultado, resolví los problemas de varios otros componentes.

Primero manejamos las excepciones de acuerdo con el orden de los resultados de salida anteriores. El informe de errores y el proceso de resolución de componentes anormales que no están en los resultados anteriores se colocan más adelante. Consulte a continuación para obtener detalles específicos.

3.2 Resolver excepciones de Argo CD

  • Ver pod anormal
[root@ks-master-1 ~]# kubectl get pods -A -o wide | grep -v Running | grep -v Completed
NAMESPACE                      NAME                                                           READY   STATUS             RESTARTS           AGE     IP               NODE          NOMINATED NODE   READINESS GATES
argocd                         devops-argocd-applicationset-controller-8486797d4d-72888       0/1     CrashLoopBackOff   1119 (4m4s ago)    3d23h   10.233.103.12    ks-master-1   <none>           <none>
istio-system                   istiod-1-14-6-6576b8664b-28c44                                 0/1     CrashLoopBackOff   1119 (3m37s ago)   3d23h   10.233.102.8     ks-master-2   <none>           <none>
  • Verifique el registro del Pod anormal ( generalmente causado por una falta de coincidencia en la arquitectura del programa binario, es decir, los programas x86 se ejecutan en ARM )
[root@ks-master-1 ~]# kubectl logs --all-containers devops-argocd-applicationset-controller-8486797d4d-72888 -n argocd
exec /usr/local/bin/applicationset-controller: exec format error
  • Verifique la imagen utilizada por el Pod anormal
[root@ks-master-1 ~]# kubectl describe pods devops-argocd-applicationset-controller-8486797d4d-72888 -n argocd | grep Image:
    Image:         registry.cn-beijing.aliyuncs.com/kubesphereio/argocd-applicationset:v0.4.1
  • Verifique la estructura anormal del espejo Pod
# 查看异常 Pod 镜像架构
[root@ks-master-1 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/argocd-applicationset:v0.4.1 | grep arch
      "architecture": "amd64",
  • Obtenga la imagen de la versión ARM adaptada ( la misma versión de la imagen de la versión ARM oficial de kubesphere )
# 找个相同版本的 ARM 架构的镜像
crictl pull kubespheredev/argocd-applicationset-arm64:v0.4.1
  • Vuelva a etiquetar la imagen ( para mantener coherente el nombre de la imagen )
ctr -n k8s.io images tag docker.io/kubespheredev/argocd-applicationset-arm64:v0.4.1 registry.cn-beijing.aliyuncs.com/kubesphereio/argocd-applicationset-arm64:v0.4.1
  • Redistribuir componentes
# 修改 Deployment 使用的镜像,并重启
kubectl set image deployment/devops-argocd-applicationset-controller applicationset-controller=registry.cn-beijing.aliyuncs.com/kubesphereio/argocd-applicationset-arm64:v0.4.1 -n argocd
kubectl rollout restart deployment/devops-argocd-applicationset-controller -n argocd
  • Verifique que el nuevo Pod se haya creado e iniciado correctamente
[root@ks-master-1 ~]# kubectl get pods -o wide -n argocd | grep applicationset-controller
devops-argocd-applicationset-controller-864f464855-64zvf   1/1     Running   0          56s     10.233.103.125   ks-master-1   <none>           <none>

3.3 Resolver excepciones de Istio

  • Ver pod anormal
[root@ks-master-1 ~]# kubectl get pods -A -o wide | grep -v Running | grep -v Completed
NAMESPACE                      NAME                                                           READY   STATUS             RESTARTS           AGE     IP               NODE          NOMINATED NODE   READINESS GATES
istio-system                   istiod-1-14-6-6576b8664b-28c44                                 0/1     CrashLoopBackOff   1122 (3m10s ago)   3d23h   10.233.102.8     ks-master-2   <none>           <none>
  • Verifique el registro del Pod anormal
[root@ks-master-1 ~]# kubectl logs --all-containers istiod-1-14-6-6576b8664b-28c44 -n istio-system
exec /usr/local/bin/pilot-discovery: exec format error
  • Verifique la imagen utilizada por el Pod anormal
[root@ks-master-1 ~]# kubectl describe pods istiod-1-14-6-6576b8664b-28c44 -n istio-system | grep Image:
    Image:         registry.cn-beijing.aliyuncs.com/kubesphereio/pilot:1.14.6
  • Verifique la estructura anormal del espejo Pod
# 查看异常 Pod 镜像架构
[root@ks-master-2 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/pilot:1.14.6 | grep arch
      "architecture": "amd64",
  • Obtenga la imagen de la versión ARM adaptada ( imagen ARM de versión similar oficial de istio )
# 找个相近版本的 ARM 架构的镜像(官方没有 1.14.6 的 ARM 镜像,从 1.15 开始才原生支持 ARM,所以用了 1.15.7 代替,生产环境建议自己用 1.14.6 版本的源码编译构建)
crictl pull istio/pilot:1.15.7 --platform arm64

# 确保镜像架构是 arm64
[root@ks-master-2 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/pilot:1.15.7 | grep arch
      "architecture": "arm64",
  • Reetiquetado espejo
ctr -n k8s.io images tag docker.io/istio/pilot:1.15.7 registry.cn-beijing.aliyuncs.com/kubesphereio/pilot:1.15.7
  • Redistribuir componentes
# 修改 Deployment 使用的镜像,并重启
kubectl set image deployment/istiod-1-14-6 discovery=registry.cn-beijing.aliyuncs.com/kubesphereio/pilot:1.15.7 -n istio-system
kubectl rollout restart deployment/istiod-1-14-6 -n istio-system
  • Verifique que el nuevo Pod se haya creado e iniciado correctamente
# 确保新的 Pod 创建并启动成功
[root@ks-master-1 ~]# kubectl get pods -o wide -n istio-system | grep istio
istiod-1-14-6-58ff9f7cc-59djl      0/1     Pending   0          7m59s   <none>           <none>        <none>           <none>
istiod-1-14-6-747f5b86b-bg29h      1/1     Running   0          15m     10.233.102.122   ks-master-2   <none>           <none>

# 上面的结果中,有一个 POd 一直处于 Pending 状态,查看具体原因
[root@ks-master-1 ~]# kubectl events pod --for=pod/istiod-1-14-6-58ff9f7cc-59djl -n istio-system
LAST SEEN               TYPE      REASON             OBJECT                              MESSAGE
3m26s (x2 over 8m42s)   Warning   FailedScheduling   Pod/istiod-1-14-6-58ff9f7cc-59djl   0/3 nodes are available: 3 Insufficient cpu. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod..

# 结果显示 CPU 资源不足,验证
[root@ks-master-1 ~]# for i in {1..3};do echo ks-master-$i Cpu Usage: && kubectl describe node ks-master-$i | grep cpu | grep -v cpu: ;done
ks-master-1 Cpu Usage:
  cpu                3317m (92%)   10500m (291%)
ks-master-2 Cpu Usage:
  cpu                3587m (99%)   11910m (330%)
ks-master-3 Cpu Usage:
  cpu                3317m (92%)   10800m (300%)

# 增加服务器 CPU 资源,重启服务器后,再次查看
[root@ks-master-1 ~]# kubectl get pods -o wide -n istio-system | grep istio
istiod-1-14-6-6d4dbc56df-n5z9g     1/1     Running             0             17s   10.233.102.149   ks-master-2   <none>           <none>

3.4 Resolver la excepción de copia de seguridad http

  • Ver pod anormal
[root@ks-master-1 ~]# kubectl get pods -A -o wide | grep -v Running | grep -v Completed
NAMESPACE                      NAME                                                           READY   STATUS             RESTARTS           AGE     IP               NODE          NOMINATED NODE   READINESS GATES
kubesphere-controls-system     default-http-backend-767cdb5fdc-ptqhh                          0/1     CrashLoopBackOff   1108 (4m7s ago)    3d22h   10.233.93.9      ks-master-3   <none>           <none>
  • Verifique el registro del Pod anormal
[root@ks-master-1 ~]# kubectl logs --all-containers default-http-backend-767cdb5fdc-ptqhh -n kubesphere-controls-system
exec /server: exec format error
  • Verifique la imagen utilizada por el Pod anormal
[root@ks-master-1 ~]# kubectl describe pods default-http-backend-767cdb5fdc-ptqh -n kubesphere-controls-system | grep Image:
    Image:          registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4
  • Verifique la estructura anormal del espejo Pod
[root@ks-master-3 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4 | grep arch
      "architecture": "amd64",
  • Obtenga la imagen de la versión ARM adaptada ( imagen ARM de terceros de la misma versión )
crictl pull mirrorgooglecontainers/defaultbackend-arm64:1.4
  • Vuelva a etiquetar la imagen ( para mantener coherente el nombre de la imagen )
ctr -n k8s.io images tag docker.io/mirrorgooglecontainers/defaultbackend-arm64:1.4 registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-arm64:1.4
  • Redistribuir componentes
# 修改 Deployment 使用的镜像,并重启
kubectl set image deployment/default-http-backend default-http-backend=registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-arm64:1.4 -n kubesphere-controls-system
kubectl rollout restart deployment/default-http-backend -n kubesphere-controls-system
  • Verifique que el nuevo Pod se haya creado e iniciado correctamente
[root@ks-master-1 ~]# kubectl get pods -o wide -n kubesphere-controls-system | grep default-http-backend
default-http-backend-694d6557b5-h674b   1/1     Running   0          14m     10.233.102.120   ks-master-2   <none>           <none>

3.5 Resolver excepciones de Jenkins

  • Verifique el registro del Pod anormal
[root@ks-master-1 ~]# kubectl logs --all-containers devops-jenkins-774fdb948b-4rk56 -n kubesphere-devops-system
exec /bin/sh: exec format error
Error from server (BadRequest): container "devops-jenkins" in pod "devops-jenkins-774fdb948b-4rk56" is waiting to start: PodInitializing
  • Verifique los eventos de Pod anormales
[root@ks-master-1 ~]# kubectl events devops-jenkins-774fdb948b-4rk56 -n kubesphere-devops-system
LAST SEEN             TYPE      REASON             OBJECT                                MESSAGE
40m                   Normal    SuccessfulCreate   CronJob/devops                        Created job devops-28284990
40m                   Normal    SuccessfulCreate   Job/devops-28284990                   Created pod: devops-28284990-59cvp
40m                   Normal    Scheduled          Pod/devops-28284990-59cvp             Successfully assigned kubesphere-devops-system/devops-28284990-59cvp to ks-master-1
40m                   Normal    Pulling            Pod/devops-28284990-59cvp             Pulling image "registry.cn-beijing.aliyuncs.com/kubesphereio/devops-tools:ks-v3.4.0"
40m                   Normal    Pulled             Pod/devops-28284990-59cvp             Successfully pulled image "registry.cn-beijing.aliyuncs.com/kubesphereio/devops-tools:ks-v3.4.0" in 427.197317ms (427.222677ms including waiting)
40m                   Normal    Created            Pod/devops-28284990-59cvp             Created container pipeline-run-gc
40m                   Normal    Started            Pod/devops-28284990-59cvp             Started container pipeline-run-gc
40m                   Normal    Completed          Job/devops-28284990                   Job completed
40m                   Normal    SawCompletedJob    CronJob/devops                        Saw completed job: devops-28284990, status: Complete
10m                   Normal    SuccessfulCreate   CronJob/devops                        Created job devops-28285020
10m                   Normal    Scheduled          Pod/devops-28285020-zqd72             Successfully assigned kubesphere-devops-system/devops-28285020-zqd72 to ks-master-1
10m                   Normal    SuccessfulCreate   Job/devops-28285020                   Created pod: devops-28285020-zqd72
10m                   Normal    Started            Pod/devops-28285020-zqd72             Started container pipeline-run-gc
10m                   Normal    Created            Pod/devops-28285020-zqd72             Created container pipeline-run-gc
10m                   Normal    Pulled             Pod/devops-28285020-zqd72             Successfully pulled image "registry.cn-beijing.aliyuncs.com/kubesphereio/devops-tools:ks-v3.4.0" in 423.190976ms (423.205056ms including waiting)
10m                   Normal    Pulling            Pod/devops-28285020-zqd72             Pulling image "registry.cn-beijing.aliyuncs.com/kubesphereio/devops-tools:ks-v3.4.0"
10m                   Normal    Completed          Job/devops-28285020                   Job completed
10m                   Normal    SuccessfulDelete   CronJob/devops                        Deleted job devops-28284930
10m                   Normal    SawCompletedJob    CronJob/devops                        Saw completed job: devops-28285020, status: Complete
83s (x431 over 95m)   Warning   BackOff            Pod/devops-jenkins-774fdb948b-4rk56   Back-off restarting failed container copy-default-config in pod devops-jenkins-774fdb948b-4rk56_kubesphere-devops-system(d4e1ad50-0930-4ea7-823d-200bd90df471)
  • Verifique la imagen utilizada por el Pod anormal
[root@ks-master-1 ~]# kubectl describe pods devops-jenkins-774fdb948b-4rk56 -n kubesphere-devops-system | grep Image:
    Image:         registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.0-2.319.3-1
    Image:         registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.0-2.319.3-1
  • Verifique la estructura anormal del espejo Pod
[root@ks-master-3 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.0-2.319.3-1 | grep arch
      "architecture": "amd64",
  • Obtenga la imagen de la versión ARM adaptada ( versión similar de la imagen de la versión ARM oficial de kubesphere )
# 没有找到同版本的,只能找了一个相近版本的 ARM 架构的镜像
crictl pull docker.io/kubesphere/ks-jenkins:v3.4.1-2.319.3  --platform arm64

# 确保 image 架构是 arm64
[root@ks-master-3 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.0-2.319.3-1 | grep arch
      "architecture": "arm64",
  • Vuelva a etiquetar la imagen ( para mantener coherente el nombre de la imagen )
crictl rmi registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.0-2.319.3-1
ctr -n k8s.io images tag docker.io/kubesphere/ks-jenkins:v3.4.1-2.319.3 registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.0-2.319.3-1
  • Redistribuir componentes
# 查找现有 pod
[root@ks-master-3 ~]# kubectl get pods -A -o wide | grep jenkins
kubesphere-devops-system       devops-jenkins-774fdb948b-fmmls                                0/1     Init:CrashLoopBackOff   6 (43s ago)       6m28s   10.233.93.27    ks-master-3   <none>           <none>

# 删除 pod,系统会自动重建
kubectl delete pod devops-jenkins-774fdb948b-fmmls -n kubesphere-devops-system

3.6 Resolver excepciones de tejido

Weave se habilita durante la implementación inicial, lo que genera una excepción en la implementación del servicio. Debe hacer lo siguiente para desinstalar el complemento de weave.

Nota: Si es capaz, puede crear la versión correspondiente de la imagen ARM usted mismo. Me di por vencido. Después de todo, este módulo funcional es de poca utilidad. El proyecto ya no está bajo mantenimiento y las instrucciones de mantenimiento se han detenido .

  • Ver pod anormal
[root@ks-master-1 ~]# kubectl get pods -A -o wide | grep weave
weave                          weave-scope-agent-78r2r                                    0/1     CrashLoopBackOff    5 (95s ago)    8m41s   172.16.33.16    ks-master-1   <none>           <none>
weave                          weave-scope-agent-gcm6z                                    0/1     CrashLoopBackOff    5 (69s ago)    8m40s   172.16.33.23    ks-master-3   <none>           <none>
weave                          weave-scope-agent-kpp46                                    0/1     CrashLoopBackOff    5 (79s ago)    8m40s   172.16.33.22    ks-master-2   <none>           <none>
weave                          weave-scope-app-c6966bf4-c79n2                             0/1     CrashLoopBackOff    5 (67s ago)    8m42s   10.233.93.10    ks-master-3   <none>           <none>
weave                          weave-scope-cluster-agent-6f8f6596ff-xpctc                 0/1     CrashLoopBackOff    5 (75s ago)    8m41s   10.233.102.7    ks-master-2   <none>           <none>
  • Verifique el registro del Pod anormal
[root@ks-master-1 ~]# kubectl logs -n weave weave-scope-agent-78r2r
exec /home/weave/scope: exec format error
  • Verifique la imagen utilizada por el Pod anormal
[root@ks-master-1 ~]# kubectl describe pod weave-scope-agent-78r2r -n weave | grep Image:
    Image:         registry.cn-beijing.aliyuncs.com/kubesphereio/scope:1.13.0
  • Verifique la estructura anormal del espejo Pod
[root@ks-master-1 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/scope:1.13.0 | grep arch
      "architecture": "amd64",
  • Edite el archivo de configuración del clúster,kubectl edit cc ks-installer -n kubesphere-system
 network:
    ippool:
      type: calico
    networkpolicy:
      enabled: true
    topology:
      type: weave-scope # 修改为 none
  • Una vez completada la modificación, se volverá a implementar automáticamente (también puede usar el siguiente comando para eliminar el pod de ks-installer y forzar el reinicio manual de la tarea de implementación)
kubectl delete pod ks-installer-6674579f54-4s4tp -n kubesphere-system
  • Ver registros de implementación
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

3.7 Resolver la excepción del servidor de métricas

  • Ver pod anormal
[root@ks-master-1 kubekey]# kubectl get pods -A
NAMESPACE           NAME                                           READY   STATUS             RESTARTS        AGE
kube-system         metrics-server-66b6cfb784-85l94                0/1     CrashLoopBackOff   38 (114s ago)   171m
  • Verifique el registro del Pod anormal
[root@ks-master-1 kubekey]# kubectl logs metrics-server-66b6cfb784-85l94 -n kube-system
exec /metrics-server: exec format error
  • Verifique la imagen utilizada por el Pod anormal
[root@ks-master-1 kubekey]# kubectl describe pod metrics-server-66b6cfb784-85l94 -n kube-system | grep Image:
    Image:         registry.cn-beijing.aliyuncs.com/kubesphereio/metrics-server:v0.4.2
  • Verifique la estructura anormal del espejo Pod
[root@ks-master-3 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/metrics-server:v0.4.2 | grep arch
      "architecture": "amd64",
  • Obtenga la imagen de la versión ARM adaptada ( la misma versión de la imagen de la versión ARM oficial de kubesphere )
# 拉取 arm64 镜像
crictl pull registry.cn-beijing.aliyuncs.com/kubesphereio/metrics-server:v0.4.2-arm64  --platform arm64
  • Reetiquetado espejo
# 删除 amd64 镜像
crictl rmi registry.cn-beijing.aliyuncs.com/kubesphereio/metrics-server:v0.4.2

# 重新打 tag
ctr -n k8s.io images tag registry.cn-beijing.aliyuncs.com/kubesphereio/metrics-server:v0.4.2-arm64 registry.cn-beijing.aliyuncs.com/kubesphereio/metrics-server:v0.4.2
  • Redistribuir componentes
# 删除 ks-install 重启安装任务
kubectl delete pod ks-installer-6674579f54-4s4tp -n kubesphere-system

3.8 Resolver excepciones de Minio

  • Ver pod anormal
[root@ks-master-1 ~]# kubectl get pods -A -o wide
NAMESPACE           NAME                                           READY   STATUS             RESTARTS        AGE     IP             NODE          NOMINATED NODE   READINESS GATES
kubesphere-system   minio-757c8bc7f-tlnts                          0/1     CrashLoopBackOff   5 (111s ago)    5m27s   10.233.103.4   ks-master-1   <none>           <none>
kubesphere-system   minio-make-bucket-job-fzz95                    0/1     Error     2 (24s ago)    31s    10.233.93.5    ks-master-3   <none>           <none>
  • Verifique el registro del Pod anormal
[root@ks-master-1 ~]# kubectl logs minio-757c8bc7f-tlnts -n kubesphere-system
exec /bin/sh: exec format error
  • Verifique la imagen utilizada por el Pod anormal
# Minio 组件对应两个镜像
[root@ks-master-1 ~]# crictl images ls | grep minio
registry.cn-beijing.aliyuncs.com/kubesphereio/minio                     RELEASE.2019-08-07T01-59-21Z   29c267893b048       23.1MB

[root@ks-master-3 ~]# crictl images ls | grep mc
registry.cn-beijing.aliyuncs.com/kubesphereio/mc                        RELEASE.2019-08-07T23-14-43Z         c02b00df169fc       9.32MB
  • Verifique la estructura anormal del espejo Pod
# 查看异常 Pod 镜像架构(以 minio 为例)
[root@ks-master-1 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/minio:RELEASE.2019-08-07T01-59-21Z | grep arch
      "architecture": "amd64",
  • Obtenga la imagen de la versión ARM adaptada ( imagen de la versión oficial de ARM de la versión minio similar )
# 找个相近版本的 ARM 架构的镜像
# minio
crictl pull minio/minio:RELEASE.2020-11-25T22-36-25Z-arm64

# mc
crictl pull minio/mc:RELEASE.2020-11-25T23-04-07Z-arm64
  • Reetiquetado espejo
# minio
crictl rmi registry.cn-beijing.aliyuncs.com/kubesphereio/minio:RELEASE.2019-08-07T01-59-21Z
ctr -n k8s.io images tag docker.io/minio/minio:RELEASE.2020-11-25T22-36-25Z-arm64 registry.cn-beijing.aliyuncs.com/kubesphereio/minio:RELEASE.2019-08-07T01-59-21Z

# mc
crictl rmi registry.cn-beijing.aliyuncs.com/kubesphereio/mc:RELEASE.2019-08-07T23-14-43Z
ctr -n k8s.io images tag --force docker.io/minio/mc:RELEASE.2020-11-25T23-04-07Z-arm64 registry.cn-beijing.aliyuncs.com/kubesphereio/mc:RELEASE.2019-08-07T23-14-43Z
  • Redistribuir componentes
# 重新部署,删除旧的 Pod,系统会自动创建新的(此步的操作也可以使用修改 minio 对应的 deployment 使用的镜像名称的方式)
kubectl delete pod minio-757c8bc7f-tlnts -n kubesphere-system
kubectl delete pod minio-make-bucket-job-fzz95 -n kubesphere-system

3.9 Soluciones comunes para resolver anomalías de componentes

Al implementar los clústeres KubeSphere y Kubernetes de ARM, la mayoría de las excepciones encontradas se deben a una falta de coincidencia de las arquitecturas de imágenes. Cuando encuentre componentes anormales que no se tratan en este artículo, puede consultar el siguiente proceso para resolverlos.

  • Ver pod anormal
  • Verifique el registro del Pod anormal
  • Verifique la imagen utilizada por el Pod anormal
  • Verifique la estructura anormal del espejo Pod
  • Obtenga la imagen de la versión ARM adaptada
  • Reetiquetado espejo
  • Redistribuir componentes

4. Implementar recursos de prueba

Una vez resueltos todos los componentes anormales, los Pods de todo el clúster de Kubetnetes deberían estar en estado En ejecución, lo que significa que KubeSphere y Kubernetes parecen estar normales.

En el documento anterior, verificamos y probamos el estado de los clústeres de KubeSphere y Kubernetes.

A continuación, implementaremos un servidor web Nginx simple en el clúster de Kubernetes para probar y verificar si las funciones básicas de Kubernetes y KubeSphere son normales.

Este ejemplo utiliza herramientas de línea de comandos para implementar un servidor web Nginx en un clúster de Kubernetes y usa la consola de administración gráfica de KubeSphere para ver la información de los recursos implementados.

4.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

4.2 Crear servicio Nginx

Cree un nuevo servicio de Kubernetes, nombre de servicio nginx, tipo de servicio Nodeport, puerto de servicio externo 80.

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

4.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@ks-master-1 ~]# 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@ks-master-1 ~]# 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   ks-master-2   <none>           <none>
nginx-6c557cc74d-xzzss   1/1     Running   0          23s   10.233.103.148   ks-master-1   <none>           <none>

4.4 Verificar la arquitectura espejo de Nginx

  • Ejecute el siguiente comando para ver el tipo de arquitectura de Nginx Image
crictl inspecti nginx:alpine | grep architecture
  • Vea los resultados de la siguiente manera:
[root@ks-master-1 ~]# crictl inspecti nginx:alpine | grep architecture
      "architecture": "arm64"

4.5 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 30563 está abierto en el host de Kubernetes.

kubectl get svc -o wide

Vea los resultados de la siguiente manera:

[root@ks-master-1 ~]# 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

4.6 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 172.16.33.16:30619

# 访问结果同上,略

4.7 Ver en la consola de administración

A continuación, volvemos a la consola de administración de KubeSphere y vemos los recursos que se han creado en la consola de administración.

Nota: La consola de administración de KubeSphere tiene la función de crear varios recursos de Kubernetes de una manera gráfica y amigable, principalmente porque tomar capturas de pantalla es demasiado problemático, por lo que este artículo utiliza la línea de comando para crear simplemente recursos de prueba.

Solo quiero demostrar las funciones básicas de la consola de administración de KubeSphere al verla. En el uso real, puede usar métodos gráficos para crear y administrar recursos de Kubernetes.

  • Inicie sesión en la consola de administración de KubeSphere, haga clic en "Administración de plataforma" y seleccione "Administración de clústeres".
  • Haga clic en "Carga de aplicaciones" en el lado izquierdo de la página de administración del clúster y haga clic en "Carga de trabajo". De forma predeterminada, verá todas las cargas de trabajo de tipo implementación .

Estamos usando la cuenta de administrador, por lo que podemos ver todas las cargas de trabajo. Si ingresamos nginx en el cuadro de búsqueda, solo se mostrará la carga de trabajo de implementación de nginx.

  • Haga clic en nginx en la lista de implementación para ver información más detallada y administrar la implementación de nginx (Implementación).

  • Haga clic en un contenedor nginx en el grupo de contenedores para ver el estado, el monitoreo y otra información del contenedor.

  • Regrese a la página "Administración de plataforma" - "Administración de clústeres", haga clic en "Carga de aplicaciones" en el lado izquierdo de la página de administración de clústeres y haga clic en "Servicio". De forma predeterminada, verá todas las cargas de trabajo de tipo servicio .

Estamos usando la cuenta de administrador, por lo que podemos ver todas las cargas de trabajo. Si ingresamos nginx en el cuadro de búsqueda, solo se mostrará la carga de trabajo del servicio nginx.

  • Haga clic en nginx en la lista de servicios para ver información más detallada y administrar el servicio nginx (Servicio).

En este punto, implementamos el servidor web Nginx en el clúster de Kubernetes y vimos y verificamos los detalles de la implementación, el pod y el servicio implementados a través de la consola de administración de KubeSphere.

Este artículo solo realiza la prueba de verificación más básica de la creación de recursos para KubeSphere y Kubernetes implementados bajo la arquitectura ARM. No se cubren pruebas más completas de componentes conectables. Se solicita a los lectores que verifiquen y prueben ellos mismos según sus necesidades.

La mayoría de los problemas encontrados durante la prueba de verificación deberían deberse a la falta de coincidencia de la arquitectura de la imagen. Consulte las ideas y procesos de resolución de problemas en la Sección 5 de este artículo , la mayoría de los problemas deberían resolverse.

5. Instrucciones complementarias

En esta sección mostramos información básica sobre el clúster y algunas instrucciones de verificación de prueba.

5.1 Ver la lista de imágenes

En esta sección, analizamos qué imágenes se han utilizado en todos los clústeres de KubeSphere y Kubernetes hasta ahora.

Ingrese el siguiente comando en cada nodo para obtener la lista de imágenes que se descargaron en el nodo del clúster de Kubernetes.

crictl images ls

Los siguientes resultados son el resultado resumido después de ejecutar todos los comandos de vista:

# crictl images ls | grep -v docker.io > /tmp/1.txt
# crictl images ls | grep -v docker.io > /tmp/2.txt
# crictl images ls | grep -v docker.io > /tmp/3.txt
#  cat 1.txt 2.txt 3.txt | awk '{if (!seen[$1]++) {print}}' | sort
IMAGE                                                                       TAG                                  IMAGE ID            SIZE
registry.cn-beijing.aliyuncs.com/kubesphereio/alertmanager                  v0.23.0                              44a71f29f42b0       25MB
registry.cn-beijing.aliyuncs.com/kubesphereio/argocd-applicationset-arm64   v0.4.1                               758eaf0d9da26       76.2MB
registry.cn-beijing.aliyuncs.com/kubesphereio/argocd-applicationset         v0.4.1                               f5ac1e612edca       77.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/argocd                        v2.3.3                               9a557f111ba0b       185MB
registry.cn-beijing.aliyuncs.com/kubesphereio/cni                           v3.23.2                              dbad3c1a529ac       76.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/configmap-reload              v0.7.1                               b4151c08af07d       3.73MB
registry.cn-beijing.aliyuncs.com/kubesphereio/coredns                       1.9.3                                b19406328e70d       13.4MB
registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64          1.4                 							   846921f0fe0e5       1.82MB
registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-arm64          1.4                                  156fbd4afe405       1.67MB
registry.cn-beijing.aliyuncs.com/kubesphereio/devops-apiserver              ks-v3.4.0                            c89baacbfca67       29.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/devops-controller             ks-v3.4.0                            5b4ce4e345d4a       26.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/devops-tools                  ks-v3.4.0                            3b2bc61feca12       28.9MB
registry.cn-beijing.aliyuncs.com/kubesphereio/dex                           v2.30.2                              cd0eb92a37da5       24.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/docker                        19.03                                59291a2ff3232       60.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/fluentbit-operator            v0.14.0                              1fe6aebe29cb9       18.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/fluent-bit                    v1.9.4                               bb0200a3096d6       25.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/haproxy                       2.3                                  5be62463c49bf       37.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/jaeger-operator               1.29                                 7e6f4ab1586b7       105MB
registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache            1.15.12                              c5c27a390f5fa       41.9MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kiali-operator                v1.50.1                              c3dc2b49c5e8b       250MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kiali                         v1.50                                97c5cab789c50       78MB
registry.cn-beijing.aliyuncs.com/kubesphereio/ks-apiserver                  v3.4.0                               de0e22c9bcf4f       61.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/ks-console                    v3.4.0                               42b2364bcafe3       38.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/ks-controller-manager         v3.4.0                               4ff90f750485b       46.9MB
registry.cn-beijing.aliyuncs.com/kubesphereio/ks-installer                  v3.4.0                               3471e6e1d2af0       153MB
registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins                    v3.4.0-2.319.3-1                     4b52636ce9e50       581MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver                v1.26.5                              06a268629a822       32.4MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-auditing-operator        v0.2.0                               9c5612b5f8a8e       8.37MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-auditing-webhook         v0.2.0                               f23e1078e2b2c       11.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager       v1.26.5                              a7b6fa1339316       29.6MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers              v3.23.2                              5a33f410afb91       25.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kubectl                       v1.22.0                              29c024bbbf9b1       25.2MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-events-exporter          v0.6.0                               452463fb02cb2       19.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-events-operator          v0.6.0                               27146d6e5ab73       21.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-events-ruler             v0.6.0                               12573f2ffe64d       25.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy                    v1.26.5                              5e89f86edbb88       19.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-rbac-proxy               v0.11.0                              bee4dbe8a9f42       17.9MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler                v1.26.5                              9eb699cb795f8       16.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-state-metrics            v2.6.0                               150fa1ddd5ab3       10.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/linux-utils                   3.3.0                                d06b9d3a552bc       27.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/log-sidecar-injector          v1.2.0                               dbad25c47d9ec       9.9MB
registry.cn-beijing.aliyuncs.com/kubesphereio/mc                            RELEASE.2019-08-07T23-14-43Z         c02b00df169fc       11.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/metrics-server                v0.4.2                               b266eabac7d6a       23.6MB
registry.cn-beijing.aliyuncs.com/kubesphereio/minio                         RELEASE.2019-08-07T01-59-21Z         6760283c70e3e       23MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node-exporter                 v1.3.1                               bb203ba967a80       9.72MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node                          v3.23.2                              2a3416a8ae05d       73MB
registry.cn-beijing.aliyuncs.com/kubesphereio/notification-manager-operator v2.3.0                               3d8285028607a       17.9MB
registry.cn-beijing.aliyuncs.com/kubesphereio/notification-manager          v2.3.0                               b4d8dc4ea25ac       20.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/notification-tenant-sidecar   v3.2.0                               e41b413830c35       13.2MB
registry.cn-beijing.aliyuncs.com/kubesphereio/openldap                      1.3.0                                8803fc65b2bfa       91.6MB
registry.cn-beijing.aliyuncs.com/kubesphereio/openpitrix-jobs               v3.3.2                               d1afba2bac100       15.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/opensearch                    2.6.0                                92fe7c48b27f4       813MB
registry.cn-beijing.aliyuncs.com/kubesphereio/opensearch-curator            v0.0.5                               5791cbce4e83d       19MB
registry.cn-beijing.aliyuncs.com/kubesphereio/pause                         3.8                                  4e42fb3c9d90e       268kB
registry.cn-beijing.aliyuncs.com/kubesphereio/pilot                         1.15.7                               4f12fc8040fe7       66MB
registry.cn-beijing.aliyuncs.com/kubesphereio/pod2daemon-flexvol            v3.23.2                              d48543e4a525a       4.56MB
registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus-config-reloader    v0.55.1                              4152fd84f8c36       4.61MB
registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus-operator           v0.55.1                              8e6f6c78032e8       13.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus                    v2.39.1                              af3e34b4a84e5       83.4MB
registry.cn-beijing.aliyuncs.com/kubesphereio/provisioner-localpv           3.3.0                                2f625755a998b       27.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/redis                         6.2.6-alpine                         50bbab999a871       10.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/s2ioperator                   v3.2.1                               30b700dff15f8       11.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/scope                         1.13.0                               ca6176be9738f       30.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/snapshot-controller           v4.0.0                               3758cfc26c6db       17.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/thanos                        v0.31.0                              5595f682eee8a       37.7MB

5.2 Instrucciones de verificación del módulo DevOps

Después de resolver las anomalías de la arquitectura espejo como Jenkins, la canalización de DevOps puede crear proyectos, crear canalizaciones, editar archivos Jenkins y el diagrama de flujo de la canalización también se puede mostrar normalmente.

Al crear la aplicación, el contenedor Maven todavía no se puede iniciar. Aún no se ha encontrado ninguna solución. Es un problema pendiente y se solucionará más adelante.

6. Preguntas frecuentes

6.1 Pregunta 1

  • Error al reportar
# 安装失败,最后报错
Please wait for the installation to complete:   >>--->
13:08:38 CST skipped: [ks-master-3]
13:08:38 CST skipped: [ks-master-2]
13:08:38 CST failed: [ks-master-1]
error: Pipeline[CreateClusterPipeline] execute failed: Module[CheckResultModule] exec failed:
failed: [ks-master-1] execute task timeout, Timeout=2h

# 查看 Pods
[root@ks-master-1 kubekey]# kubectl get pods -A
NAMESPACE           NAME                                           READY   STATUS             RESTARTS        AGE
kube-system         metrics-server-66b6cfb784-85l94                0/1     CrashLoopBackOff   38 (114s ago)   171m

# 查看 Pod 日志
[root@ks-master-1 kubekey]# kubectl logs metrics-server-66b6cfb784-85l94 -n kube-system
exec /metrics-server: exec format error
  • solución
参考 3.7 小节的 解决 metrics-server 异常

6.2 Pregunta 2

  • Mensaje de error
## devops 流水线功能异常,仅做记录,未最终解决
Started by user opsman
[Pipeline] Start of Pipeline
[Pipeline] node
Still waiting to schedule task
All nodes of label ‘maven’ are offline

[root@ks-master-1 ~]# kubectl get pods -n kubesphere-devops-worker
NAME          READY   STATUS        RESTARTS   AGE
maven-604qz   1/2     Terminating   0          5s
maven-7krjb   1/2     Terminating   0          5s
maven-b43fl   1/2     Terminating   0          5s

5s                      Normal   Started     Pod/maven-pxrt3   Started container jnlp
4s                      Normal   Started     Pod/maven-xnt3j   Started container jnlp
4s                      Normal   Pulled      Pod/maven-xnt3j   Container image "registry.cn-beijing.aliyuncs.com/kubesphereio/inbound-agent:4.10-2" already present on machine
4s                      Normal   Started     Pod/maven-xnt3j   Started container maven
4s                      Normal   Created     Pod/maven-xnt3j   Created container maven
4s                      Normal   Created     Pod/maven-xnt3j   Created container jnlp
4s                      Normal   Pulled      Pod/maven-xnt3j   Container image "registry.cn-beijing.aliyuncs.com/kubesphereio/builder-maven:v3.2.0-podman" already present on machine

[root@ks-master-2 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/builder-maven:v3.2.0-podman | grep arch
      "architecture": "amd64",

[root@ks-master-2 ~]# crictl inspecti registry.cn-beijing.aliyuncs.com/kubesphereio/inbound-agent:4.10-2 | grep arch
      "architecture": "arm64",
  • solución
# 说明:没有最终解决,只解决了镜像架构异常,但是后面构建应用的时候 maven 容器依旧起不来
crictl pull kubespheredev/builder-maven:v3.3.1-podman --platform arm64

[root@ks-master-2 ~]# crictl inspecti kubespheredev/builder-maven:v3.3.1-podman | grep arch | head -1
      "architecture": "arm64",

# 偷梁换柱,强制修改 tag(这个方案比较粗暴,建议采取自己构建同版本 ARM 镜像或是修改 kubesphere-devops-system 项目下的配置字典 jenkins-casc-config 中的 jenkins_user.yaml ,修改镜像版本)
crictl rmi registry.cn-beijing.aliyuncs.com/kubesphereio/builder-maven:v3.2.0-podman
ctr -n k8s.io images tag docker.io/kubespheredev/builder-maven:v3.3.1-podman registry.cn-beijing.aliyuncs.com/kubesphereio/builder-maven:v3.2.0-podman --force
#ctr -n k8s.io images tag docker.io/kubespheredev/builder-maven:v3.3.1-podman registry.cn-beijing.aliyuncs.com/kubesphereio/builder-maven:v3.3.1-podman

7. Resumen

Este tema demuestra principalmente el proceso detallado de uso de KubeKey v3.0.10 para implementar automáticamente un clúster mínimo de alta disponibilidad de KubeSphere v3.4.0 y Kubernetes v1.26.5 en la versión ARM del servidor openEuler 22.03 LTS SP2.

Una vez completada la implementación, también utilizamos la consola de administración de KubeSphere y la línea de comandos de kubectl para ver y verificar el estado de los clústeres de KubeSphere y Kubernetes.

Finalmente, verificamos la disponibilidad del clúster de Kubernetes y KubeSphere implementando el servidor web Nginx en el clúster de Kubenetes y aprendimos el uso básico de KubeSphere viendo el pod de Nginx y el estado del servicio en la consola de administración de KubeSphere.

En resumen, el texto completo incluye principalmente los siguientes contenidos:

  • Configuración básica del sistema operativo openEuler 22.03 LTS SP2 aarch64
  • Configuración del LVM del disco de datos del sistema operativo, montaje del disco y creación del directorio de datos
  • KubeKey descarga y crea archivos de configuración del clúster
  • Utilice KubeKey para implementar automáticamente clústeres de KubeSphere y Kubernetes
  • Resuelva el problema de los componentes de servicio anormales de la versión ARM de KubeSphere y Kubernetes
  • Verificación del estado del clúster de KubeSphere y Kubernetes después de la implementación
  • Implemente Nginx para verificar y probar las funciones básicas de KubeSphere y Kubernetes

Aunque el entorno de implementación de este artículo se basa en la versión aarch64 de openEuler 22.03 LTS SP2 del chip Kunpeng-920, también tiene cierta importancia de referencia para los sistemas operativos de la versión ARM como CentOS y Kirin V10 SP2, así como para chips como Feiteng (FT-2500) .

El contenido presentado en este artículo se puede utilizar directamente en entornos de prueba e I + D, y tiene cierta importancia de referencia para el entorno de producción, y no debe utilizarse directamente en el entorno de producción.

La conclusión de la prueba incompleta de este artículo: las funciones básicas de KubeSphere y Kubernetes están disponibles, y las funciones de DevOps están parcialmente disponibles. El principal problema es que el contenedor Maven se inicia de manera anormal al construir la imagen y otras funciones del complemento tienen no ha sido verificado .

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

Alibaba Cloud sufrió un fallo grave y todos los productos se vieron afectados (restaurados). Tumblr enfrió el sistema operativo ruso Aurora OS 5.0. Se presentó la nueva interfaz de usuario Delphi 12 y C++ Builder 12, RAD Studio 12. Muchas empresas de Internet contratan urgentemente programadores de Hongmeng. Tiempo UNIX está a punto de entrar en la era de los 1.700 millones (ya entró). Meituan recluta tropas y planea desarrollar la aplicación del sistema Hongmeng. Amazon desarrolla un sistema operativo basado en Linux para deshacerse de la dependencia de Android de .NET 8 en Linux. El tamaño independiente es reducido en un 50%. Se lanza FFmpeg 6.1 "Heaviside"
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

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