現在、K8Sクラスタでポッドを管理するためにDeploymentsを使用しています。Kubernetes - ローリングアップデートで新しいポッドを起動せずに古いポッドを取り除く
私の配備の中には、2つのポッド/レプリカが必要なものがあります.3つのポッド/レプリカが必要なものもあれば、1つのポッド/レプリカしか必要ないものもあります。 Imの問題は、1つのポッド/レプリカを持つものです。
私のYAMLファイルは次のとおりです。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: user-management-backend-deployment
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 2
selector:
matchLabels:
name: user-management-backend
template:
metadata:
labels:
name: user-management-backend
spec:
containers:
- name: user-management-backend
image: proj_csdp/user-management_backend:3.1.8
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
livenessProbe:
httpGet:
port: 8080
path: /user_management/health
initialDelaySeconds: 300
timeoutSeconds: 30
readinessProbe:
httpGet:
port: 8080
path: /user_management/health
initialDelaySeconds: 10
timeoutSeconds: 5
volumeMounts:
- name: nfs
mountPath: "/vault"
volumes:
- name: nfs
nfs:
server: kube-nfs
path: "/kubenfs/vault"
readOnly: true
私は罰金を実行している古いバージョンを持っています。
# kubectl get po | grep user-management-backend-deployment
user-management-backend-deployment-3264073543-mrrvl 1/1 Running 0 4d
今、私は画像を更新する:古いポッド作業を維持しながら
# kubectl set image deployment user-management-backend-deployment user-management-backend=proj_csdp/user-management_backend:3.2.0
は今RollingUpdate設計どおり、K8Sは新しいポッドを持ち出す必要があり、新しいポッドへの準備ができて一度だけ古いポッドを削除する必要があります、トラフィックを取る。しかし、私が見ているのは、古いポッドが直ちに削除され、新しいポッドが作成されてから、トラフィックを取るのに時間がかかり、トラフィックを落とさなければならないということです。
# kubectl get po | grep user-management-backend-deployment
user-management-backend-deployment-3264073543-l93m9 0/1 ContainerCreating 0 1s
# kubectl get po | grep user-management-backend-deployment
user-management-backend-deployment-3264073543-l93m9 1/1 Running 0 33s
私はmaxSurge: 2
& maxUnavailable: 1
を使用しているが、これは動作していないようです。
なぜこれが機能しないのですか?
感謝。 'maxUnavailable:0'が働いています! –