오늘은 두 가지로 나누어 설명을 할게요.
1. 쿠버네티스(Kubernetes) 에서 내가 사용중인 이미지(image) 의 최신 버전이 나올 때 마다 지속적으로 최신본으로 반영하기 위한 방법
2. 반대로 이미지(image) 가 자동 업데이트(update) 되어 저절로 최신본이 되는 걸 막는 방법
두 가지 입니다.
저 같은 경우는 2번에 해당이 되어 자꾸 자동으로 업데이트가 되다보니 그때마다 손봐주고 어쩔 때는 패치가 되느라 서비스가 멋대로 중단되어있던 경험이 있어서 의외로 2번의 경우를 찾으시는 분들도 있을 것 같았습니다.
1. 쿠버네티스(Kubernetes) 에서 내가 사용중인 이미지(image) 의 최신 버전이 나올 때 마다 지속적으로 최신본으로 반영하기 위한 방법
사실 간단 합니다.
저는 nextcloud 를 서비스 하고 있기 때문에 이를 예로 들어 설명할게요.
위 그림과 같은 경우에는 최신 버전의 이미지가 나올 때마다 스스로 새 이미지를 받아 옵니다. 그리고 파드가 재기동 될 때 바로 반영을 해 버리죠.
즉,
image 부분에 이미지 이름과 태그로 :latest 가 붙어있고, imagePullPolicy 가 Always 로 되어있다면 새 이미지 버전이 나오면 docker hub 에서 이미지를 바로 받아오게 되고 다음 Pod 재기동 시 반영 시킵니다.
반드시 latest 태그, imagePullPolicy: Always 이 두 가지 모두 되어 있어야 합니다.
팁으로
docker images
위와 같이 도커 이미지 목록을 보면 새 이미지 버전이 나올 때마다 바로 받아오는 것을 보실 수 있을 겁니다.
근데 사실 운영을 하기에는 새 이미지를 바로바로 반영시키는 건 권장이 아니라고 하네요.
이유는 Pod 가 문제가 생겨서 killed 되고 다시 생성이 되는데 그때 버전이 올라간 새 이미지가 바로 반영이 되고 버전 업으로 인한 또 다른 문제 또는 패치 과정 중에 수동 작업이 필요한 부분이 생긴다면 서비스는 멈추게 되고 그대로 멈춰있게 될겁니다...
2. 반대로 이미지(image) 가 자동 업데이트(update) 되어 저절로 최신본이 되는 걸 막는 방법
보통 Kubernetes 에서 deployment 를 만들고 대부분 latest 를 붙여 사용하시는데 이러면 대개 이미지 자동 업데이트가 적용이 되어 있습니다.
따라서 이 경우에는,
위와 같이 image 에 이미지 이름 뒤에 latest 란 태그는 절대 하지 마시고, imagePullPolicy 를 IfNotPresent 로 해 주시면 자동으로 이미지가 업데이트 되지 않습니다.
imagePullPolicy 옵션
옵션 종류 | 설명 |
Always | 항상 이미지를 새로 받아옴 |
IfNotPresent | 만약 존재하는 이미지가 있다면 새로 받아오진 않고, 없다면 새로 받아옴 |
Never | 절대 이미지를 새로 받아오지 않음 |
본인의 경우에 맞게 imagePullPolicy 의 옵션을 맞춰 사용하시면 될 것 같습니다.
끝.
'쿠버네티스' 카테고리의 다른 글
라즈베리파이 쿠버네티스 Nextcloud 의 PV, PVC 만들고 본격 운영하기 (2) | 2020.12.27 |
---|---|
라즈베리파이4 에 싱글노드(1대) 쿠버네티스 설치 하기 (2) | 2020.12.27 |
라즈베리파이에 쿠버네티스(k8s) 올리고 Nextcloud 배포하여 나만의 클라우드 구축하기 (0) | 2020.12.26 |