목록Kubernetes (16)
하마롱크의 블로그
쿠버네티스 파드 내에서 돌아가는 컨테이너는 고유한 파일 시스템을 가지고 있다. 그러나 컨테이너 내의 디스크에 있는 파일은 임시적이며, 컨터에너가 크래시될 때 파일이 손상된다는 문제가 있다. 그리고 포드 내에서 같이 실행되는 컨테이너 간에 파일을 공유할 필요가 있을 때 문제가 생긴다. 쿠버네티스는 실제 데이터가 있는 디렉토리를 보존하기 위해 저장소 볼륨을 정의한다. 포드에 바인딩 되는 볼륨을 마운트하고 이를 로컬 파일시스템에 있는 것처럼 스토리지에 접근한다. 쿠버네티스에서 사용하가능한 볼륨 타입은 다양하다. emtpyDir emptyDir은 포드가 생성될때 생성되고, 포드가 삭제 될 때 같이 삭제되는 임시 볼륨이다. 그리고 emptyDir 볼륨은 이름 그대로 빈 디렉터리로 초기화되는 볼륨이다. 포드 내 모..
쿠버네티스의 서비스 배포 전략은 크게 중단 배포와 무중단 배포로 나눌 수 있다. 중단 배포방식은 트래픽이 없는 상황에서 업데이트가 진행되므로, 기존의 서버를 모두 종류한 후 새로운 서버를 배포하는 방식인 Recreate 전략이 가능하다. 하지만 이 방법은 사용자의 경험 측면에서 보면 좋지 않다. 그러므로 기존 서버와 새로운 서버 간의 공존할 수 없는 상황에서만 제한적으로 사용된다. 무중단 배포 방식은 말 그대로 서비스의 중단 없이 새로운 서버로 없데이트 하는 방식이다. 무중단 배포 방식에는 대표적으로 Rolling Update, Blue-Green, Canary 전략이 있다. Rolling Update 가장 많이 사용되는 배포 방식 중의 하나로, 새 버전을 배포하면서, 새 버전 인스턴스를 하나씩 늘려나가..
서비스가 안정적으로 제공되기 위해서는 Pod 내의 애플리케이션이 원활하게 동작할 수 있는 충분한 자원이 확보되어야 한다. 만약 특정 Pod나 컨테이너가 리소스를 독점한다면 다른 Pod에서 서비스를 제공하는 데에 문제가 발생할 수 있다. 그러므로 각 Pod의 리소스를 제한하고 관리하는 것이 필요하다. ResourseQuota Resource Quota는 네임스페이스별로 리소스 사용과 생성을 제한한다. 쿠버네티스에는 기본적으로 Resource Quota 지원이 활성화되어 있어, computing resource, storage resource, object count 등 다양한 타입을 통해 Resource Quota를 설정할 수 있다. 다음은 Compute Resource Quota의 예시이다. test 네..

쿠버네티스의 Ingress는 쿠버네티스 클러스터 외부에서 클러스터 내부로 들어오는 Ingress 트레픽을 어떻게 처리할 지에 대해 정의한다. Ingress는 클러스터 내에서 실행중인 Service에 접근하기 위한 Gateway 역할을 한다고도 볼 수 있다. 또한 쿠버네티스의 Ingress는 Layer 7에서의 요청을 처리할 수 있으며, 이로 인해 로드밸런싱, 인증서 처리, 특정 HTTP 경로의 라우팅 등이 가능하다. Ingress Controller 쿠버네티스에서 Ingress를 사용하기 위해서는 Ingress 오브젝트와 Ingress 규칙이 적용되는 Ingress Controller가 필요하다. Ingress Controller를 직접 운영할 수도 있지만, 현재 쿠버네티스에서는 공식적으로 Ingress..
쿠버네티스에서는 서비스를 안정적으로 운영하기 위해 셀프힐링 기능을 지원한다. 이 기능에는 Liveness Probe와 Readiness Probe가 있다. Liveness Probe를 통해서는 이름 그대로 컨테이너가 잘 살아있는지를 진단한다. Readiness Probe를 통해서는 이름 그대로 서비스가 가능한 준비된 상태인지를 진단한다. Probe 타입 컨테이너를 진단하과 확인하는 방법으로는 3가지가 있다. Http Get probe 가장 많이 사용하는 방식으로, 지정된 IP, port, path에 HTTP GET 요청을 보내 해당 컨테이너가 제대로 응답하는지를 확인한다. HTTP 응답코드가 200이면 정상으로 판단하고, 그 이외의 값인 경우에는 비정상으로 판단하여 컨테이너를 다시 시작한다. livene..

쿠버네티스 서비스는 동적으로 변하는 IP를 가지는 Pod들에 고정된 방법으로 접근하고, 동일한 서비스를 제공하는 Pod 그룹에 접근하는 단일 진입점을 생성하는 리소스이다. 각 서비스에는 서비스가 존재하는 동안 변하지 않는 IP와 port가 있다. 클라이언트는 해당 IP:port에 연결할 수 있고, 이 연결은 서비스를 제공하는 Pod 중 하나로 라우팅된다. 서비스 타입 ClusterIP 동일한 서비스를 지원하는 Pod는 하나 이상 존재할 수 있다. 이때 ClusterIP를 통해 백엔드의 동일한 서비스를 제공하는 Pod들로 로드밸런싱이 가능하다. Selector의 Label이 동일한 Pod를 그룹으로 묶고, 같은 서비스를 제공하는 Pod 그룹에 단일 진입점(Virtual IP)을 제공한다. 동일한 그룹으로 ..