Kubernetes
容器調度與自動化部署平台
軟體分類 程式開發 / 雲端應用
軟體標籤
rated-1FSFCamtasia Studio地球科學
開發廠商 Cloud Native Computing Foundation (CNCF)
產品說明
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而非指令式的run或expose,這樣能將基礎設施即程式碼 (IaC) 版控起來,方便團隊協作。