iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0


圖片來源
我們可以從上面的架構圖清楚看出,POD是K8S中最小可被部署的構物

圖片來源
一個k8s cluster可以有多個Node,一個Node裡面有多個POD,一個POD有多個CONTAINER可以運行。
以VM的角度來看,NODE=VM HOST機,POD就是VM。

特點

  • 一個POD可以同時執行多個CONTAINER,多個CONTAINER又可以共用資源或是volumn
  • POD中多個CONTAINER共享此網路,可以透過localhost跟port號進行連接,像是POD裡面跑application+redis時就可以直接透過LOCALHOST + 6379 port連接redis

pod & controller

controller設定上就是來調度POD,主要的特點

  • 管理 pods
  • 副本管理
  • 當node資源不足時,會把pod調度至另一個node上
  • pod失效時會自動建立新的pod並將失效的pod終止掉

pod manifest檔

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

pod 狀態

當使用get pods 可以看到目前運行中的POD與其狀態

  • READY : 就緒的container數量,正常來說應該是對應的
  • SATAUS : POD的目前執行狀態,有Waiting (等待),Running(執行中),Terminated(已終止)
  • RESTARTS : POD 重啟次數,當POD異常終止時,K8S的self healthing就會自行重啟pod,這時的RESTARTS次數就會增加
  • AGE : 建立到現在過多久時間
kubectl get podsRESTARTS
NAME    READY   SATAUS   RESTARTS  AGE
static  1/1     Runing   0         5m

POD的細節很多,可以繼續研究下去,後續有機會再繼續補完下去


上一篇
[DAY3]K8S元件初探-Control Plane Components
下一篇
[DAY5]認識kubectl指令
系列文
k8s新手船長船難記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言