iT邦幫忙

2024 iThome 鐵人賽

DAY 7
1
Kubernetes

成為 Kubernetes 特級咒術師的 30 天修行系列 第 7

第七篇: 簡易領域 Pod & Static Pod

  • 分享至 

  • xImage
  •  

前言

昨天我們成功展開 Kubernetes Cluster 領域。而今天,我們將探索 Kubernetes 中的兩個重要概念:Pod 和 Static Pod。這些概念不僅是 Kubernetes 的基本單元,更是理解 Kubernetes 如何運行的關鍵。

Pod 是甚麼?

https://ithelp.ithome.com.tw/upload/images/20240908/20140874gK4XIII4xR.png

Pod 是 Kubernetes 中的最小可部署單元,它代表著運行在集群中的一個或多個容器。Pod 中的容器共享網絡命名空間和存儲,這意味著它們可以通過 localhost 互相通信並共享存儲卷。

每個 Pod 都有自己的 IP 地址,並且所有的容器都運行在這個 Pod 的上下文中。當你在 Kubernetes 中部署一個應用程式時,實際上是將這個應用程式作為一個或多個 Pod 來運行。

主要特性:

  • 單一應用程序容器:Pod 通常僅包含一個主容器,這是最常見的使用場景。

  • 多容器組合:有時候,Pod 可能包含多個容器,這些容器彼此緊密協作,組成一個完整的應用程序。

Pod 的生命周期:

  • Pending:Pod 已被 Kubernetes API server 接受,但還沒有被綁定到 Node 上。

  • Running:Pod 已經綁定到一個 Node 並且所有容器已啟動。

  • Succeeded:Pod 中所有的容器都正常退出。

  • Failed:Pod 中至少有一個容器異常退出。

  • Unknown:因為某些原因,無法獲取 Pod 的狀態。

展開 pod

  • 創建 pod.yaml。

$ nano pod.yaml
  • Pod的YAML範例如下。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
  • 創建這個 Pod。

$ kubectl apply -f pod.yaml
## or
$ kubectl create -f pod.yaml
  • 確認 Pod 是否成功啟動。

$ kubectl apply -f pod.yaml

image

其餘 pod 相關指令

## 查看該pod詳細資訊
$ kubectl describe po <pod-name>

## 刪除pod
$ kubectl delete po

## 查看pod log
$ kubectl logs <pod-name>

Static Pod 是甚麼?

Pod 是 Kubernetes 中的最小可部署單元,它代表著運行在集群中的一個或多個容器。Pod 中的容器共享網絡命名空間和存儲,這意味著它們可以通過 localhost 互相通信並共享存儲卷。

每個 Pod 都有自己的 IP 地址,並且所有的容器都運行在這個 Pod 的上下文中。當你在 Kubernetes 中部署一個應用程式時,實際上是將這個應用程式作為一個或多個 Pod 來運行。

展開 Static Pod

  • 將定義文件放置在指定目錄

    Kubelet 會自動監控一個特定的目錄(通常是 /etc/kubernetes/manifests/),並將該目錄下的所有 YAML 文件作為 Static Pod 來運行。

    在節點上找到或創建 /etc/kubernetes/manifests/ 目錄。將你編寫的 Pod 定義文件保存到這個目錄下。

  • 創建 static-pod.yaml。

$ nano static-pod.yaml
  • Pod的YAML範例如下。

apiVersion: v1
kind: Pod
metadata:
  name: static-pod-example
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
  • 創建這個 Pod。

$ kubectl apply -f pod.yaml
## or
$ kubectl create -f pod.yaml
  • 確認 Pod 是否成功啟動。

$ kubectl apply -f pod.yaml
  • 接著重啟 kubelet。

$ systemctl restart kubelet

◆ 每日咒術小知識

https://ithelp.ithome.com.tw/upload/images/20240908/20140874vFeDXUaAgV.jpg

參考資料

https://ithelp.ithome.com.tw/articles/10262662?sc=rss.iron

https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/static-pod/

https://kubernetes.io/docs/concepts/workloads/pods/


上一篇
第六篇: 展開第一個 Kubernetes Cluster 領域
下一篇
第八篇: 打開帳: Service
系列文
成為 Kubernetes 特級咒術師的 30 天修行30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言