文章目錄
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端口