본문 바로가기

About/Kubernetes

(37)
[k8s] Volume - (emptyDir, hostPath, PV/PVC) Volume Docker에서도 Volume의 개념은 존재한다. Docker의 Volume은 디스크에 있는 디렉터리이거나 다른 컨테이너에 있다. Volume 드라이버를 제공하지만, 기능이 다소 제한된다. 쿠버네티스에서는 다양한 유형의 Volume을 지원한다. 파드는 여러 볼륨 유형을 동시에 사용할 수 있다. 기본적으로 Volume은 디렉토리이며, 일부 데이터가 있을 수 있고, 파드 내 컨테이너에서 접근할 수 있다. 디렉토리의 생성 방식, 이를 지원하는 매체와 내용은 사용된 특정 볼륨의 유형에 따라 결정된다. emptyDir emptyDir Volume은 파드가 노드에 할당될 때 처음 생성되며, 해당 노드에서 파드가 실행되는 동안에만 존재한다. 이름에서 알 수 있듯이 emptyDir 볼륨은 처음에는 비어있다..
[k8s] 매니페스트 파일 작성 방법 매니페스트 파일 쿠버네티스에서는 클러스터 안에서 움직이는 컨테이너 애플리케이션이나 네트워크 설정, 배치 실행을 하는 잡 등과 같은 리소스를 작성합니다. 이와 같은 구체적인 설정 정보를 파일로 관리하는데, 이것이 매니페스트 파일(manifest file)입니다. 예를 들어 'Nginx가 움직이는 컨테이너 이미지를 바탕으로 한 웹 프론트 서버를 클러스터 안에서 10개 실행' 하는 경우 다음과 같이 매니페스트 파일을 작성합니다. #webserver.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: webserver spec: replicas: 10 selector: matchLabels: app: webfront template: metadata: labe..
[k8s] 애플리케이션 설정 정보 관리(ConfigMap/Secrets) 쿠버네티스를 사용하면 컨테이너 애플리케이션이 클러스터 안의 어디에서 움직이고 있는지를 의식할 필요가 없어집니다. 그런데 애플리케이션이 공통으로 이용하는 환경변수 등을 컨테이너 안에 넣어버리면 환경이 바뀔 때 마다 이미지를 만들어야 하므로 번거롭습니다. 쿠버네티스에서는 이런 애플리케이션 정보를 일원 관리하는 장치가 있습니다. 컨피그맵(ConfigMap) 컨피그맵은 애플리케이션의 설정 정보, 구성 파일, 명령 인수, 포트 번호, 애플리케이션 고유의 식별 정보 등을 포드에서 참조할 수 있도록 해 주는 장치입니다. Key-Value 형으로 정보를 관리할 수 있습니다. 예를 들어 Nignx의 설정 파일 등 각 컨테이너에서 공통으로 만들고 싶은 것을 등록하여 일원 관리합니다. 컨피그맵의 정보는 볼륨으로서 마운트할 ..
[k8s] Service - (ClusterIP, NodePort, LoadBalancer) 쿠버네티스 클러스터 안에서 실행된 Pod 대해 액세스할 때는 서비스(Service)를 정의합니다. 서비스는 쿠버네티스의 네트워크를 관리하는 것으로, 몇 가지 종류가 있습니다. Cluster IP 서비스에 의해 할당되는 IP 주소에는 Cluster IP와 External IP가 있습니다. Cluster IP는 클러스터 안의 Pod끼리 통신하기 위한 Private IP이며 External IP는 클러스터 외부에 공개하는 IP 주소입니다. 클러스터 내부에서만 접근할 수 있으며, 외부에서 접근이 불가능하므로 Port Forwarding이나 Proxy를 통해 접근해야합니다.또한 서비스 타입을 별도로 지정하지 않으면 ClusterIP가 Default로 설정됩니다. CluterIP 예시 apiVersion: v1 k..
[k8s] Pod의 특징 (Container, Label, NodeSelector) 1. Container 쿠버네티스에서는 하나의 독립적인 서비스를 제공할 수 있는 컨테이너들을 모아서 Pod로 관리합니다. 예를 들어 Pod안에는 애플리케이션 서버용 도커 컨테이너와 프록시 서버용 컨테이너 등과 관련된 것들을 모아서 관리할 수 있습니다. 쿠버네티스에서는 이 Pod가 애플리케이션의 디플로이 단위가 되며, 포드 단위로 컨테이너의 작성, 시작, 정지, 삭제 등과 같은 조작을 합니다. 특징으로는 다음과 같은 내용들이 있습니다. 동일한 Pod의 컨테이너는 반드시 동일한 노드 상에 동시에 디플로이 된다. 컨테이너는 서비스가 연결될 수 있도록 Port를 가지고 있는데, 같은 Pod안에서 Port는 중복될 수 없습니다. Pod안의 여러 컨테이너에서 가상 NIC(Private IP)를 공유하는 구성을 취하..
[k8s] 쿠버네티스의 서버 구성(마스터와 노드) 쿠버네티스에서 스케줄링과 디스커버리를 사람이 하는 것이 아니라 쿠버네티스의 기능이 모두 수행합니다. 이를 실현하기 위해 클러스터의 서버 상에서 여러 개의 API가 연계되어 움직이고 있습니다. 따라서 먼저 쿠버네티스가 어떤 서버 구성으로 되어 있는 지를 이해할 필요가 있습니다. 스케줄링과 서비스 디스커버리 개념 [k8s] 스케쥴링과 서비스 디스커버리란 기존의 웹 3계층 시스템에서 프론트 서버, 업무 서버, DB 서버 등 기능별로 다른 서버에서 처리를 하는 것이 일반적이었습니다. 때문에 애플리케이션을 어디에 배치할지를 미리 정해 두고 거기 kimjingo.tistory.com 마스터(Master) 쿠버네티스의 클러스터 전체를 관리하는 역할을 담당합니다. 여러 대로 이루어진 클러스터 안의 노드의 리소스 사용 ..
[k8s] 스케쥴링과 서비스 디스커버리 기존의 웹 3계층 시스템에서 프론트 서버, 업무 서버, DB 서버 등 기능별로 다른 서버에서 처리를 하는 것이 일반적이었습니다. 때문에 애플리케이션을 어디에 배치할지를 미리 정해 두고 거기에 플로이하여 각 기능을 상호 호출하는 아키텍처로 되어있었습니다. 따라서 애플리케이션 개발자와 인프라 관리자는 둘 다 '어디에서 어떤 애플리케이션이 움직이는지'를 알고 있었습니다. 하지만 쿠버네티스에서는 애플리케이션이 디플로이되는 위치가 쿠버네티스에 의해 정해집니다. 한 애플리케이션이 디플로이되면 쿠버네티스가 클러스터 상태에서 비어 있는 위치를 찾아내서 자동으로 배치합니다. 즉 지금까지 사람이 해 왔떤 작업을 쿠버네티스가 해 준다는 것입니다. 그래서 '애플리케이션을 적절한 곳에 디플로이 하고', '디플로이된 애플리케이션..