Kubernetes NVIDIA Device Plugins

Device Plugins 是 Kubernetes v1.8 版本開始加入的 Alpha 功能,目標是結合 Extended Resource 來支援 GPU、FPGA、高效能 NIC、InfiniBand 等硬體設備介接的插件,這樣好處在於硬體供應商不需要修改 Kubernetes 核心程式,只需要依據 Device Plugins 介面來實作特定硬體設備插件,就能夠提供給 Kubernetes Pod 使用。而本篇會稍微提及 Device Plugin 原理,並說明如何使用 NVIDIA device plugin。

P.S. 傳統的alpha.kubernetes.io/nvidia-gpu將於 1.11 版本移除,因此與 GPU 相關的排程與部署原始碼都將從 Kubernetes 核心移除。

Read More

Share Comments

安裝 NVIDIA Docker 2 來讓容器使用 GPU

本篇主要介紹如何使用 NVIDIA Docker v2 來讓容器使用 GPU,過去 NVIDIA Docker v1 需要使用 nvidia-docker 來取代 Docker 執行 GPU image,或是透過手動掛載 NVIDIA driver 與 CUDA 來使 Docker 能夠編譯與執行 GPU 應用程式,而新版本的 Docker 則可以透過 –runtime 來選擇使用 NVIDIA Docker v2 的 Runtime 來執行 GPU 應用程式。

Read More

Share Comments

Ceph Luminous CRUSH map 400000000000000 問題

在 Ceph Luminous(v12) 版本中,預設開啟了一些 Kernel 特性,其中首先遇到的一般是 400000000000000 問題,即CEPH_FEATURE_NEW_OSDOPREPLY_ENCODING特性(可以從對照表得知CEPH_FEATURE Table and Kernel Version),剛問題需要在 Kernel 4.5+ 才能夠被支援,但如果不想升級可以依據本篇方式解決。

Read More

Share Comments

利用 RBAC + SA 進行 Kubectl 權限控管

這邊說明如何建立不同 Service account user,以及 RBAC 來定義存取規則,並綁定於指定 Service account ,以對指定 Namespace 中資源進行存取權限控制。

Read More

Share Comments

多租戶 Kubernetes 部署方案 Stackube

Stackube是一個 Kubernetes-centric 的 OpenStack 發行版本(架構如下圖所示),該專案結合 Kubernetes 與 OpenStack 的技術來達到真正的 Kubernetes 租戶隔離,如租戶實例採用 Frakti 來進行隔離、網路採用 Neutron OVS 達到每個 Namespace 擁有獨立的網路資源等。本篇會簡單介紹如何用 DevStack 建立測試用 Stackube。

Read More

Share Comments

Deploy OpenStack on Kubernetes using OpenStack-helm

OpenStack Helm 是一個提供部署建置的專案,其目的是為了推動 OpenStack 生產環境的解決方案,而這種部署方式採用容器化方式,並執行於 Kubernetes 系統上來提供 OpenStack 服務的管理與排程等使用。

Read More

Share Comments

Kubernetes v1.8.x 全手動苦工安裝教學(TL;DR)

Kubernetes 提供了許多雲端平台與作業系統的安裝方式,本章將以全手動安裝方式來部署 Kubernetes v1.8.x 版本,主要是學習與了解 Kubernetes 建置流程。若想要瞭解更多平台的部署可以參考 Picking the Right Solution來選擇自己最喜歡的方式。

本次安裝版本為:

  • Kubernetes v1.8.6
  • CNI v0.6.0
  • Etcd v3.2.9
  • Calico v2.6.2
  • Docker v17.10.0-ce

Read More

Share Comments

利用 Kuryr 整合 OpenStack 與 Kubernetes 網路

Kubernetes Kuryr 是 OpenStack Neutron 的子專案,其主要目標是透過該專案來整合 OpenStack 與 Kubernetes 的網路。該專案在 Kubernetes 中實作了原生 Neutron-based 的網路,因此使用 Kuryr-Kubernetes 可以讓你的 OpenStack VM 與 Kubernetes Pods 能夠選擇在同一個子網路上運作,並且能夠使用 Neutron 的 L3 與 Security Group 來對網路進行路由,以及阻擋特定來源 Port。

Read More

Share Comments

利用 OpenStack Ironic 提供裸機部署服務

Ironic 是 OpenStack 專案之一,主要目的是提供裸機機器部署服務(Bare-metal service)。它能夠單獨或整合 OpenStack 其他服務被使用,而可整合服務包含 Keystone、Nova、Neutron、Glance 與 Swift 等核心服務。當使用 Compute 與 Network 服務對 Bare-metal 進行適當的配置時,OpenStack 可以透過 Compute API 同時部署虛擬機(Virtual machines)與裸機(Bare machines)。

本篇為了精簡安裝過程,故這邊不採用手動安裝教學(會在 Gitbook 書上更新),因此採用 DevStack 來部署服務,再手動設定一些步驟。

本環境安裝資訊:

  • OpenStack Pike
  • DevStack Pike
  • Pike Pike Pike ….

Read More

Share Comments

利用 LinuxKit 建立 Kubernetes 叢集

LinuxKit 是以 Container 來建立最小、不可變的 Linux 作業系統映像檔框架,先前有簡單介紹與操作過,可以參考LinuxKit。本篇則將利用 LinuxKit 來建立 Kubernetes 的映像檔,並部署簡單的 Kubernetes 叢集。

Read More

Share Comments