
docker-compose
우리는 현재 컨테이너 배포에 사용하는(효과적으로) 시스템을 보유하고 docker-compose pull && docker-compose up
있으며 시스템을 Kubernetes로 전환하는 과정에 있습니다.
git 저장소에 푸시된 git 태그를 기반으로 프로덕션에 자동으로 배포되는 CI/CD가 있습니다. 준비를 위해 우리는 계속해서 지점을 발전시키고 있습니다. Docker 이미지는 빌드되고 git 프로덕션 태그 또는 git 스테이징 분기 이름으로 태그가 지정됩니다.
배포 시 docker-compose
이미지가 실제로 동일한 경우, 즉 두 개의 프로덕션 태그가 동일한 이미지를 가리키는 경우 컨테이너를 다시 시작하지 않을 만큼 지능적입니다.
Kubernetes에서 동일한 작업을 수행할 수 있는 방법을 찾고 있습니다. 배포 시 포드의 컨테이너에 사용된 실제 이미지가 이미 실행 중인 이미지와 동일한 경우(이미지 태그뿐만 아니라 이미지 체크섬을 기반으로 함) 포드를 다시 시작할 필요는 없습니다. 이것이 가능한가?
감사해요
답변1
댓글에서 언급했듯이 imagePullPolicy:Always
.
에 따르면선적 서류 비치
컨테이너 이미지
imagePullPolicy와 이미지 태그는 kubelet이 지정된 이미지를 가져오려고 시도할 때 영향을 미칩니다.
이미지풀정책:언제나: kubelet이 컨테이너를 시작할 때마다 kubelet은 컨테이너 이미지 레지스트리를 쿼리하여 이름을 이미지 다이제스트로 확인합니다. kubelet에 로컬로 캐시된 정확한 다이제스트가 있는 컨테이너 이미지가 있는 경우 kubelet은 캐시된 이미지를 사용합니다. 그렇지 않으면 kubelet은 확인된 다이제스트가 포함된 이미지를 다운로드(가져오기)하고 해당 이미지를 사용하여 컨테이너를 시작합니다.
참고: 컨테이너가 항상 동일한 버전의 이미지를 사용하도록 하려면 해당 다이제스트를 지정할 수 있습니다. :를 @로 바꿉니다(예: image@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2). 다이제스트는 이미지의 특정 버전을 고유하게 식별하므로 다이제스트 값을 변경하지 않는 한 Kubernetes에서 업데이트되지 않습니다.
또한 라는 도구가 있습니다.성충, 살펴볼 가치가 있습니다. Imago는 실행 중인 Pod sha256을 확인하고 최신 이미지를 사용해야 하는 리소스를 다시 시작합니다.