Day 5: Kubernetes 基本架構及安裝
Day 6: 使用 kubectl 指令管理 Kubernetes 集群
Day 7: Kubernetes Pod 與 Deployment 深入解析
Day 8: Kubernetes Service 與負載均衡機制
Day 9: Kubernetes Persistent Volumes (PV) 與 Persistent Volume Claims (PVC)
Kubernetes 中,Pod 是最小的可部署單位,通常包含一個或多個緊密相關的容器,共享網絡和存儲資源。Pod 是短暫的,Kubernetes 通常使用 Deployment 來管理 Pod 的生命週期。Deployment 允許聲明應用的期望狀態(如所需的 Pod 數量、容器映像版本等),並負責持續監控和確保應用達到該狀態。這使得應用程序的部署、滾動更新、回滾和自動擴展變得簡單和可靠。
上一篇試做之後應該還有點霧煞煞,這篇要來手寫部署文件
建立目錄跟開啟編輯器應該不用再提醒了吧!
#建立目錄
mkdir apache
cd apache
sudo nano deployment.yml
貼入以下內容
apiVersion: apps/v1
kind: Deployment
metadata:
#這裡宣告的deployment名稱待會會用到
name: apache-deployment
labels:
app: apache
spec:
replicas: 3 # 指定運行的 Pod 副本數量
selector:
matchLabels:
app: apache
template:
metadata:
labels:
app: apache
spec:
containers:
#這裡宣告的app名稱待會也會用到
- name: apache
image: httpd:2.4 # 使用 Apache HTTP 伺服器的 Docker 映像
ports:
- containerPort: 80 # 對外暴露的容器端口
建立了完整的deployment.yml文件之後
再用套用指令,去吃到這個文件
kubectl apply -f deployment.yml
此時一樣可以觀察到服務已經起來
#查看deployment
kubectl get deployments
#查看app=apache的這個服務,剛才有宣告,並且可見pod數為3
kubectl get pods -l app=apache
剛才我們在deployment.yml裡面採用的版本是2.4
以下指令可通過滾動更新,將容器運行的映像檔版本更新為2.4.51版本
#滾動更新
kubectl set image deployment/apache-deployment apache=httpd:2.4.51
#查看狀態
kubectl rollout status deployment/apache-deployment
當更新不可用,需要退回到上一版本
kubectl rollout undo deployment/apache-deployment
當服務超過負載時,常見需要水平擴容的場合
kubectl scale --replicas=5 deployment/apache-deployment
#檢查pod數量上限,顯示為5/5
kubectl get deployment
#檢查pod數具體是否增加
kubectl get pod
想一次擴容或關閉全部服務,需要手動一個一個操作嗎?
記得將-n參數換作你部署在的namespace名稱
#將所有pod副本數降為0
kubectl scale deployment -n default --all --replicas=0
#將所有pod副本數升為5
kubectl scale deployment -n default --all --replicas=5
至此,針對pod的操作就有一定的熟悉度了!
不過,這個時候的apache還訪問不到喔!因為少了什麼?下一篇會說明