這次我們用 Nginx 映像建立第一個 Pod,順便把「建立、檢查、開網頁、刪除」整套流程跑一次。如果上一回合已經把 Minikube 停掉,先執行 minikube start 再繼續。
把 Pod 取名為 hello-pod,容器使用 Nginx,並宣告它會使用 80 埠:
kubectl run hello-pod --image=nginx:1.28 --port=80
看到 pod/hello-pod created,表示建立要求已經送進叢集,接下來才是等待容器真正啟動。
指令成功只代表 Kubernetes 收到需求,不代表網站已經可以用了。先等 Pod 進入 Ready,再查看目前狀態:
kubectl wait --for=condition=Ready pod/hello-pod --timeout=120s
kubectl get pods
如果一直卡在 Pending、ContainerCreating 或 ImagePullBackOff,先看詳細資料。最下方的 Events 通常會直接告訴你是映像下載失敗、資源不足,還是其他問題:
kubectl describe pod hello-pod
Pod 現在只活在叢集裡,我們先開一條臨時通道,把電腦的 8080 埠接到容器的 80 埠:
kubectl port-forward pod/hello-pod 8080:80
保持這個終端機開著,再瀏覽 本機測試網站,應該會看到 Nginx 歡迎頁。關閉指令或按 Ctrl+C,通道就會中斷;這只適合本機測試,不是正式公開網站的方法。
停止轉送後刪除 Pod,再查一次,你會發現它沒有自己回來。這不是故障,而是目前還沒有控制器負責補回它;下一篇介紹的 Deployment 就是來處理這件事。
kubectl delete pod hello-pod
kubectl get pods
參考:Pod 概念與使用
你特別提醒「created 只是收到需求,不代表能用了」,對新手很關鍵;再用刪除後不會自動回來,正好替 Deployment 鋪路。想請問下一篇會不會順便比較 Pod Ready、容器 Running,以及應用程式真的能回應這三種狀態?