를 업데이트합니다. 명시 적으로 태그/버전을 정의하고 각 빌드를 증가하지 않고, 그 작업을 수행하는 방법을 찾아는 Kubernetes는 내가 좋아하는 내 사용자 지정 고정 표시기의 이미지, 하나의 포드와 배치를 할 이미지
kubectl set image deployment/my-deployment mycontainer=myimage:1.9.1
를 업데이트합니다. 명시 적으로 태그/버전을 정의하고 각 빌드를 증가하지 않고, 그 작업을 수행하는 방법을 찾아는 Kubernetes는 내가 좋아하는 내 사용자 지정 고정 표시기의 이미지, 하나의 포드와 배치를 할 이미지
kubectl set image deployment/my-deployment mycontainer=myimage:1.9.1
당신은 유예 기간으로 포드를 구성 할 수 있습니다 할 (예를 들어 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"
또 다른 트릭은 intially 실행하는 것입니다 :
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}}}}'
그냥 당신이 항상 숫자 값을 변경해야합니다.
실제로 당신의 속임수는 나쁘지 않습니다. myimage를 고려해보십시오 : lastet와 myimage는 기본적으로 같은 것입니다. 감사합니다! – abovesun
이 트릭은 버그와 비슷해 보입니다. 왜 우리가 두 번 지정해야하는지 확실하지 않습니다. – speedplane
kubernetes 배치에서 동일한 이미지를 사용하여 새 창을 시작하려면 (이 트릭은 "최신"태그에만 적용됨) 태그없이 지정할 필요가 있습니다. 다음에 "최신"태그를 추가하면 업데이트가 트리거됩니다. 순서가 바뀔 수도 있지만 중요하지 않습니다. 프로덕션에서는 "최신"태그를 사용하지 않지만 개발 목적으로는 때때로 이점을 누릴 수 있습니다. – Camil