# 使用 Qualcomm Linux 設定 Kubernetes

Kubernetes 是一個開放原始碼平台，用於自動化部署、擴充及管理在容器中執行的應用程式。此平台有助於在多部裝置上組織容器，確保資源利用效率、高可用性和應用程式的可擴充性。Kubernetes 不僅適用於大型伺服器和雲端系統，也適用於小型 Linux 嵌入式裝置。Kubernetes 有助於高效管理和協調物聯網裝置上的容器和應用程式。如需有關 Kubernetes 的詳細資訊，請參閱官方網站 [Kubernetes](https://kubernetes.io/)。

## 啟用 Kubernetes

- Qualcomm Linux 版本在 `qcom-multimedia-image` 中透過以下變更預設啟用 Kubernetes：

    - `packagegroup-qcom-k8s` 定義於 `dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-qcom-k8s.bb` 的 `meta-qcom-hwe` 層中。
    - `packagegroup-qcom-k8s` 包含在 `meta-qcom-distro` 層的 `recipes-products/packagegroups/packagegroup-qcom-multimedia.bb` 影像配方中。
- 要驗證 kubelet 啟動後的狀態，請運行以下命令並檢查輸出：

    | 命令 | 說明 | 輸出 |
    | --- | --- | --- |
    | `systemctl status kubelet` | 如果裝置在開機後曾使用 kubeadm 設置為 Kubernetes 節點至少一次 | 啟動中 (運行中) |
    | `systemctl status kubelet` | 如果裝置在開機後未使用 kubeadm 設置為 Kubernetes 節點 | 非活動 (已終止) |
    |  |  |  |

## 與 `meta-virtualization` 解決方案相比，在 Docker 和 Kubernetes 中所做的變更

- `meta-qcom-hwe/dynamic-layers/virtualization-layer/recipes-containers/docker/docker-moby_git.bbappend` 檔案修改了 `/${systemd_unitdir}/system/docker.service` ，以在當成 `ExecStart` 服務一部分執行的 `dockerd` 命令中新增選項 `--exec-opt native.cgroupdriver=systemd`。這樣做是為了在 Docker 和 Kubernetes 之間維持 `cgroupdriver` 的同位位元。
- `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 預期交換 **OFF**，但 Qualcomm Linux 在 zram 功能啟用的情況下將交換設為 **ON**。設定 `--fail-swap-on=false` 允許 kubelet 即使在啟用交換記憶體的情況下也能運作。
- 上游的 `kubelet.service` 會在裝置開機時嘗試自動啟動，即使該裝置未設為 Kubernetes 節點也是如此。不過，此行為會耗費資源並影響電源。若要解決此問題，移除 `meta-qcom-hwe/recipes-containers/kubernetes/kubernetes_git.bbappend` 檔案中的 `WantedBy=multi-user.target` 以修改 `kubelet.service`。在刪除 `WantedBy=multi-user.target` 後，上游 `kubelet.service` 會在使用 `kubeadm` 將裝置當成 Kubernetes 節點設定時啟動，而非自動在開機時作為 `multi-user.target` 一部分啟動。

Last Published: Dec 23, 2025

[Previous Topic
使用 Docker 容器](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/use_of_docker_containers.md) [Next Topic
配置](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/configure_properties.md)

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