如何将 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 辅助创作。