I'm using kubectl apply
to update my Kubernetes pods:
kubectl apply -f /my-app/service.yaml
kubectl apply -f /my-app/deployment.yaml
Below is my service.yaml:
apiVersion: v1
kind: Service
metadata:
name: my-app
labels:
run: my-app
spec:
type: NodePort
selector:
run: my-app
ports:
- protocol: TCP
port: 9000
nodePort: 30769
Below is my deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
selector:
matchLabels:
run: my-app
replicas: 2
template:
metadata:
labels:
run: my-app
spec:
containers:
- name: my-app
image: dockerhubaccount/my-app-img:latest
ports:
- containerPort: 9000
protocol: TCP
imagePullSecrets:
- name: my-app-img-credentials
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
This works fine the first time, but on subsequent runs, my pods are not getting updated.
I have read the suggested workaround at https://github.com/kubernetes/kubernetes/issues/33664 which is:
kubectl patch deployment my-app -p "{"spec":{"template":{"metadata":{"labels":{"date":"`date +'%s'`"}}}}}"
I was able to run the above command, but it did not resolve the issue for me.
I know that I can trigger pod updates by manually changing the image tag from "latest" to another tag, but I want to make sure I get the latest image without having to check Docker Hub.
Any help would be greatly appreciated.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…