使用 MicroK8s 運行 PG-Strom 容器

產品開發

這次我將嘗試在MicroK8s上運行PG-Strom容器。 MicroK8s是一種工具,可輕鬆設置Kubernetes集群,我之前在這篇博客中多次介紹過。 PG-Strom是PostgreSQL數據庫的擴展功能,旨在利用GPU和NVME-SSD等來加速批處理和分析工作負載的軟件。

在本次嘗試中,我將在MicroK8s上運行Kubernetes,設置支持GPU的Pod環境,然後嘗試在Pod中運行PG-Strom。

前提條件:

安裝操作系統: 為了使用MicroK8s的GPU插件自動化安裝和配置Kubernetes和GPU環境,我會在主機上安裝Ubuntu操作系統。 GPU插件使用NVIDIA GPU Operator,在下面的文檔中提到,MicroK8s在Ubuntu 22.04上支持。因此,我選擇了Ubuntu 22.04,該版本是最新的Ubuntu Server 22.04.2。

安裝GPU驅動程序: 為了創建MicroK8s和其GPU插件環境,我需要在執行節點上安裝用於GPU計算的CUDA驅動程序。

安裝Docker和NVIDIA Container Toolkit: 為了創建容器應用程序鏡像,我需要安裝Docker Engine,以及為了在容器中使用GPU而安裝NVIDIA Container Toolkit。

安裝MicroK8s: 我會安裝MicroK8s。根據之前提到的GPU Operator矩陣表,MicroK8s 1.26支持GPU Operator。

添加插件: 我會添加MicroK8s的插件,這些插件可根據需要增加Kubernetes集群的功能。在本次嘗試中,我會添加GPU插件、Registry插件和hostpath-storage插件。

構建PG-Strom鏡像: 我會創建一個容器鏡像,用於運行PG-Strom。這個鏡像需要包含所需的CUDA和CUDA驅動程序。

將PG-Strom鏡像推送到Registry: 由於MicroK8s默認使用containerd作為運行時環境,我需要將在Docker中構建的鏡像存儲在MicroK8s的本地Registry中,以便在集群中使用。

創建PG-Strom Pod: 最後,我會創建一個Pod,其中將運行PG-Strom容器。這個Pod將使用一個PersistentVolumeClaim來提供永久存儲,以便在容器重啟時數據不會丟失。

完成上述步驟後,我將能夠在MicroK8s上運行支持GPU的PG-Strom容器。在Pod中創建好後,我還可以使用kubectl exec進入Pod內部並配置PG-Strom擴展。


在Docker和MicroK8s中嘗試使用多實例GPU(Multi-Instance GPU)
在Docker和MicroK8s中嘗試使用多實例GPU(Multi-Instance GPU)
將 GPU 與 Microk8s Pod(2023 年 7 月版本)結合使用
將 GPU 與 Microk8s Pod(2023 年 7 月版本)結合使用
使用 Ansible Playbook 構建 PG-Strom 環境
使用 Ansible Playbook 構建 PG-Strom 環境
我嘗試使用了 containerd + nerdctl
我嘗試使用了 containerd + nerdctl