在本機把 k3s 設定好後,接下來我們要進到 k8s 裡面最小的部署單位 POD。k8s 裡面很多 resource object 都是以 POD 型態存在。 所以我們在部署我們自己的 APP 前,首先就是要先了解 POD。
進入今天的議題之前,請先確保自己對於 docker 、 container 之間的關係是熟悉的,如果還不熟的讀者,請先 google 預習一下。
127.0.0.1
的方式,互相溝通。所以縱歸以上幾點,可以把 k8s 的 node 當成是一台虛擬機,POD 的當成像虛擬機裡面的 docker,所以你可以在虛擬機裡面透過 docker 跑很多 container 。
那一定會有人疑惑問,為什麼不直接操作 container 而是要多設計一層 POD 來包裝呢?
官方文件有這樣敘述
Pods are designed to support multiple cooperating processes (as containers) that form a cohesive unit of service. The containers in a Pod are automatically co-located and co-scheduled on the same physical or virtual machine in the cluster. The containers can share resources and dependencies, communicate with one another, and coordinate when and how they are terminated.
這邊後面會講到,其實實務上,都不建議大家直接操作 POD ,而是希望大家操作 Deployment,透過 Deployment 才能運用到 k8s 的強大功能 ex scale ....
先把下面的文字存成 first-pod.yaml
apiVersion: v1 ## k8s 版本號
kind: Pod ## 服務類型
metadata:
name: first-pod ## Pod 的名稱
spec:
containers:
- name: first-container ## container 的名稱
image: nginx ## 映像檔位置
ports: ## 暴露 port 給其他資源存取
- containerPort: 80
然後下指令
kubectl --kubeconfig ~/.kube/k3s.yaml apply -f first-pod.yaml
接下來應該會看到
pod/first-pod created
kubectl --kubeconfig ~/.kube/k3s.yaml get pods
會看到
NAME READY STATUS RESTARTS AGE
first-pod 1/1 Running 0 43s
kubectl --kubeconfig ~/.kube/k3s.yaml delete -f first-pod.yaml
這樣就完成了基礎的 POD 新增修改步驟,大家可以嘗試著自己寫看看部署 yaml ,試著自己部署在自己的環境看看。