Yaml文件部署實例

文章目錄

Nginx

apiVersion: apps/v1                  # api版本聲明:1、extensions/v1beta1 是用於kubernetes版本在1.6之前 2、apps/v1beta1 是用於1.6-1.9版本之間 3、apps/v1 是1.9版本以後使用。目前使用的Kubernetes版本: v1.17.4。
kind: Deployment                     # 指定創建資源的類型
metadata:                            # 資源的元數據/屬性
  name: nginx-deployment             # 資源名稱,在同一個namespace中唯一
  namespace: liuli-space             # 指定namespace
spec:                                # 資源規格定義
  revisionHistoryLimit: 10           # 保存最近的10個歷史版本
  replicas: 2                        # 指定pod副本數量
  strategy:                          # 滾動升級策略
    type: RollingUpdate              # 滾動更新。策略:重建(recreate):停止舊版本部署新版本;滾動更新(rolling-update):一個接一個地以滾動更新方式發佈新版本;藍綠(blue/green):新版本與舊版本一起存在,然後切換流量;金絲雀(canary):將新版本面向一部分用戶發佈,然後繼續全量發佈
    rollingUpdate:
      maxSurge: 1                    # 一次可以添加多少個Pod
      maxUnavailable: 0              # 滾動更新期間最大多少個Pod不可用
  selector:                          # 定義標籤選擇器
    matchLabels:                     # 標籤匹配
      app: nginx-server              # 這裏選擇需要管理的pod的標籤名
  template:                          # pod模版定義
    metadata:                        # 資源的元數據/屬性
      labels:                        # 定義pod標籤
        app: nginx-server            # pod標籤名(自定義)
    spec:                            # 指定該資源的內容
      restartPolicy: Always          # 容器重啓策略。只要退出就重啓(Always),失敗退出(exit code不等於0)時重啓(OnFailure),只要退出就不再重啓(Never)
      imagePullSecrets:              # 私有倉庫鏡像密鑰
      - name: liuli-secret           # 密鑰名稱
      containers:                    # 定義一個容器
      - name: nginx-container        # 容器名稱
        image: 192.168.1.40/liuli/nginx:v1.18    # 鏡像名稱
        imagePullPolicy: IfNotPresent# 鏡像拉取策略。 不管鏡像是否存在都會進行一次拉取。(Always),只有鏡像不存在時,纔會進行鏡像拉取。(IfNotPresent),只使用本地鏡像,從不拉取(Never)
        ports:                       # 端口定義
        - name: nginx-port           # 端口名稱
          containerPort: 80          # 容器對外暴露的端口
          protocol: TCP              # 端口通訊協議
        livenessProbe:				 # 存活探針。用於判斷容器是否存活(running狀態),則kubelet殺掉該容器,並根據容器的重啓策略做相應的處理。
          failureThreshold: 30       # 探測成功後,最少連續探測失敗多少次才被認定爲失敗。默認是3。最小值是1。
          initialDelaySeconds: 30    # 在執行第一次探測前應該等待30秒。
          periodSeconds: 10          # 每10秒執行一次存活探測。默認是10秒,最小1秒。
          successThreshold: 1        # 探測失敗後,最少連續探測成功多少次才被認定爲成功。默認是1。對於liveness必須是1。最小值是1。
          tcpSocket:                 # TCP端口存活檢測
            port: 80                 # 容器端口
          timeoutSeconds: 2          # 探測超時時間。默認1秒,最小1秒。
        readinessProbe:              # 就緒探針。用於判斷容器是否啓動完成(ready狀態)
          failureThreshold: 30       # 探測成功後,最少連續探測失敗多少次才被認定爲失敗。默認是3。最小值是1。
          initialDelaySeconds: 30    # 在執行第一次探測前應該等待30秒。
          periodSeconds: 10          # 每10秒執行一次存活探測。默認是10秒,最小1秒。
          successThreshold: 2        # 探測失敗後,最少連續探測成功多少次才被認定爲成功。默認是1。
          tcpSocket:                 # TCP端口存活檢測
            port: 80                 # 容器端口
          timeoutSeconds: 2          # 探測超時時間。默認1秒,最小1秒。
        lifecycle:                   # Pod 生命週期控制,有postStart、PreStop兩個函數
          preStop:                   # 在容器被終止前執行的任務
            exec:                    # 在容器內執行命令
              command: ["/bin/bash", "-c", "sleep 40"] # 沉睡40秒命令
---
apiVersion: v1                       # api版本聲明
kind: Service                        # 指定創建資源的類型
metadata:                            # 資源的元數據/屬性
  name: nginx-service                # service名稱
  namespace: liuli-space             # service的命名空間
  labels:                            # 定義標籤
    name: nginx-service              # service的標籤名稱
spec:                                # 資源規格定義
  type: NodePort                     # 類型是NodePort。Service有四種type: ClusterIP(默認)、NodePort、LoadBalancer、ExternalName. 其中NodePort和LoadBalancer兩類型的Services可以對外提供服務。
  selector:                          # 定義標籤選擇器
    app: nginx-server                # 這裏選擇需要管理的pod的標籤名
  ports:                             # 端口定義
    - protocol: TCP                  # 端口通訊協議
      port: 8081                     # 集羣內部通訊端口(自定義)
      targetPort: 80                 # 容器對外暴露的端口,即containerPort
      nodePort: 32334                # 所有的節點都會開放此端口,此端口供外部調用
---
apiVersion: extensions/v1beta1	     # api版本聲明
kind: Ingress                 	     # 指定創建資源的類型
metadata:                    	     # 資源的元數據/屬性
  name: nginx-ingress         	     # ingress名稱
  namespace: liuli-space       	     # ingress的命名空間
spec:   					   	     # 資源規格定義
  rules:                       	     # 路由規則
  - host: liuli.com            	     # 域名,填寫IP無效
    http:                     		 # 類型,目前只支持http/tls
      paths:                  		 # 路由路徑
      - backend:                     # 代理的後端配置
          serviceName: nginx-service # Service的名稱
          servicePort: 8081          # Service的端口,非nodePort端口
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章