Kubernetes--Pod進階局

資源限制

pod和container的資源請求和限制

#cpu上限
spec.containers[].resources.limits.cpu

#內存上限
spec.containers[].resources.limits.memory

#創建時分配的基本cpu資源
spec.containers[].resources.requests.cpu

#創建時分配的基本內存資源
spec.containers[].resources.requests.memory

示例演示(在master1端操作)

  • 創建pod2.yaml文件
vim pod2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: frontend		
  #Pod資源的名稱
spec:
  containers:
  - name: db		
  #容器1的名稱
    image: mysql
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "password"
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  - name: wp		
  #容器2的名稱
    image: wordpress
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  • 創建資源
kubectl apply -f pod2.yaml
  • 查看資源詳細信息
kubectl describe pod frontend
  • 查看對應節點上Pod資源的佔用情況
kubectl describe nodes 192.168.142.130
  • 查看命名空間
kubectl get ns

重啓策略

1:Always:當容器終止推出後,總是重啓容器,默認策略

2:Onfailure:當容器異常退出(退出碼爲非0)時,重啓容器

3:Never:當容器終止退出,從不重啓資源

注意:k8s中不支持重啓pod資源,只有刪除重建

示例演示

  • 默認的重啓策略是Always
kubectl edit deploy
#輸入/restartPolicy查找
restartPolicy: Always		
#沒有設定重啓策略時默認爲Always

#創建pod3.yaml文件
vim pod3.yaml
 
apiVersion: v1
kind: Pod
metadata:
  name: foo
spec:
  containers:
  - name: busybox
    image: busybox
    args:		
	#參數
    - /bin/sh	
	#在shell環境中
    - -c		
	#command命令
    - sleep 30; exit 3		
	#容器啓動後休眠30s,異常退出返回狀態碼爲非0值

#創建資源
kubectl apply -f pod3.yaml

kubectl get pods
#此時會出現Error報錯,因剛剛設置的異常退出,一會再查看時RESTARTS重啓值會變爲1、
  • 添加重啓策略Never
#修改pod3.yaml文件
vim pod3.yaml

apiVersion: v1
kind: Pod
metadata:
  name: foo
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - /bin/sh
    - -c
    - sleep 10				
	#修改休眠時間爲10s
  restartPolicy: Never		
	#添加重啓策略

#創建資源
kubectl apply -f pod3.yaml

健康檢查,又稱爲探針(Probe)

  • 注意:規則可以同時定義
livenessProbe 如果檢查失敗,將殺死容器,根據Pod的restartPolicy來操作

ReadinessProbe 如果檢查失敗,kubernetes會把Pod從service endpoints後端節點中中剔除
  • Probe支持三種檢查方法
httpGet 發送http請求,返回200-400範圍狀態碼爲成功

exec 執行Shell命令返回狀態碼是0爲成功

tcpSocket 發起TCP Socket建立成功

示例演示

  • 創建資源
#創建pod4.yaml文件
vim pod4.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy
	#創建一個空文件,休眠30s,刪除這個空文件
    livenessProbe:
      exec:
	  #探測健康
        command:
		#command命令
        - cat
		#執行查看命令
        - /tmp/healthy	
		#創建的空文件
      initialDelaySeconds: 5
	  #容器創建完成5秒之後開始健康檢查
      periodSeconds: 5	
	  #檢查的間隔頻率爲5秒
  • 刷新資源
#創建資源
kubectl apply -f pod4.yaml

kubectl get pods
#當中狀態不斷改變,就代表它正在不斷的進行檢查,然後不斷的執行重啓策略,其中的RESTARTS重啓值也會隨之增加

謝謝閱讀!

發佈了95 篇原創文章 · 獲贊 7 · 訪問量 6265
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章