Skip to content

Kubernetes

容器調度與自動化部署平台

軟體分類 程式開發 / 雲端應用
軟體標籤
rated-1FSFCamtasia Studio地球科學
開發廠商 Cloud Native Computing Foundation (CNCF)
Stars
121.1k
Forks
42.6k
License
APACHE 2.0
Version
v1.32.0
Update
2026-03-10
OS

產品說明

Kubernetes (常簡稱為 K8s,因為 K 與 s 之間有 8 個字母) 是一個開源的容器調度(Orchestration)平台,最初由 Google 設計並捐贈給 CNCF。如果說 Docker 是將應用程式裝進貨櫃的工具,那麼 Kubernetes 就是管理這些貨櫃的碼頭與起重機系統

在現代微服務架構中,手動管理數百個 Docker 容器是不可能的任務。Kubernetes 解決了這個問題,它提供了一個強大的框架來彈性地執行分散式系統。它能處理應用程式的擴展(Scaling)、故障轉移(Failover)、部署模式(如滾動更新)以及服務探索(Service Discovery)。如今,它已成為雲端原生(Cloud Native)應用的基礎設施標準,被稱為「雲端時代的 Linux」。

核心特色:

  • 自動修復 (Self-healing):當容器失敗、節點當機時,K8s 會自動重新啟動、替換或重新排程容器,確保服務永遠在線。
  • 自動擴展 (Auto-scaling):根據 CPU 使用率或自訂指標,自動增加或減少容器的副本數量(Pod Replicas),應對流量高峰。
  • 負載平衡 (Load Balancing):自動分配流量到不同的容器,確保單一實例不會過載。
  • 儲存編排 (Storage Orchestration):自動掛載你所選擇的儲存系統,無論是本地儲存、公有雲(AWS/GCP)或網路儲存(NFS)。
  • 設定管理 (Secret & Config):在不重建映像檔的情況下,安全地部署與更新應用程式的設定與密鑰。

常用指令

使用者主要透過命令行工具 kubectl (Kube Control) 與 Kubernetes 叢集進行互動。以下是核心操作指令:

基礎操作與檢視

# 取得所有節點 (Nodes) 狀態
kubectl get nodes

# 取得所有運作中的 Pods (應用程式實例)
kubectl get pods -o wide

# 查看特定 Pod 的詳細資訊與事件 (Debug 神器)
kubectl describe pod <pod-name>

部署與除錯

# 透過 YAML 檔案部署應用程式
kubectl apply -f deployment.yaml

# 查看 Pod 的標準輸出日誌 (Logs)
kubectl logs -f <pod-name>

# 進入 Pod 內部執行 Shell (類似 docker exec)
kubectl exec -it <pod-name> -- /bin/bash
指令功能說明應用場景
get列出資源kubectl get services (列出服務), kubectl get deployments
describe詳細描述查看資源為何處於 Pending 或 CrashLoopBackOff 狀態的原因
logs查看日誌檢視應用程式輸出的錯誤訊息
apply套用設定宣告式地建立或更新資源狀態
delete刪除資源kubectl delete pod <name> (刪除後 K8s 通常會自動重啟一個新的)
scale調整規模kubectl scale deployment my-app --replicas=3 (手動擴展副本數)
port-forward連接埠轉發kubectl port-forward <pod> 8080:80 (將本機 8080 對應到 Pod 的 80 port,方便測試)

進階技巧

  • 別名設定 (Alias)kubectl 指令較長,建議設定 alias k='kubectl',並安裝 kubectl-autocomplete 讓操作更流暢。
  • Krew 插件管理器:K8s 擁有豐富的插件生態,安裝 Krew 後,可以使用 kubectl ctx 快速切換叢集,或用 kubectl ns 切換命名空間 (Namespace)。
  • 宣告式管理:盡量使用 apply -f filename.yaml 而非指令式的 runexpose,這樣能將基礎設施即程式碼 (IaC) 版控起來,方便團隊協作。