K8S 之yaml文件参数介绍1
1. YAML語法規則:
大小寫敏感 使用縮進表示層級關系 縮進時不允許使用Tal鍵,只允許使用空格 縮進的空格數目不重要,只要相同層級的元素左側對齊即可 ”#” 表示注釋,從這個字符一直到行尾,都會被解析器忽略
2. yaml文件參數介紹
apiVersion: apps/v1 '//api版本標簽'
kind: Deployment '//定義資源類型、角色,deployment是控制器'
metadata: '//定義資源的元數據'
name: nginx-deployment '//定義資源的名稱,在同一個namesapce中必須唯一'
labels: '//定義資源的標簽'
app: nginx
spec: '定義容器模板'
replicas: 3 '//定義副本數量'
selector: '//選擇器'
matchLabels: '//匹配的標簽'
app: nginx '//匹配模板名稱'
template: '//模板'
metadata:
labels:
app: nginx
spec:
containers: '//定義容器信息'
- name: nginx '//-:表示參數,容器名,與標簽名要相同'
image: nginx:1.15.4 '//容器使用的鏡像以及版本'
ports:
- containerPort: 80 '//定義容器的對外端口'
apiVersion:此處值是v1,這個版本號需要根據安裝的Kubernetes版本和資源類型進行變化,記住不是寫死的。
kind:此處創建的是Pod,根據實際情況,此處資源類型可以是Deployment、Job、Ingress、Service等。
metadata:包含Pod的一些meta信息,比如名稱、namespace、標簽等信息。
spec:包括一些container,storage,volume以及其他Kubernetes需要的參數,以及諸如是否在容器失敗時重新啟動容器的屬性。可在特定Kubernetes API找到完整的Kubernetes Pod的屬性。
apiVersion: v1 #指定api版本,此值必須在kubectl apiversion中
kind: Pod #指定創建資源的角色/類型
metadata: #資源的元數據/屬性
name: django-pod #資源的名字,在同一個namespace中必須唯一
labels: #設定資源的標簽,使這個標簽在service網絡中備案,以便被獲知
k8s-app: django
version: v1
kubernetes.io/cluster-service: "true"
annotations: #設置自定義注解列表
- name: String #設置自定義注解名字
spec: #設置該資源的內容
restartPolicy: Always #表示自動重啟,一直都會有這個容器運行
nodeSelector: #選擇node節點14 zone: node1
containers:
- name: django-pod #容器的名字
image: django:v1.1 #容器使用的鏡像地址
imagePullPolicy: Never #三個選擇Always、Never、IfNotPresent,每次啟動時檢查和更新(從registery)images的策略,
# Always,每次都檢查
# Never,每次都不檢查(不管本地是否有)
# IfNotPresent,如果本地有就不檢查,如果沒有就拉取
command: ['sh'] #啟動容器的運行命令,將覆蓋容器中的Entrypoint,對應Dockefile中的ENTRYPOINT
args: ["$(str)"] #啟動容器的命令參數,對應Dockerfile中CMD參數
env: #指定容器中的環境變量
- name: str #變量的名字
value: "/etc/run.sh" #變量的值
resources: #資源管理
requests: #容器運行時,最低資源需求,也就是說最少需要多少資源容器才能正常運行
cpu: 0.1 #CPU資源(核數),兩種方式,浮點數或者是整數+m,0.1=100m,最少值為0.001核(1m)
memory: 32Mi #內存使用量
limits: #資源限制
cpu: 0.5
memory: 32Mi
ports:
- containerPort: 8080 #容器開發對外的端口
name: uwsgi #名稱
protocol: TCP
livenessProbe: #pod內容器健康檢查的設置
httpGet: #通過httpget檢查健康,返回200-399之間,則認為容器正常
path: / #URI地址
port: 8080
#host: 127.0.0.1 #主機地址
scheme: HTTP
initialDelaySeconds: 180 #表明第一次檢測在容器啟動后多長時間后開始
timeoutSeconds: 5 #檢測的超時時間
periodSeconds: 15 #檢查間隔時間
#也可以用這種方法
#exec: 執行命令的方法進行監測,如果其退出碼不為0,則認為容器正常
# command:
# - cat
# - /tmp/health
#也可以用這種方法
#tcpSocket: //通過tcpSocket檢查健康
# port: number
lifecycle: #生命周期管理(鉤子)
postStart: #容器運行之前運行的任務
exec:
command:
- 'sh'
- 'yum upgrade -y'
preStop: #容器關閉之前運行的任務
exec:
command: ['service httpd stop']
volumeMounts: #掛載設置
- name: volume #掛載設備的名字,與volumes[*].name 需要對應
mountPath: /data #掛載到容器的某個路徑下
readOnly: True
volumes: #定義一組掛載設備
- name: volume #定義一個掛載設備的名字
#meptyDir: {}
hostPath:
path: /opt #掛載設備類型為hostPath,路徑為宿主機下的/opt
3. 解析k8s中的pod
【Port】: port是k8s集群內部訪問service的端口,即通過clusterIP: port可以訪問到某個service
【nodePort】:nodePort是外部訪問k8s集群中service的端口,通過nodeIP: nodePort可以從外部訪問到某個service。
【targetPort】:targetPort是pod的端口,從port和nodePort來的流量經過kube-proxy流入到后端pod的targetPort上,最后進入容器。
【containerPort】:containerPort是pod內部容器的端口,targetPort映射到containerPort。
4. 生成YMAL或者JSON文件
## (1)直接生成yaml文件內容展示命令行界面,并不會保存 # kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml ## (2)直接生成yaml文件內容展示命令行界面,文件另存為 # kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml > my-deployment.yaml ## (3)直接生成json文件內容展示命令行界面,并不會保存 # kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json ## (4)將現有的資源生成模板并命令行界面 # kubectl get deploy/nginx-deployment --export -o yaml ## (5)將現有的資源生成模板保存到文件中 # kubectl get deploy/nginx-deployment --export -o yaml > shuai.yaml
總結
以上是生活随笔為你收集整理的K8S 之yaml文件参数介绍1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ECC 公钥加密 使用相同的ECC公钥对
- 下一篇: Delete..In.. 删除语句的优化