呼應前一天的核心資源Pod的介紹,今天想來談談實際該如何建置Pod,動手操作之前,可以稍微了解一下何謂Yaml File。
在K8s的Yaml設定檔中,一定要具備以下四個片段:
kubectl api-resources
查看各個資源所使用的API版本,不同API版本表示不同的穩定性和支援度。$ 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。
注意,此處的kind與第三天介紹的Kind工具是不一樣的喔!
metadata: 元數據,也就是該Object的資訊,如Name、Label。metadata所對應的value是dictionary type,可觀察下面的實作範例。
spec: Object的規格,如容器及要執行的指令等。
(此圖忘記參考來源是哪裡了QAQ,那篇文章寫得極詳細)
以下為創建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設計有所幫助。