溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

K8s中配置文件模板含義是什么

發(fā)布時(shí)間:2021-12-08 09:17:43 來(lái)源:億速云 閱讀:181 作者:小新 欄目:云計(jì)算

這篇文章給大家分享的是有關(guān)K8s中配置文件模板含義是什么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

一、deployment

Deployment為Pod和Replica Set下一代Replication Controller)提供聲明式更新

1,配置示例#

apiVersion: apps/v1        # 1.9.0 之前的版本使用 apps/v1beta2,可通過(guò)命令 kubectl api-versions 查看
kind: Deployment           #指定創(chuàng)建資源的角色/類(lèi)型
metadata:                  #資源的元數(shù)據(jù)/屬性
  name: nginx-deployment       #資源的名字,在同一個(gè)namespace中必須唯一
  namespace:  xxxx             #命名空間
  labels: 
    app: demo                  #標(biāo)簽
spec:
  replicas: 3         #副本數(shù)量3
  strategy:
    rollingUpdate:   ##由于replicas為3,則整個(gè)升級(jí),pod個(gè)數(shù)在2-4個(gè)之間
      maxSurge: 1      #滾動(dòng)升級(jí)時(shí)會(huì)先啟動(dòng)1個(gè)pod
      maxUnavailable: 1 #滾動(dòng)升級(jí)時(shí)允許的最大Unavailable的pod個(gè)數(shù)
  selector:             #定義標(biāo)簽選擇器,部署需要管理的pod(帶有該標(biāo)簽的的會(huì)被管理)需在pod 模板中定義
    matchLabels:
      app: web-server
  template:      #這里Pod的定義
    metadata:
      labels:    #Pod的label
        app: web-server
    spec:        # 模板的規(guī)范  
      containers:  
      - name: nginx      #容器的名字  
        image: nginx:1.12.1  #容器的鏡像地址 
        command: [ "/bin/sh","-c","cat /etc/config/path/to/special-key" ]    #啟動(dòng)命令   
        args:                                                                #啟動(dòng)參數(shù)
            - '-storage.local.retention=$(STORAGE_RETENTION)'
            - '-storage.local.memory-chunks=$(STORAGE_MEMORY_CHUNKS)'
            - '-config.file=/etc/prometheus/prometheus.yml'
            - '-alertmanager.url=http://alertmanager:9093/alertmanager'
            - '-web.external-url=$(EXTERNAL_URL)'
    #如果command和args均沒(méi)有寫(xiě),那么用Docker默認(rèn)的配置。
    #如果command寫(xiě)了,但args沒(méi)有寫(xiě),那么Docker默認(rèn)的配置會(huì)被忽略而且僅僅執(zhí)行.yaml文件的command(不帶任何參數(shù)的)。
    #如果command沒(méi)寫(xiě),但args寫(xiě)了,那么Docker默認(rèn)配置的ENTRYPOINT的命令行會(huì)被執(zhí)行,但是調(diào)用的參數(shù)是.yaml中的args。
    #如果如果command和args都寫(xiě)了,那么Docker默認(rèn)的配置被忽略,使用.yaml的配置。
        imagePullPolicy: IfNotPresent  
        # IfNotPresent :默認(rèn)值,本地有則使用本地鏡像,不拉取,如果不存在則拉取
        # Always:  總是拉取
        # Never:  只使用本地鏡像,從不拉取
          livenessProbe:       
#表示container是否處于live狀態(tài)。如果LivenessProbe失敗,LivenessProbe將會(huì)通知kubelet對(duì)應(yīng)的container不健康了。隨后kubelet將kill掉container,并根據(jù)RestarPolicy進(jìn)行進(jìn)一步的操作。默認(rèn)情況下LivenessProbe在第一次檢測(cè)之前初始化值為Success,如果container沒(méi)有提供LivenessProbe,則也認(rèn)為是Success;
            httpGet:
              path: /health #如果沒(méi)有心跳檢測(cè)接口就為/
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 60 ##啟動(dòng)后延時(shí)多久開(kāi)始運(yùn)行檢測(cè)
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 5
            readinessProbe:
          readinessProbe:
            httpGet:
              path: /health #如果沒(méi)有心跳檢測(cè)接口就為/
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 30 ##啟動(dòng)后延時(shí)多久開(kāi)始運(yùn)行檢測(cè)
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 5
          resources:              ##CPU內(nèi)存限制
            requests:
              cpu: 2
              memory: 2048Mi
            limits:
              cpu: 2
              memory: 2048Mi
          env:                    ##通過(guò)環(huán)境變量的方式,直接傳遞pod=自定義Linux OS環(huán)境變量
            - name: LOCAL_KEY     #本地Key
              value: value
            - name: CONFIG_MAP_KEY  #局策略可使用configMap的配置Key,
              valueFrom:
                configMapKeyRef:
                  name: special-config   #configmap中找到name為special-config
                  key: special.type      #找到name為special-config里data下的key
          ports:
            - name: http
              containerPort: 8080 #對(duì)service暴露端口
          volumeMounts:     #掛載volumes中定義的磁盤(pán)
          - name: log-cache
            mount: /tmp/log
          - name: sdb       #普通用法,該卷跟隨容器銷(xiāo)毀,掛載一個(gè)目錄
            mountPath: /data/media    
          - name: nfs-client-root    #直接掛載硬盤(pán)方法,如掛載下面的nfs目錄到/mnt/nfs
            mountPath: /mnt/nfs
          - name: example-volume-config  #高級(jí)用法第1種,將ConfigMap的log-script,backup-script分別掛載到/etc/config目錄下的一個(gè)相對(duì)路徑path/to/...下,如果存在同名文件,直接覆蓋。
            mountPath: /etc/config       
          - name: rbd-pvc                #高級(jí)用法第2中,掛載PVC(PresistentVolumeClaim)

#使用volume將ConfigMap作為文件或目錄直接掛載,其中每一個(gè)key-value鍵值對(duì)都會(huì)生成一個(gè)文件,key為文件名,value為內(nèi)容,
  volumes:  # 定義磁盤(pán)給上面volumeMounts掛載
  - name: log-cache
    emptyDir: {}
  - name: sdb  #掛載宿主機(jī)上面的目錄
    hostPath:
      path: /any/path/it/will/be/replaced
  - name: example-volume-config  # 供ConfigMap文件內(nèi)容到指定路徑使用
    configMap:
      name: example-volume-config  #ConfigMap中名稱
      items:
      - key: log-script           #ConfigMap中的Key
        path: path/to/log-script  #指定目錄下的一個(gè)相對(duì)路徑path/to/log-script
      - key: backup-script        #ConfigMap中的Key
        path: path/to/backup-script  #指定目錄下的一個(gè)相對(duì)路徑path/to/backup-script
  - name: nfs-client-root         #供掛載NFS存儲(chǔ)類(lèi)型
    nfs:
      server: 10.42.0.55          #NFS服務(wù)器地址
      path: /opt/public           #showmount -e 看一下路徑
  - name: rbd-pvc                 #掛載PVC磁盤(pán)
    persistentVolumeClaim:
      claimName: rbd-pvc1         #掛載已經(jīng)申請(qǐng)的pvc磁盤(pán)

二、Service YAML

apiVersion: v1 # 指定api版本,此值必須在kubectl api-versions中 
kind: Service # 指定創(chuàng)建資源的角色/類(lèi)型 
metadata: # 資源的元數(shù)據(jù)/屬性
  name: demo # 資源的名字,在同一個(gè)namespace中必須唯一
  namespace: default # 部署在哪個(gè)namespace中
  labels: # 設(shè)定資源的標(biāo)簽
    app: demo
spec: # 資源規(guī)范字段
  type: ClusterIP # ClusterIP 類(lèi)型
  ports:
    - port: 8080 # service 端口
      targetPort: http # 容器暴露的端口
      protocol: TCP # 協(xié)議
      name: http # 端口名稱
  selector: # 選擇器
    app: demo

感謝各位的閱讀!關(guān)于“K8s中配置文件模板含義是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

k8s
AI