2023/05/23 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~
本文章同時發佈於:
文章為自己的經驗與夥伴整理的內容,設計沒有標準答案,如有可以改進的地方,請告訴我,我會盡我所能的修改,謝謝大家~

大家好,今天要介紹 K8s 到底有哪些 config yaml 檔,他們又是何種用途。

圖片來源: Kubernetes, At A First Glance
K8s 有非常多的元件來建構豐富多樣的架構,但我們可已由高至低了解以下 4 個不同層級的重要元件,會比較好理解:
Pod 可以理解為一個或多個 docker 容器怎麼啟動在 K8s 中,而在 kompose 轉換中沒有出現此 config 檔案,為什麼呢?
因為 Pod 之上有 Deployment,他除了描述 Pod 的行為外,還會描述Pod在K8s上狀態發生變化時要對應的機制。
而關於如何連線存取這些Pod,就要透過 Service 來設定
Service 與 Deployment 中有些 config 使用的欄位相同,分別是:
Deployment 的欄位介紹:
# server-service.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.16.0 (0c01309)
  creationTimestamp: null
  labels:
    io.kompose.service: server
  name: server
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: server
    spec:
      containers:
        - command:
            - go
            - run
            - cmd/main.go
          image: superj80820/digimon-service
          name: server
          ports:
            - containerPort: 6000
          resources: {}
      restartPolicy: Always
status: {}
Service 的欄位介紹:
# server-service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.16.0 (0c01309)
  creationTimestamp: null
  labels:
    io.kompose.service: server
  name: server
spec:
  ports:
    - name: "6000"
      port: 6000
      targetPort: 6000
  selector:
    io.kompose.service: server
status:
  loadBalancer: {}