← 返回上一頁
Kubernetes

Kubernetes 新手必讀:從架構、核心物件到第一次部署的完整入門指南

本頁目錄

前言

Kubernetes(簡稱 K8s)是 Google 開源的容器編排引擎,支援自動化部署、大規模可伸縮和應用容器化管理。對開發者而言,Kubernetes 可以看成一個叢集作業系統,提供服務發現、伸縮、負載均衡、自癒等功能。本文將從 Kubernetes 的架構、核心物件到實際部署,帶你建立完整的基礎認知。

Kubernetes 叢集架構

Kubernetes 叢集由 Master 節點和 Node 節點組成。

Master 節點

Master 節點是叢集的控制節點,由四個核心元件構成:

  • API Server:各元件互相通訊的中轉站,接受外部請求並將資訊寫入 ETCD
  • Controller Manager:執行叢集級功能,如追蹤節點、處理節點故障等
  • Scheduler:負責根據資源、親和性等條件將容器調度到 Node 上運行
  • ETCD:分散式資料儲存元件,負責儲存叢集的設定資訊

生產環境通常部署多個 Master 以保障高可用。

Node 節點

Node 節點是叢集的計算節點,運行容器化應用:

  • kubelet:與 Container Runtime 互動,管理節點上的容器
  • kube-proxy:應用間的存取代理,解決節點上應用的存取問題
  • Container Runtime:容器運行時(如 Docker),負責下載映像檔和運行容器

Kubernetes 的擴展性

Kubernetes 開放了三大介面,讓擴展性最大化:

  • CRI(Container Runtime Interface):容器運行時介面,支援不同容器引擎
  • CNI(Container Network Interface):容器網路介面,支援不同網路環境
  • CSI(Container Storage Interface):容器儲存介面,支援各種類型的儲存

Kubernetes 核心物件

工作負載類

  • Pod:K8s 建立或部署的最小單位,封裝一個或多個容器、儲存卷和獨立網路 IP
  • Deployment:對 Pod 的服務化封裝,支援多副本和自動分發請求
  • StatefulSet:管理有狀態應用,為每個 Pod 維護固定 ID
  • DaemonSet:在每個節點上運行一個 Pod,適合日誌收集、資源監控等
  • Job / CronJob:分別用於批次任務和定時任務

服務與網路類

  • Service:提供固定 IP 位址和負載均衡,基於四層 TCP/UDP 轉發
  • Ingress:基於七層 HTTP/HTTPS 轉發,支援域名和路徑細粒度劃分

設定與儲存類

  • ConfigMap:儲存設定資料的鍵值對,實現設定解耦
  • Secret:加密儲存認證資訊、憑證、私鑰等敏感資料
  • PV / PVC:PV 定義持久化儲存卷,PVC 用於申請儲存資源

kubectl 命令列工具

kubectl 是 Kubernetes 叢集的命令列工具,可安裝在任意機器上操作叢集。

# 查看叢集資訊
kubectl cluster-info

# 查看節點
kubectl get nodes

Kubernetes 物件的 YAML 描述

Kubernetes 資源使用 YAML 描述,內容分為四個部分:

  • typeMeta:API 版本和物件類型
  • objectMeta:物件名稱、標籤等元資訊
  • spec:物件的期望狀態(映像檔、副本數等)
  • status:物件的實際狀態(建立後才有)

實戰:部署第一個應用

撰寫 Deployment YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        resources:
          requests:
            cpu: 100m
            memory: 200Mi
          limits:
            cpu: 100m
            memory: 200Mi

部署與查看

# 建立 Deployment
kubectl create -f nginx-deployment.yaml

# 查看 Deployment
kubectl get deploy

# 查看 Pod
kubectl get pods

總結

  • Kubernetes 由 Master 和 Node 節點組成,Master 負責控制,Node 負責運行工作負載
  • CRI、CNI、CSI 三大介面讓 Kubernetes 具備極高的擴展性
  • Pod 是最小部署單位,Deployment、StatefulSet、DaemonSet 等控制器管理 Pod 的生命週期
  • Service 和 Ingress 解決服務存取問題,ConfigMap 和 Secret 管理設定資料
  • 使用 kubectl 和 YAML 描述檔即可在叢集上部署和管理應用

參考資源

分享這篇
X LinkedIn Facebook Hacker News Reddit

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料。