# 使用 Qualcomm Linux 设置 Kubernetes

[Kubernetes](https://kubernetes.io/) 是一个开源平台，可自动部署、扩展和管理容器中运行的应用程序。Kubernetes 有助于跨多个设备协调容器，确保应用程序实现高效资源利用、高可用性和可扩展性。Kubernetes 不仅适用于大型服务器和云系统，也适用于小型 Linux 嵌入式设备。它有助于有效地管理和协调跨物联网设备的容器和应用程序。

## 启用 Kubernetes

- Qualcomm Linux 发布版本默认在 `qcom-multimedia-image` 中启用 Kubernetes，具体通过以下变更：

    - 在 `dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-qcom-k8s.bb` 的 `meta-qcom-hwe` 层中定义 `packagegroup-qcom-k8s`。
    - `packagegroup-qcom-k8s` 包含在 `meta-qcom-distro` 层中的 `recipes-products/packagegroups/packagegroup-qcom-multimedia.bb` 镜像配方。
- 要验证启动后 kubelet 的状态，请运行以下命令并验证输出：

    | 命令 | 说明 | 输出 |
    | --- | --- | --- |
    | `systemctl status kubelet` | 如果设备启动后至少已使用 `kubeadm` 设置过一次 Kubernetes 节点 | `Active`（正在运行） |
    | `systemctl status kubelet` | 如果设备在启动后尚未使用 `kubeadm` 设置为 Kubernetes 节点 | `Inactive`（已停止） |
    |  |  |  |

## 与 `meta-virtualization` 解决方案相比 Docker 和 Kubernetes 的变更

- `meta-qcom-hwe/dynamic-layers/virtualization-layer/recipes-containers/docker/docker-moby_git.bbappend` 文件修改 `/${systemd_unitdir}/system/docker.service` 以将选项 `--exec-opt native.cgroupdriver=systemd` 添加到 `dockerd` 命令，该命令作为服务的 `ExecStart` 一部分运行。这就用 `cgroupdriver` 保持了 Docker 和 Kubernetes 之间的奇偶校验。
- `meta-qcom-hwe/recipes-containers/kubernetes/kubernetes_git.bbappend` 文件修改 `/lib/systemd/system/kubelet.service.d/10-kubeadm.conf` 以将 `--fail-swap-on=false` 作为 `KUBELET_EXTRA_ARGS` 的一部分进行添加。默认情况下，Kubernetes 期望 swap 为 `OFF`，但 Qualcomm Linux 在启用 zram 功能的情况下将 swap 设置为 `ON`。即使启用了 swap 内存，设置 `--fail-swap-on=false` 也允许 kubelet 运行。
- 即使设备未配置为 Kubernetes 节点，上游 `kubelet.service` 尝试在设备启动时自动启动。但这种行为会消耗资源并影响功率。为了解决这个问题，请通过删除 `meta-qcom-hwe/recipes-containers/kubernetes/kubernetes_git.bbappend` 文件中的 `WantedBy=multi-user.target` 来修改 `kubelet.service`。`WantedBy=multi-user.target` 删除后，当使用 `kubeadm` 将设备设置为 Kubernetes 节点时，上游 `kubelet.service` 启动，而不是在启动时自动作为 `multi-user.target` 的一部分。

Last Published: Nov 04, 2025

[Previous Topic
运行 Docker 容器](https://docs.qualcomm.com/bundle/publicresource/80-70022-27SC/topics/run_docker_containers.md) [Next Topic
配置](https://docs.qualcomm.com/bundle/publicresource/80-70022-27SC/topics/configure_properties.md)

Source: [https://docs.qualcomm.com/doc/80-70022-27SC/topic/setup_kubernetes_with_qualcomm_linux.html](https://docs.qualcomm.com/doc/80-70022-27SC/topic/setup_kubernetes_with_qualcomm_linux.html)