在 raspberry pi 上的 micro8s 集群上部署 Jenkins

Deploy Jenkins on micro8s cluster on raspberry pi

我有三个 raspberry pi 的本地设置,并按照 here 上的教程进行操作。 我设法获得了我的 microk8s 集群 运行。接下来我想部署 Jenkins.

每当我执行第一个命令时:

kubectl create -f jenkins-deployment.yaml -n jenkins

我收到以下错误:

standard_init_linux.go:219: exec user process caused: exec format error

其他一些搜索建议安装 docker。但是在 tutorial 中没有关于安装 docker 的内容。知道这里发生了什么吗?

Docker 对比 containerd

关于您对 docker 的建议。 From Version 1.14.0 of MicroK8s (released 25 March 2019) containerd replaced dockerd。 从版本 1.14.0 开始,containerd 自动随 MicroK8S 安装一起提供,因此,您不需要 dockerd 作为 CRI。 您可以在下面找到安装期间设置的模块 MicroK8S: following systemd services 在您的系统中将是 运行:

  • snap.microk8s.daemon-apiserver,是使用${SNAP_DATA}/args/kube-apiserver
  • 中的参数启动的kube-apiserver守护进程
  • snap.microk8s.daemon-controller-manager,是 kube-controller-manager 守护进程使用 ${SNAP_DATA}/args/kube-controller-manager
  • 中的参数启动
  • snap.microk8s.daemon-scheduler,是kube-scheduler守护进程使用${SNAP_DATA}/args/kube-scheduler
  • 中的参数启动
  • snap.microk8s.daemon-kubelet,是使用${SNAP_DATA}/args/kubelet
  • 中的参数启动的kubelet守护进程
  • snap.microk8s.daemon-proxy,kube-proxy守护进程是使用${SNAP_DATA}/args/kube-proxy
  • 中的参数启动的
  • snap.microk8s.daemon-containerd,是使用${SNAP_DATA}/args/containerd${SNAP_DATA}/args/containerd-template.toml.[=75=中的配置启动的containerd守护进程]
  • snap.microk8s.daemon-etcd,是使用 ${SNAP_DATA}/args/etcd
  • 中的参数启动的 etcd 守护进程

ARM架构

接下来,Raspberry Pi 以及社区之前提到的 ARM。 您不能为 ARM 架构使用常规的基于 amd64 的映像。

可能的解决方案

为了解决问题,我建议您使用以下 2 个选项。

  1. 使用已经准备好的基于 ARM 的映像 of Jenkins for ARM architecture。您还可以使用过滤器搜索图像 Raspberry Pi。只需select您想使用哪种架构:ARM、ARM64 等

一些图像已经移植到其他架构,其中许多都得到官方支持(不同程度)。

ARMv6 32 位 (arm32v6): https://hub.docker.com/u/arm32v6/

ARMv7 32 位 (arm32v7): https://hub.docker.com/u/arm32v7/

ARMv8 64 位 (arm64v8): https://hub.docker.com/u/arm64v8/

  1. 使用 buildx
  2. 为 ARM 准备您自己的映像

参考文献: