Można skonfigurować swoją kapsułę z okresem karencji (na przykład 30 sekund lub więcej, w zależności od na czas uruchamiania kontenera i rozmiar obrazu) i ustaw "imagePullPolicy: "Always"
. I użyj kubectl delete pod pod_name
. Nowy kontener zostanie utworzony, a najnowszy obraz automatycznie pobrany, a następnie stary pojemnik zakończony.
Przykład:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"
obecnie używam Jenkins dla zautomatyzowanego buduje i tagowanie obrazu i wygląda to mniej więcej tak:
kubectl --user="kube-user" --server="https://kubemaster.example.com" --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"
Inną sztuczką jest intially uruchomić:
kubectl set image deployment/my-deployment mycontainer=myimage:latest
, a następnie:
kubectl set image deployment/my-deployment mycontainer=myimage
To rzeczywiście spowoduje uruchomienie aktualizacji, ale upewnij się, że masz także zestaw imagePullPolicy: "Always"
.
Aktualizacja:
kolejna sztuczka znalazłem, gdzie nie trzeba zmienić nazwę obrazu, jest zmiana wartości pola, które wyzwoli kroczący aktualizację, jak terminationGracePeriodSeconds
. Można to zrobić za pomocą kubectl edit deployment your_deployment
lub kubectl apply -f your_deployment.yaml
lub za pomocą plastra takiego:
kubectl patch deployment your_deployment -p \
'{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'
Tylko upewnij się zawsze zmienić wartość liczbową.
Właściwie to twoja sztuczka nie jest zła, biorąc pod uwagę mój image: lastet i myimage w zasadzie to samo, dzięki! – abovesun
Ta sztuczka wydaje się bardziej podobna do błędu, nie wiem, dlaczego musimy ją podać dwa razy. – speedplane
Jeśli chcesz, aby wdrożenie modelu kubernetes uruchomiło nowy moduł przy użyciu tego samego obrazu (i ta sztuczka działa tylko z tagiem "najnowszy"), musisz określić to bez tagu. Następnym razem dodaj "najnowszy" tag i uruchomi aktualizację. Zamówienie może zostać odwrócone, nie ma znaczenia. Nigdy nie używasz "najnowszego" tagu w produkcji, ale w celach programistycznych możesz z niego skorzystać. – Camil