上一篇我們介紹了如何安裝和啟動 Kubernetes,這一篇要來實際的操作 Kubernetes。本篇會介紹如何從最基本的 Pod 開始建立。
在 Kubernetes (一) - 基本概念 中有介紹過 Pod 是 Kubernetes 運作的最小單位,所以我們要先從建立 Pod 開始。
而要在 Pod 中運行的程式本篇使用 potainer 作為範例,portainer 是一種 Docker UI 的管理工具。
在 Kubernetes (一) - 基本概念 中也有提到每個 Pod 都有屬於自己的 yaml 檔,yaml 檔是用來描述這個 Pod,包含 Pod 的名稱、有哪些 Container 等等。
基本的 Pod yaml 檔格式和內容如下 :
kind : 定義這個元件的類別,例如 : Pod、Node、Service、Namespace 或是 ReplicationController。
metadata : 定義這個元件的名稱和他的標籤名稱,標籤可以自訂給多組,例如 : name, app, env 等等。給標籤的用處是可以用來篩選出 Pod,這會在後面介紹的 Service 中再細說。
spec : 定義 Container
範例
下面是一個 Pod 的 yaml 檔範例,會啟動一個 potainer 的 Container。
kubernetes-pod.yml
使用 kubectl 的 create
指令建立 Pod。
範例
使用剛才建立好的 kubernetes-pod.yml
來建立 Pod。
建立好後可以使用 kubectl 的 get pods
指令查看 Pod 建立的狀況。
也可以使用 kubectl 的 describe pods <pod name>
指令查看 Pod 的詳細資訊。
在 Pod 中所指定的 Port 和主機的 Port 是不相通的,只能在 Kubernetes Cluster 中被存取,所以 Kubernetes 提供了 port-forward 這個指令來將主機的 Port 對應到 Pod 的 Port
可以使用 kubectl 的 port-forward
指令將主機的 Port 對應到 Pod 的 Port。
範例
portainer 預設是使用 9000 Port 來進行通訊,所以上方 kubernetes-pod.yml
也是定義對外開放的 Port 是 9000。因次這裡就再將主機的 9000 Port 對應的 Pod 的 9000 Port。
設定完後在瀏覽器輸入 http://localhost:9000 就可以成功打開 portainer。
本篇介紹了如何建立基本的 Pod 和如何從外部連線到 Kubernetes Cluster 內的 Pod,下一篇將會介紹進階的一些功能來更方便的管理和擴展 Pod。
[1] 在 Minikube 上跑起你的 Docker Containers - Pod & kubectl 常用指令
[2] Kubernetes 基礎教學(二)實作範例:Pod、Service、Deployment、Ingress
[3] Kubectl常用命令
[4] Kubernetes學習筆記2 — pod及service
[5] Kubernetes Service 概念詳解
[6] 建立外部服務與Pods的溝通管道 - Services
[7] Kubernetes Service | 知乎
[8] Day 16 - Kubernetes Label 與 Selector
[9] Port, TargetPort, and NodePort in Kubernetes
[10] Kubernetes kubectl expose
Container
Kubernetes