背景:
對於已經發布的服務。如何做到在線更新呢?
總結有這麼幾種辦法:
kubectl annotate, kubectl edit, kubectl replace, kubectl scale, 和 kubectl apply。
本文介紹 kubectl patch的辦法
比如創建一個如下的pod
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: patch-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: patch-demo-ctr
image: nginx
tolerations:
- effect: NoSchedule
key: dedicated
value: test-team
之後我們要修改鏡像內容 ,使用patch怎麼辦呢?
1.先創建一個patch-file-containers.yaml
spec:
template:
spec:
containers:
- name: patch-demo-ctr-2
image: redis
2.之後命令行更新pod配置
kubectl patch deployment patch-demo --patch “$(cat patch-file-containers.yaml)”
很多k8s管理平臺的 在線修改yaml 其實使用的是 kubectl patch 增量修改pod配置