今天我把Deployment控制器和DaemonSet控制器的怎么編寫清單列表好好看了一遍,還學(xué)會了幾種快速修改運行中Deployment&DaemonSet的方法憨愉,鏡像版本升級和回滾也有新的見解输钩。
Deployment資源清單編寫:
例子:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-ds
namespace: defult
spec:
replicas: 3
rollingUpdate:
maxSurge: 1 #滾動更新會先創(chuàng)建1個Pod
maxUnavailable: 1 #滾動更新最多不可以用Pod數(shù)量
selector:
matchLabels:
app: nginx
version: v1.1
template:
mentdata:
labels:
app: nginx
version: v1.1
spec:
containers:
name: nginx
image: nginx
ports:
- name: nginx
containerPort: 80
啟動deployment:
kubectl apply -f nginx-dy.yaml
#apply:他和run效果一樣,只是他可以能對已經(jīng)啟動對象進行重新加載
patch:
給已啟動的資源對象打上補丁,以實現(xiàn)更改資源的目的(yaml文件不會被修改)势腮。
kubel patch deployment nginx-dy -p '{"spec":"replicas": 5}'
#修改成啟動Pod的數(shù)量為5
Deployment實現(xiàn)金絲雀部署:
金絲雀部署流程:只更新一個最新的Pod并把部分流量導(dǎo)入,如果在過去幾個小時內(nèi)沒有出問題就可以大范圍更新Pod漫仆。
命令實現(xiàn):
kubectl set image deployment nginx-dy nginx=ik8s/nginx:v2.1 && kubectl rollout pause Deployment nginx-dy
#把nginx-dy中的nginx鏡像更新至ik8s/nginx:v2.1捎拯,執(zhí)行成功一次后暫停更新。
#新版本測試沒問題可以通過以下命令實現(xiàn)大范圍更新:
kubectl rollout resume deployment nginx-dy
回滾到指定版本:
kubectl rollout history deployment nginx-dy
#查看nginx-dy的歷史版本情況
kubeclt rollout undo deployment nginx-dy --to-revision=1
#回滾到版本1
DaemonSet資源清單編寫:
例子:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: log-dm
namespace: defult
spce:
selector:
matchLabels:
app: log
tmeplates:
metadata:
labels:
app: log
spec:
- name: log
image: ik8s/log:v1.2