iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
Kubernetes

開工前挑戰 K8s系列 第 5

Day5 - K8s核心資源(1) Pod 實作

  • 分享至 

  • xImage
  •  

前言

呼應前一天的核心資源Pod的介紹,今天想來談談實際該如何建置Pod,動手操作之前,可以稍微了解一下何謂Yaml File。

YAML File

在K8s的Yaml設定檔中,一定要具備以下四個片段:

  • apiVersion: K8s API的版本,用來創建我們所需要的Object,可透過kubectl api-resources查看各個資源所使用的API版本,不同API版本表示不同的穩定性和支援度。
    Alpha: 內部測試版本。
    Beta: 經歷官方和社群測試,相對穩定的版本。
    Stable: 正式發布版本。
$ kubectl api-resources
-
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
pods                              po           v1                                     true         Pod
services                          svc          v1                                     true         Service
apiservices                                    apiregistration.k8s.io/v1              false        APIService
deployments                       deploy       apps/v1                                true         Deployment
replicasets                       rs           apps/v1                                true         ReplicaSet
  • kind: 資源類型,也就是所要建立的Object它是何種資源,如Pod、ReplicaSet等,下表為該資源類型所對應的apiVersion。

    https://ithelp.ithome.com.tw/upload/images/20240919/20169452zuO3lHiKdc.png

    注意,此處的kind與第三天介紹的Kind工具是不一樣的喔!

  • metadata: 元數據,也就是該Object的資訊,如Name、Label。metadata所對應的value是dictionary type,可觀察下面的實作範例。

  • spec: Object的規格,如容器及要執行的指令等。

    https://ithelp.ithome.com.tw/upload/images/20240919/20169452E05VgBO0at.png
    (此圖忘記參考來源是哪裡了QAQ,那篇文章寫得極詳細)

    https://ithelp.ithome.com.tw/upload/images/20240919/20169452hvavMBwYYx.png

以下為創建Pod的Yaml設定檔範例:

# This file is pod-definition.yml
apiVersion: v1
kind: Pod
metadata:
    name: podname
    labels:
        app: myapp
        type: front-end
spec:
    containers:
        - name: nginx
          image: nginx:1.14.2
    initContainers:
        - name: init-myservice
          image: busybox
          command: ['sh', '-c', 'git clone <some-repository-that-will-be-used-by-application> ;']

透過kubectl create -f pod-definition.yml,即可依據上述的設定檔創建Pod物件。

小結

後續希望再更動本文,詳細說明Group、Version、Kind以及Resource這四大概念,這對於理解K8s設計有所幫助。


上一篇
Day4 - K8s核心資源(1) Pod
下一篇
Day6 - K8s核心資源(2) ReplicaSet
系列文
開工前挑戰 K8s8
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言