전체 글 28

[K8S] 서비스란

1. 서비스 서비스는 포드를 통해 실행되고 있는 애플리케이션을 네트워크에 노출시키는 가상의 컴포넌트이다. 포드는 특성상 생성될 때마다 내부 IP 주소가 계속 변화한다. 쿠버네티스의 서비스(service)는 포드에 탑재된 애플리케이션이 내부, 외부와 통신할 수 있도록 한다. 서비스는 ClusterIP, NodePort, LoadBalancer, ExternalName으로 총 네 가지 타입이 있다. 2. Cluster IP 기본 서비스 타입으로 클러스터 내부에서만 사용 가능하다. 클러스터 외부에서는 이용 할 수 없다. 3. NodePort 클러스터 내부 및 외부에서 접근이 가능하다. 4. LoadBalancer AWS, GCP 등에서 제공하는 로드밸런서 장비를 사용한다. 클라우드 업체에서 제공하는 로드밸런서..

[K8S] 컨테이너 런타임이란

1. 컨테이너 런타임 컨테이너 런타임이란 컨테이너 실행을 위한 컨테이너 엔진을 의미한다. 2. 도커 도커 대표적인 컨테이너 런타임이다. 그러나 도커는 쿠버네티스에서 제공하는 CRI 표준을 따르지 않는다. 이 때문에 쿠버네티스에서는 dockersim 모듈을 통해 도커 엔진과의 직접 통합을 지원했다. 3. 오픈 컨테이너 이니셔티브 CRI 표준을 준수하지 않기 때문에, 쿠버네티스 릴리스 v1.20부터 쿠버네티스 내 도커 런타임 사용이 중지되었다. dockersim 또한 쿠버네티스 릴리스 v1.24부터 쿠버네티스 프로젝트에서 제거되었다. 오픈 컨테이너 이니셔티브는 컨테이너 런타임과 이미지 관련 표준 등을 위해 설립된 Linux Foundation 산하 단체로, 도커를 대체하기 위한 컨테이너 런타임으로 conta..

[K8S] 쿠버네티스 아키텍처란

1. 아키텍처 2. 마스터 노드(컨트롤 플레인) apiserver 쿠버네티스 클러스터의 모든 작업읠 제어하는 RESTful API scheduler 포드를 어떻게 노드에 배치할지 스케줄링 controller-manager 백그라운드에서 클러스터 컨트롤러 확인 및 관리 노드 이상 여부, 레플리카 숫자 유지 여부, 서비스와 포드 연결 여부 등 확인 및 관리 etcd 쿠버네티스 클러스터 모든 정보를 저장하는 데이터 저장소 고가용성을 가진 Key-Value 저장소 구조 3. 워커 노드(데이터 플레인) kubelet 노드에서 실행되는 에이전트로 컨테이너가 포드 내 실행 중인지 확인 다양한 메커니즘을 통해 포드 생성 및 정상 동작 여부를 관리 pod 쿠버네티스가 생성할 수 있는 기본 배포 단위(가장 작은 단위) k..

[K8S] PV, PVC란

1. PV, PVC 쿠버네티스에서 볼륨을 사용하는 구조는 PV와 PVC 2개로 분리되어 있다. PV는 볼륨 자체를 의미한다. 포드와 별개로 관리되고, 별도의 생명 주기가 있다. PVC는 사용자가 PV에 하는 요청이다. 2. PV PV(Persistent Volume)은 클러스터 단위로 관리되는 볼륨을 의미한다. 일반적으로 Administrator에 의해 생성된다. apiVersion: v1 kind: PersistentVolume metadata: name: {PV 명} spec: accessModes: - {ReadOnlyMany, ReadWriteOnce, ReadWriteMany 중 택1} capacity: - storage: {500Mi, 1Gi 형태로 기재} volumeMode: Filesyst..

[K8S] 볼륨이란

1. 볼륨 컨테이너에 문제가 발생하거나 노드에 장애가 발생할 경우, 컨테이너를 자유롭게 옮길 수 있다. 이 때, 어떤 이유로 컨테이너가 실행되지 않다면 컨테이너 내 데이터는 소실된다. 위와 같은 경우, 컨테이너 외부에 볼륨을 위치시켜 데이터 소실을 방지할 수 있다. 볼륨을 사용하면 컨테이너를 재시작해도 데이터를 유지할 수 있다. 퍼시스턴드 볼륨을 사용하면 노드에 관계없이 데이터를 유지할 수 있다. 2. emptyDir emptyDir은 포드 내 볼륨을 할당해서 사용한다. 포드가 삭제되면, 볼륨 또한 삭제된다. apiVersion: v1 kind: Pod metadata: name: {포드 명} spec: containers: - name: {컨테이너 명} image: {이미지 명} volumeMounts..

[K8S] 도커란

1. 도커란 도커는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하여 신속하게 구축, 테스트, 배포 등을 하도록 하는 소프트웨어 플랫폼이다. 도커는 컨테이너를 위한 운영 체제로, 가상 머신이 하드웨어를 가상화 하는 방식과 비슷하게 컨테이너 서버 운영 체제를 가상화한다. 2. 계층화 아키텍처란 도커의 컨테이너는 계층화 아키텍처(Layered Architecture) 구조를 지닌다. 이미지 레이어 생성 (Read Only) FROM Ubuntu # Layer 5 RUN apt-get update && apt-get -y install python # Layer 4 RUN pip install flask # Layer 3 COPY . /opt/source # Layer 2 ENTRYPOINT FLASK_A..