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 .
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"¡Este artículo es publicado por OpenWrite, un blog que publica varios artículos !