2017-01-19 3 views
3

저는 Kubernetes에 매우 익숙하며 k8s v1.4, Minikube v0.15.0 및 Spotify maven Docker 플러그인을 사용하고 있습니다.
내 프로젝트의 빌드 프로세스가 Docker 이미지를 만들고 Minikube의 Docker 엔진에 직접 푸시합니다.Kubernetes의 배포 이미지 업데이트

포드는 내가 만든 배포 (복제 세트 사용)에 의해 만들어지고 전략은 type: RollingUpdate으로 설정됩니다.

:

나는 설명서에이를보고 (즉 .spec.template) 배포의 포드 템플릿이 변경되는 경우에만 경우 배포의 출시가 트리거됩니다. 내가 흐름을 자동화하는 쉬운 방법/해결 방법을 찾고 있어요


: 빌드가 트리거> 새로운 도커 이미지를 누르면 (withoud 버전 변화는)> 배포 포드를 업데이트합니다> 서비스는 새로운 포드를 노출합니다 .

+0

전혀 이미지를 변경하지 않는 경우, 당신은'ImagePullPolicy을 설정하지 않는 한, 각 포드의 새로운 이미지를 얻을 수 있도록 할 수있는 방법은 없습니다 : 항상 '포드를 죽이고 배포를 재현하게하십시오. 그러나 매번 새로운 도커 이미지를 만드는 경우 태그를 업데이트하는 것이 좋습니다. –

+0

@AnirudhRamanathan 매번 "새"이미지를 만들지 않고 이미지를 업데이트하기 때문에 첫 번째 방법을 사용하여 자동으로 이전 포드를 죽일 수있는 방법이 있습니까? –

+0

'ImagePullPolicy : Always'가 로컬 이미지와 함께 작동하지 않습니다. 그래서 특정 lable을 사용하여 포드를 수동으로 삭제하면 복제본 세트가 업데이트 된 이미지를 사용하여 포드를 생성합니다. 자동으로 수행 할 수있는 방법이 있는지 궁금합니다. –

답변

3
컨테이너 이미지 이름을 변경하거나 같은 s 번째로 원래 크기로 돌아 그냥 0으로 응용 프로그램을 확장 할 태그를하지

: 이미 ImagePullPolicy: Always 다음 필요 코멘트에서 언급 한 바와 같이

kubectl scale --replicas=0 deployment application 
kubectl scale --replicas=1 deployment application 

귀하의 구성. 이미지를 변경하는 경우

나는이 업데이트하는 가장 정직 방법이있는

kubectl set image deployment/application app-container=$IMAGE 

하지 이미지를 당신은 문제가있는 경우 다시 떨어질 게 없다거야 downsite을하고있다 변경. 그러므로 나는 이것을 개발 환경 외부에서 사용하는 것을 제안하지 않는다.


편집 : 작은 보너스 - 전후에 동기화 된 축척을 유지하면 sth로 보일 수 있습니다. 같은 :

replica_spec=$(kubectl get deployment/applicatiom -o jsonpath='{.spec.replicas}') 
kubectl scale --replicas=0 deployment application 
kubectl scale --replicas=$replica_spec deployment application 

건배

+0

Kubernetes API를 사용하여 동일한 작업을 수행 할 수있는 방법이 있습니까? –

+0

안녕하세요 - 참조 http://stackoverflow.com/questions/41792851/manage-replicas-count-for-deployment-using-kubernetes-api/41795286#41795286 – pagid

관련 문제