如何将 Jetson Nano 加入 Kubernetes 集群

Posted on Mon 04 November 2024 in Journal

Abstract 如何将 Jetson Nano 加入 Kubernetes 集群
Authors Walter Fan
 Category    learning note  
Status v1.0
Updated 2024-11-04
License CC-BY-NC-ND 4.0

我们在日常开发中用 Jetson Nano 作为边缘节点, 通过 DeepStream 来做医疗影像的分析推理, 而众多的盒子能不能作为 Node 加入 k8s 呢, 这样管理起来会更加容易

研究了一番, 问了问大模型, 发现这不是难事

1. 准备 Jetson Nano:安装 Ubuntu 和 Docker

  • 确保 Jetson Nano 运行 Ubuntu(通常是 Ubuntu 18.04 或 20.04)。
  • 安装 Docker,Kubernetes 将使用 Docker 来管理容器:
sudo apt-get update
sudo apt-get install -y docker.io
  • 启用并启动 Docker:
sudo systemctl enable docker
sudo systemctl start docker

2. 安装 kubeadm、kubelet 和 kubectl

  • 安装 Kubernetes 所需的包:
sudo apt-get update
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
  • 设置 kubelet 开机启动:
sudo systemctl enable kubelet

3. 配置 kubeadm 加入集群

  • 在 Kubernetes 控制平面节点(例如主服务器或 master 节点)上,生成一个用于加入集群的令牌:
kubeadm token create --print-join-command
  • 该命令将输出一个 kubeadm join 命令。复制此命令,稍后会在 Jetson Nano 上用到。

4. 在 Jetson Nano 上运行 kubeadm join 命令

  • 在 Jetson Nano 上,执行从上一步复制的 kubeadm join 命令,将其加入集群。命令格式如下:
sudo kubeadm join <master-node-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
  • 执行此命令后,Jetson Nano 将连接至 Kubernetes 控制平面并成为集群节点。

5. 设置 ARM 架构兼容的镜像

由于 Jetson Nano 采用 ARM 架构,需确保 Kubernetes 工作负载使用 ARM 兼容的镜像。大多数官方 Kubernetes 组件支持多架构镜像,但任何自定义镜像或第三方应用程序也需确保有 ARM 版本。

  • 在部署和 Pod 中指定 ARM 兼容镜像。
  • 如果使用 kube-proxy,确保其支持 ARM。

6. 验证节点是否加入集群

  • 在控制平面节点上,列出所有节点以确认 Jetson Nano 是否已加入集群:
kubectl get nodes
  • Jetson Nano 应出现在节点列表中,并标记为 Ready。

7. (可选)给 Jetson Nano 节点打标签

为 Jetson Nano 节点打标签有助于控制调度,可将特定工作负载定向到 ARM 节点。例如:

kubectl label node <jetson-nano-node-name> hardware=jetson
  • 在 Kubernetes 工作负载中,可以使用 nodeSelector 来将工作负载调度到具有 hardware=jetson 标签的节点上:
spec:
  nodeSelector:
    hardware: jetson

通过上述步骤,Jetson Nano 将成功加入 Kubernetes 集群,并准备运行 ARM 兼容的工作负载。


本作品采用 AI 辅助创作。