쿠버네티스

Deployment (디플로이먼트) Deployment 는 ReplicaSet을 포함하고 있는 상위의 컨트롤러이다. Deployment는 컨트롤러나 파드와 같은 어플리케이션을 배포하고 리소스를 이용하여 컨트롤러와 파드를 제어한다. Deployment 의 하위에 ReplicaSet 이 있고, ReplicaSet은 복제된 Pod들을 관리한다. 주의할 점은 Deployment가 관리하는 ReplicaSet과 복제본 Pod 들이 있는데, ReplicaSet을 직접 제어하지 않고 Deployment 리소스를 통해 관리해야 한다는 점이다. 복제본 수(replicas)를 2로 지정한 Deployment 오브젝트를 생성하면 다음과 같다. Deployment 1개, ReplicaSet 1개, Pod 2개가 생성되었다. ..
Secret ConfigMap 처럼 키 - 값 형태로 저장하는 저장소이다. 그렇지만 ConfigMap과는 사용하는 목적이 다른데, Secret은 소량의 민감한 데이터를 안전하게 저장하기 위한 목적으로 사용한다. 따라서 패스워드, 인증서, 키, 토큰과 같은 정보를 담는데 적합하며, 1MiB 까지 저장할 수 있다. Secret 은 ConfigMap와 동일하게 특수한 볼륨의 한 형태라고 이해할 수 있으며, Pod에 볼륨으로 연결하여 사용할 수 있다. 또한 configMap은 Plain text로 저장되는 반면 secret은 base64 방식으로 인코딩되어 저장된다. Base 64 방식 인코딩과 디코딩을 하는 명령어는 다음과 같다. $ echo "minjee" | base64 bWluamVlCg== $ echo..
ConfigMap은 변수, 설정 파일 등의 내용을 key:value 형태로 저장한다. ConfigMap은 특수한 볼륨의 한 종류에 해당하며, 실제로 Pod를 생성할 때 ConfigMap 볼륨에 연결할 수 있다. Secret 오브젝트와 비교했을 때는 비교적 민감하지 않은 정보들이 저장된다. 1. 명령어로 ConfigMap 생성하기 $ kubectl create configmap CONFIGMAP_NAME --from-file=FILE_NAME $ kubectl create configmap CONFIGMAP_NAME--from-literal=KEY_NAME=VALUE # key 를 새로 지정하고 value를 파일에 있는 값으로 넣어주기 $ kubectl create configmap my-config3 -..
Persistent Volume 과 Persistent Volume Claim PV는 쿠버네티스 클러스터의 외부 공간과 연결하여 저장공간을 제공하는 볼륨이며 pod에 영구적인 저장 방법을 제공한다. Persistent Volume 을 사용하기 위해서는 Pod 과 직접적으로 연결되는 Persistent Volume Claim 이 필요하다. PV와 PVC로 분리한 이유는 클러스터에서 어플리케이션을 배포하고 싶어하는 개발자가 스토리지에 대한 지식이 없어도 쿠버네티스에서 저장공간을 필요한 만큼 가져다 쓸 수 있도록 하기 위해서이다. PV 와 PVC의 life cycle Provisioning : PV가 생성되는 단계이다. PV의 종류에는 정적 프로비저닝과 동적 프로비저닝이 있다. Binding : PVC 를 만..
Ingress 컨트롤러 Ingress 컨트롤러는 NodePort, LoadBalancer 서비스 타입처럼 서비스를 외부에 노출시키는 방법 중 하나이다. NodePort, LoadBalancer와 다른점은, NodePort, LoadBalancer는 Layer 4 (UPT/TCP) 에서 작동하는 반면, Ingress 는 Layer 7 (HTTP/HTTPS) 에서 로드밸런싱을 제공한다는 점이다. Ingress 컨트롤러는 요청이 왔을 때, 어플리케이션이 사용하는 프로토콜(HTTP/HTTPS) , 서버 주소, 어플리케이션이 구체적으로 접근하고자 하는 리소스의 경로를 보고 특정한 어플리케이션에 요청을 전달해주게 된다. Layer 4 이하의 헤더의 정보들만으로는 이러한 트래픽 요청 사항을 처리할 수 없어서 Laye..
쿠버네티스 Volume 쿠버네티스에서 Pod는 이미지로부터 파일 시스템을 제공받아 사용한다. 따라서 Pod가 삭제되면 저장공간도 같이 삭제된다. 이러한 쿠버네티스 컨테이너 상태를, 데이터를 유지하지 않으므로 Stateless 하다고 한다. 따라서 쿠버네티스 클러스터 환경에서는 데이터를 영구적으로 보존하기 위해서 외부 볼륨을 사용할 수 있다. 상황에 따라 간단히 테스트 해보기 위한 간단한 볼륨을 사용할 수 도 있다. 쿠버네티스 볼륨의 종류 emptyDir : 아무 데이터도 없는 빈 디렉토리를 제공한다. 동일한 Pod 내에서 다른 컨테이너들끼리 공유하여 접근할 수 있는 공간이다. hostPath : 각 노드들마다 분리된 저장공간을 제공하는 볼륨이다. gitRepo : 현재는 depreciated 되었다. G..
Replication Controller 쿠버네티스의 컨트롤러는 파드 복제본 (replicas)들의 숫자를 보장해주는 역할을 한다. 레플레케이션 컨트롤러는 이용가능한 상태의 pod을 원하는 수 만큼으로 관리해 주는데, pod가 원하는 수 보다 많은 경우 줄여주고, 원하는 수 보다 적은 경우 자동으로 늘려준다. 레플리케이션 컨트롤러를 구성하는데 필요한 요소는 레이블 셀렉터, 파드 템플릿, 복제본의 수가 있다. 레이블 셀렉터는 key :value 형식으로 설정되며, 생성 및 관리를 할 파드에 대해 지정하는 것이다. 파드 템플릿은 파드를 어떤식으로 구성할 것인지 설정 내용에 대한 것이다. 이 파드 템플릿과 동일하게 복제본들이 만들어 진다. 복제본의 수는 지정해 주지 않으면 디폴트 값이 1 이며, 지정해 주면 ..
YAML 데이터를 표현하기 위한 언어 흔히 서버에서 데이터를 보낼때 사용하는 JSON 처럼 데이터를 표현하는데 사용된다. 쿠버네티스에서는 YAML 과 JSON 둘 다 사용할 수 있는데, 보통 object를 정의하기 위한 Manifestfile을 작성할 때는 YAML로 작성한다. YAML 자료형 문법 1. 스칼라 / 스트링 : 문자열 데이터를 하나로 묶어서 사용할 수 있다. ‘’ , "" 와 같이 따옴표로 묶지 않아도 YAML에서는 문자열로 사용할 수 있다. kubernetes 'kubernetes' hello kubernetes 2. 리스트 / 배열 리스트의 element들을 - 을 앞에 붙여서 표현한다. - apple - banana - cat 3. 해시 / 딕셔너리 key, value 형식으로 데이터..
minjiwoo
'쿠버네티스' 태그의 글 목록