Motivation (동기 부여) k8s로 전환할 때 가장 큰 문제 중 하나는 표준 롤링 업데이트처럼 정교한 배포 전략을 어떻게 설정할 수 있는지다. k8s에서 제공하고 있는 표준 롤링 업데이트는 모든 요구사항을 만족할 수 없기 때문이다. 새 버전을 배포하려고 할 때를 예로 들어보자. 새 버전 서비스가 제대로 작동하는지 테스트 먼저 진행 1번 결과가 정상인 경우, 모든 서비스를 새 버전으로 전환 이런 배포 전략을 Blue/Green 배포라고 한다. 먼저 k8s 리소스만 이용해서 Blue/Green 배포를 수행해보고자 한다. Simple Blue/Green with Only k8s 책에서는 ELB(AWS Load Balancer)를 사용하였으나, 외부 IP 노출이 어려워 NodePort로 수정해서 작업 진..
프로메테우스 오퍼레이터 프로메테우스는 좋은 메트릭 수집 DB다. 그렇지만 사용하다 보면 한 가지 단점이 있는데 클라우드 환경에서 사용할 경우 동적으로 프로메테우스 Config를 업데이트 하기가 생각보다 까다롭다는 것이다. ConfigMap을 Volume Mount해서 이용한다면 괜찮게 사용할 수도 있겠지만, ConfigMap을 매번 업데이트하는 것도 문제다.이런 문제점을 해결해주기 프로메테우스 커뮤니티는 프로메테우스 오퍼레이터라는 것을 제공해준다. 프로메테우스 오퍼레이터는 쿠버네티스의 CRD 자원인데, 쿠버네티스 내부에서 프로메테우스에게 동적으로 설정을 업데이트 하도록 동작한다. 앞서 문제가 있었던 '동적 설정 업데이트'라는 문제를 시원하게 해결해준다. 또한 프로테메우스 오퍼레이터를 Hel..
들어가기 전 이 글은 쿠버네티스 인 액션 16장을 공부하며 작성한 글입니다. 16.1 Taint와 Toleration을 사용해 특정 노드에서 파드 실행 제한 Taint는 오염을 의미하고, Toleration은 용인이라는 의미다. 노드에 Taint(오염)를 이용해 특정 표시를 해두었을 때, Pod가 이것은 Tolerate(용인)하는 경우라면 그 파드는 노드에 스케쥴링이 가능하다는 의미다. Taint와 Toleration은 각각 이런 역할을 하는 녀석들이다. Taint + Toleration은 파드를 특정 노드에 스케쥴링 하도록 하기 보다는 특정 노드에 파드가 배포되지 않도록 동작한다. Taint : 노드에 추가할 수 있는 스케쥴링 관련 정보다. 노드에 추가된 모든 Taint를 만족하는 Pod만 스케쥴링 될..
들어가기 전 이 글은 쿠버네티스 인 액션 6장을 공부하며 작성한 글입니다. 6. 볼륨 : 컨테이너에 디스크 스토리지 연결 파드는 내부적으로 CPU / 메모리 / 네트워크 인터페이스를 따로 배정 받아서 동작한다. 그렇지만 파드가 사용하는 파일 시스템은 컨테이너 이미지로부터 만들어진다. 따라서 기본적으로 파드에 저장한 데이터들은 파드가 재시작하면 사라진다. 파드에 저장한 데이터들을 보존하려면 '볼륨'을 사용해야한다. 볼륨은 파드와 동일한 라이프 사이클을 가진다. 이 장에서는 볼륨을 공부해보고자 한다. 6.1 볼륨 소개 볼륨은 독립적인 쿠버네티스 오브젝트가 아니므로 자체적으로 생성 / 삭제될 수 없다. 볼륨은 파드의 모든 컨테이너에서 사용 가능하지만, 접근하려는 컨테이너에서 각각 마운트 돼야한다. 6.1.2 ..
들어가기 전 이 글은 쿠버네티스 인 액션 책을 읽고 공부하며 작성한 글입니다. 4. 레플리케이션과 그 밖의 컨트롤러 : 관리되는 파드 배포 쿠버네티스는 특정 파드들이 실패 상태에 다다르면 자동으로 복구하는 기능을 제공한다. 이런 기능은 다음 두 가지로 나누어져서 제공되는 것 같다. 마스터 노드(Control Plane)의 컨트롤러들 : Replicaset, DaemonSet 워커 노드의 Kubelet 이 장에서는 어떤 메커니즘으로 실패 상태의 녀석들이 정상 상태로 회복되는지를 공부하고자 한다. 4.1 파드를 안정적으로 유지하기 → Kubelet이 함. 워커 노드에 파드가 배포된다. 파드 안에는 하나 이상의 컨테이너가 존재할 수 있다. 만약 파드 안의 컨테이너 중 하나라도 상태가 좋지 않다면 워커 노드의 ..