資源限制
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重啓值也會隨之增加