Ви можете налаштувати свій стручок з пільговим періодом (наприклад, 30 секунд або більше, залежно від часу запуску контейнера та розміру зображення) та встановити "imagePullPolicy: "Always"
. І використовувати kubectl delete pod pod_name
. Буде створений новий контейнер і автоматично завантажується останнє зображення, після чого старий контейнер припиняється.
Приклад:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"
Наразі я використовую Дженкінса для автоматизованих збірок та тегування зображень, і це виглядає приблизно так:
kubectl --user="kube-user" --server="https://kubemaster.example.com" --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"
Ще одна хитрість полягає в тісному запуску:
kubectl set image deployment/my-deployment mycontainer=myimage:latest
і потім:
kubectl set image deployment/my-deployment mycontainer=myimage
Це насправді буде запускати прокатне оновлення, але переконайтесь, що ви також imagePullPolicy: "Always"
встановили.
Оновлення:
Ще один трюк, який я знайшов, коли вам не потрібно змінювати ім'я зображення, - це змінити значення поля, яке спровокує прокатне оновлення, наприклад terminationGracePeriodSeconds
. Ви можете зробити це з допомогою kubectl edit deployment your_deployment
або kubectl apply -f your_deployment.yaml
чи використовувати патч , як це:
kubectl patch deployment your_deployment -p \
'{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'
Просто переконайтеся, що ви завжди змінюєте значення числа.