nginx-pod.yaml)並透過 kubectl apply 成功部署與存取。在 Day 05 中,我們使用了 kubectl run 這種指令式(Imperative)操作快速建立了 Pod。但在實際生產環境與團隊協作中,我們幾乎 100% 都會使用**宣告式(Declarative)**配置。
所有的 Kubernetes 資源物件定義檔,頂層都由以下四個欄位組成:
apiVersion: v1
kind: Pod
metadata:
name: my-first-pod
spec:
containers:
- name: my-container
image: nginx:latest
apiVersion:定義該資源所屬的 API 版本與群組(例如核心物件 Pod 是 v1,之後學到的 Deployment 則是 apps/v1)。kind:指定要建立的資源物件類型(如 Pod, Deployment, Service)。metadata:資源的元資料,包含用來唯一識別的 name,以及用於分組檢索的 labels 和 annotations。spec(Specification):最核心的區塊,詳細描述該資源的期望狀態與詳細規格(例如要跑什麼容器、映像檔版本、Port 設定、資源限制等)。nginx-pod.yaml在本地工作目錄建立一個名為 nginx-pod.yaml 的檔案,內容如下:
apiVersion: v1
kind: Pod
metadata:
name: my-nginx-pod
labels:
app: web
env: dev
spec:
containers:
- name: nginx-web
image: nginx:1.25
ports:
- containerPort: 80
kubectl apply 套用配置打開終端機,執行以下指令將配置套用到 Minikube 集群中:
kubectl apply -f nginx-pod.yaml
輸出預期:
pod/my-nginx-pod created
小提醒:kubectl apply 具備冪等性(Idempotency),如果檔案內容沒變,重複執行只會顯示 unchanged;若修改了內容再執行,則會自動進行更新。
確認 Pod 是否成功跑起來:
kubectl get pods --show-labels
若看到 STATUS 為 Running,代表容器已經在背景順利運作。
由於 Pod 預設只分配到集群內部 IP,我們的電腦本機瀏覽器無法直接連線。可以使用 kubectl port-forward 指令將本機的 Port 與 Pod 的 Port 建立通道:
kubectl port-forward pod/my-nginx-pod 8080:80
保持該終端機視窗開啟,打開瀏覽器訪問 http://localhost:8080,即可看到經典的 "Welcome to nginx!" 歡迎畫面!
error: error parsing ...。containerPort)大小寫不可寫錯。恭喜完成第一週的最後一天!
回顧前 7 天,我們從架構觀念、Minikube 環境建置、kubectl 操作,一路推進到真正用宣告式 YAML 部署出自己的第一個應用程式。
然而,單純建立獨立的 Pod 在生產環境是非常脆弱的(Pod 若故障並不會自動重建)。
明天進入第二週 Day 08,我們將學習能夠保障高可用與自我修復的關鍵元件:「自癒與多副本:Deployment 與 ReplicaSet 如何確保 Pod 不掛掉?」!