圖片來源
我們可以從上面的架構圖清楚看出,POD是K8S中最小可被部署的構物
。
圖片來源
一個k8s cluster可以有多個Node,一個Node裡面有多個POD,一個POD有多個CONTAINER可以運行。
以VM的角度來看,NODE=VM HOST機,POD就是VM。
controller設定上就是來調度POD,主要的特點
pod manifest檔可以是JSON也可以是YAML,目前大部份還是以YAML為主,所以後續說明都以YAML為主。
YAML檔上面會有主鍵欄位跟對應的屬性,主要是要來描述POD的中繼資料、標籤(LABEL),磁碟(VOLUMN)跟要RUN哪一些CONTAINER。
以官網的YAML為例
可以很清楚的知道這個pod 名稱叫static-web,它被貼上一個叫role=myrole的label,它的container跑的是nginx
apiVersion: v1
kind: Pod
metadata:
name: static-web
labels:
role: myrole
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
protocol: TCP
把建立好的yaml檔透過KUBECTL APPLY的語法,可以把yaml檔送到k8s api server,K8S就會選擇一個最適合的node運行pod。
kubectl apply -f static-web.yaml
當使用get pods 可以看到目前運行中的POD與其狀態
kubectl get podsRESTARTS
NAME READY SATAUS RESTARTS AGE
static 1/1 Runing 0 5m
POD的細節很多,可以繼續研究下去,後續有機會再繼續補完下去