iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0
Kubernetes

從零開始的雲端實戰:30 天 Kubernetes 核心觀念與部署指南系列 第 5

【Day 05】與 K8s 對話:kubectl 常用指令與指令式(Imperative)操作

  • 分享至 

  • xImage
  •  

今日目標

  • 理解 kubectl 的語法結構與運作機制。
  • 掌握指令式操作(Imperative Commands)的核心指令:建立、查詢、除錯與刪除。
  • 透過單行指令完成一個測試應用的完整生命週期操作。

什麼是 kubectl?

在 Day 03 中我們提到,Control Plane 的唯一對外窗口是 kube-apiserver。而 kubectl 就是 Kubernetes 官方提供的命令列工具(CLI),它的作用就是將我們的指令轉換為 REST API 請求,發送給 kube-apiserver 來操作集群資源。

kubectl 指令的黃金結構

大部分的 kubectl 指令都遵循非常直觀的語法規則:

kubectl [動作 verb] [資源類型 type] [資源名稱 name] [可選參數 flags]

常見的「動作」包含:

  • get:查看資源列表或摘要
  • describe:查看資源的詳細規格與即時事件(Event)
  • logs:輸出容器的執行日誌
  • create / run:建立資源
  • delete:刪除指定資源

指令式操作(Imperative Commands)實戰

在 Kubernetes 中,操作資源有兩種主要模式:指令式(Imperative)宣告式(Declarative)

  • 指令式:直接用單行 CLI 指令告訴 K8s「現在要做什麼」(適合快速測試、除錯與臨時操作)。
  • 宣告式:撰寫 YAML 檔描述「期望的最終狀態」(適合生產環境與版本控制,我們將在 Day 07 深入實作)。

今天我們先用最直觀的「指令式操作」來跑一次完整的應用生命週期。

1. 建立資源(Create / Run)

使用 kubectl run 快速建立一個名為 my-nginx 的 Pod:

kubectl run my-nginx --image=nginx:latest

2. 查詢狀態(Get)

查看當前 Namespace 下所有運行的 Pod:

kubectl get pods

加上 -o wide 參數,可以查看到更多資訊(例如 Pod 分配到的內部 IP 與運行的 Node):

kubectl get pods -o wide

3. 查看詳細資訊與事件(Describe)

當 Pod 出現問題或處於 Pending 狀態時,describe 是最重要的診斷工具:

kubectl describe pod my-nginx

滑到輸出最下方的 Events: 區塊,可以看到 Scheduler 排程、Image 拉取以及容器啟動的完整歷程。

4. 查看容器日誌(Logs)

讀取容器內部應用程式印出的 log:

kubectl logs my-nginx

如果想即時追蹤 log 輸出,可以加上 -f 參數:

kubectl logs -f my-nginx

5. 進入容器內部終端機(Exec)

類似於 docker exec,可以進入運行中的 Pod 進行互動式除錯:

kubectl exec -it my-nginx -- /bin/bash

輸入 exit 即可離開容器。

6. 清理與刪除資源(Delete)

測試完畢後,將建立的 Pod 刪除:

kubectl delete pod my-nginx

實用小技巧:提高 kubectl 操作效率

  1. 設定指令別名(Alias)
    在終端機設定檔(~/.zshrc~/.bashrc)中加入:
alias k="kubectl"

之後所有指令都可以簡寫為 k get pods
2. 快速產生 YAML 範本(Dry-run)
指令式操作最厲害的地方,在於可以「只產生 YAML 結構而不真正建立資源」:

kubectl run test-pod --image=nginx --dry-run=client -o yaml

這在後續撰寫設定檔時能省下大量打字時間。


本日小結

今天我們熟悉了 kubectl 的標準語法,並實際演練了從建立、查詢、查看日誌到刪除 Pod 的完整指令式操作流程。

雖然用單行指令建 Pod 很方便,但 Pod 到底是什麼?為什麼 K8s 不直接跑 Container 而是包一層 Pod?

明天 Day 06,我們將正式深入剖析:「最小運算單位:Pod 是什麼?為什麼不直接跑 Container?」


上一篇
【Day 04】本地實驗場打造:使用 Minikube 建立第一個單節點 K8s 集群
系列文
從零開始的雲端實戰:30 天 Kubernetes 核心觀念與部署指南5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言