Bạn có thể định cấu hình nhóm của mình với thời gian gia hạn (ví dụ: 30 giây trở lên, tùy thuộc vào thời gian khởi động vùng chứa và kích thước hình ảnh) và đặt "imagePullPolicy: "Always"
. Và sử dụng kubectl delete pod pod_name
. Một vùng chứa mới sẽ được tạo và hình ảnh mới nhất tự động tải xuống, sau đó vùng chứa cũ sẽ kết thúc.
Thí dụ:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"
Tôi hiện đang sử dụng Jenkins cho các bản dựng tự động và gắn thẻ hình ảnh và nó trông giống như sau:
kubectl --user="kube-user" --server="https://kubemaster.example.com" --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"
Một mẹo khác là chạy phức tạp:
kubectl set image deployment/my-deployment mycontainer=myimage:latest
và sau đó:
kubectl set image deployment/my-deployment mycontainer=myimage
Nó thực sự sẽ kích hoạt cập nhật lần lượt nhưng hãy chắc chắn rằng bạn cũng đã imagePullPolicy: "Always"
thiết lập.
Cập nhật:
một mẹo khác mà tôi đã tìm thấy, nơi bạn không phải thay đổi tên hình ảnh, là thay đổi giá trị của trường sẽ kích hoạt cập nhật liên tục, chẳng hạn như terminationGracePeriodSeconds
. Bạn có thể thực hiện việc này bằng cách sử dụng kubectl edit deployment your_deployment
hoặc kubectl apply -f your_deployment.yaml
hoặc sử dụng một bản vá như sau:
kubectl patch deployment your_deployment -p \
'{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'
Chỉ cần đảm bảo rằng bạn luôn thay đổi giá trị số.