什麼是 Kubernetes
Section titled “什麼是 Kubernetes”Kubernetes(K8s)是一個開源的容器編排系統,用於自動化容器應用的部署、擴展和管理。 由 Google 內部的 Borg 系統演化而來,現為 CNCF 旗下最重要的專案之一。
Control Plane(控制平面)
Section titled “Control Plane(控制平面)”控制平面負責管理叢集的全域決策,包含以下元件:
| 元件 | 職責 |
|---|---|
| API Server | 叢集的前端,處理所有 REST 請求 |
| etcd | 分散式鍵值儲存,保存叢集狀態 |
| Scheduler | 決定 Pod 部署在哪個節點 |
| Controller Manager | 確保叢集狀態符合期望(replica count 等) |
Worker Node(工作節點)
Section titled “Worker Node(工作節點)”工作節點運行應用容器,每個節點包含:
- kubelet:確保容器在 Pod 中正常運行
- kube-proxy:維護節點上的網路規則
- Container Runtime:實際執行容器(如 containerd)
Pod 是 K8s 最小的可部署單位,包含一個或多個容器。
apiVersion: v1kind: Podmetadata: name: my-app labels: app: webspec: containers: - name: app image: nginx:1.25 ports: - containerPort: 80Deployment 管理 Pod 的副本數量,支援滾動更新。
apiVersion: apps/v1kind: Deploymentmetadata: name: my-appspec: replicas: 3 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: app image: nginx:1.25 ports: - containerPort: 80Service 提供穩定的網路端點,將流量路由至 Pod。
apiVersion: v1kind: Servicemetadata: name: my-app-svcspec: type: ClusterIP selector: app: web ports: - port: 80 targetPort: 80-
查看叢集狀態
Terminal window kubectl cluster-infokubectl get nodes -
部署應用
Terminal window kubectl apply -f deployment.yaml -
查看資源
Terminal window kubectl get podskubectl get serviceskubectl get deployments -
除錯
Terminal window kubectl describe pod <pod-name>kubectl logs <pod-name>kubectl exec -it <pod-name> -- /bin/sh
- Docker 指南 — 建議先閱讀 Docker 基礎再學習 Kubernetes
- Docker 容器化工具集 — 實際的 Docker 開發環境自動化工具