Pod
-
Design Patterns type 사이드카 패턴(Sidecar) 앰배서더 패턴(Ambassador) 어댑터 패턴(Adapter) 사이드카 패턴(Sidecar) 원래 사용하려던 기본 컨테이너의 기능을 확장하거나 강화하는 용도의 컨테이너를 추가하는 것 기본 컨테이너는 원래 목적의 기능에만 충실하도록 구성하고, 나머지 공통 부가 기능들은 사이드카 컨테이너를 추가해서 사용한다. e.g. 웹 서버 컨테이너 - 로그 수집 컨테이너 웹 서버 컨테이너는 웹 서버 역할만 하고 로그는 파일로 남긴다. 그럼 사이드카 역할인 로그 수집 컨테이너는 파일 시스템에 쌓이는 로그를 수집해서 외부의 로그 수집 시스템으로 보낸다. 이렇게 구성하면 웹 서버 컨테이너를 다른 역할을 하는 컨테이너로 변경했을 때도 로그 수집 컨테이너는 그..
[Kubernetes]PODs Design Patterns - POD 구성 패턴Design Patterns type 사이드카 패턴(Sidecar) 앰배서더 패턴(Ambassador) 어댑터 패턴(Adapter) 사이드카 패턴(Sidecar) 원래 사용하려던 기본 컨테이너의 기능을 확장하거나 강화하는 용도의 컨테이너를 추가하는 것 기본 컨테이너는 원래 목적의 기능에만 충실하도록 구성하고, 나머지 공통 부가 기능들은 사이드카 컨테이너를 추가해서 사용한다. e.g. 웹 서버 컨테이너 - 로그 수집 컨테이너 웹 서버 컨테이너는 웹 서버 역할만 하고 로그는 파일로 남긴다. 그럼 사이드카 역할인 로그 수집 컨테이너는 파일 시스템에 쌓이는 로그를 수집해서 외부의 로그 수집 시스템으로 보낸다. 이렇게 구성하면 웹 서버 컨테이너를 다른 역할을 하는 컨테이너로 변경했을 때도 로그 수집 컨테이너는 그..
2022.05.07 -
스태틱 파드 (Static pods) kube-apiserver를 통하지 않고 특정 노드에 있는 kubelet이 직접 실행하는 파드 k8s에서 파드를 실행하려면 kube-apiserver 가 필요한데 kube-apiserver 자체를 처음 실행하는 별도의 수단으로 static pod를 이용한다. kubelet은 각각의 static pod에 대하여 k8s API 서버에서 static pod를 추적하는 미러 파드를 생성하려고 시도하고 이를 통해 구동되는 static pod는 API 서버에서 볼 수 있지만, API 서버에서 제어될 수는 없다. kubelet 설정의 --pod-manifest-path 옵션에 지정한 디렉터리에 static pod로 실행하려는 파드를 넣어두면 kubelet이 그걸 감지해서 파드로 ..
[Kubernetes]Static pods스태틱 파드 (Static pods) kube-apiserver를 통하지 않고 특정 노드에 있는 kubelet이 직접 실행하는 파드 k8s에서 파드를 실행하려면 kube-apiserver 가 필요한데 kube-apiserver 자체를 처음 실행하는 별도의 수단으로 static pod를 이용한다. kubelet은 각각의 static pod에 대하여 k8s API 서버에서 static pod를 추적하는 미러 파드를 생성하려고 시도하고 이를 통해 구동되는 static pod는 API 서버에서 볼 수 있지만, API 서버에서 제어될 수는 없다. kubelet 설정의 --pod-manifest-path 옵션에 지정한 디렉터리에 static pod로 실행하려는 파드를 넣어두면 kubelet이 그걸 감지해서 파드로 ..
2022.05.07 -
초기화 컨테이너 (Init Containers) 앱 컨테이너가 실행되기 전 파드를 초기화한다. 보안상 이유로 앱 컨테이너 이미지와 같이 두면 안 되는 앱의 소스 코드를 별도로 관리할 때 유용하다. 특징 초기화 컨테이너가 여러 개 있다면 파드 템플릿에 명시한 순서대로 초기화 컨테이너가 실행된다. 초기화 컨테이너 실행이 실패하면 성공할 때까지 재시작한다. 즉, 필요한 명령들을 순서대로 실행하는 데 사용된다. 초기화 컨테이너가 모두 실행된 후 앱 컨테이너 실행이 시작 된다. 즉, 초기화 컨테이너가 외부의 특정 조건을 만족할 때까지 대기하고 있다가 조건이 충족된 후 앱 컨테이너를 실행한다. 앱 컨테이너와 비슷하지만, 파드가 모두 준비되기 전에 실행한 후 종료되는 컨테이너이기 때문에 readindessProbe ..
[Kubernetes]Kubernetes Init Containers - 초기화 컨테이너초기화 컨테이너 (Init Containers) 앱 컨테이너가 실행되기 전 파드를 초기화한다. 보안상 이유로 앱 컨테이너 이미지와 같이 두면 안 되는 앱의 소스 코드를 별도로 관리할 때 유용하다. 특징 초기화 컨테이너가 여러 개 있다면 파드 템플릿에 명시한 순서대로 초기화 컨테이너가 실행된다. 초기화 컨테이너 실행이 실패하면 성공할 때까지 재시작한다. 즉, 필요한 명령들을 순서대로 실행하는 데 사용된다. 초기화 컨테이너가 모두 실행된 후 앱 컨테이너 실행이 시작 된다. 즉, 초기화 컨테이너가 외부의 특정 조건을 만족할 때까지 대기하고 있다가 조건이 충족된 후 앱 컨테이너를 실행한다. 앱 컨테이너와 비슷하지만, 파드가 모두 준비되기 전에 실행한 후 종료되는 컨테이너이기 때문에 readindessProbe ..
2022.05.07 -
파드를 생성할때 컨테이너에 필요한 각 리소스 양을 선택적으로 지정할 수 있다. 파드에서 컨테이너에 대한 리소스 요청(request)을 설정하면, kube-scheduler는 이 정보를 사용하여 파드가 배치될 노드를 결정한다. 그리고 kubelet은 컨테이너가 사용할 수 있도록 해당 시스템 리소스의 최소 요청량을 예약한다. 파드에서 컨테이너에 대한 리소스 제한(limit)을 설정하면, kubelet은 실행 중인 컨테이너가 설정한 제한보다 많은 리소스를 사용할 수 없도록 해당 제한을 적용한다. limits 필드 값을 설정하지 않았다면 자원을 모두 사용할 수도 있다. 파드에 CPU와 메모리 자원 할당 최소 자원 요구량(requests) .spec.containers.[].resources.requests.cp..
[Kubernetes]Kubernetes Resource Management for Pods and Containers using requests and limits파드를 생성할때 컨테이너에 필요한 각 리소스 양을 선택적으로 지정할 수 있다. 파드에서 컨테이너에 대한 리소스 요청(request)을 설정하면, kube-scheduler는 이 정보를 사용하여 파드가 배치될 노드를 결정한다. 그리고 kubelet은 컨테이너가 사용할 수 있도록 해당 시스템 리소스의 최소 요청량을 예약한다. 파드에서 컨테이너에 대한 리소스 제한(limit)을 설정하면, kubelet은 실행 중인 컨테이너가 설정한 제한보다 많은 리소스를 사용할 수 없도록 해당 제한을 적용한다. limits 필드 값을 설정하지 않았다면 자원을 모두 사용할 수도 있다. 파드에 CPU와 메모리 자원 할당 최소 자원 요구량(requests) .spec.containers.[].resources.requests.cp..
2022.05.06 -
쿠버네티스는 파드라는 단위로 컨테이너를 묶어서 관리하므로 보통 컨테이너 하나가 아닌 여러 개 컨테이너로 구성된다. 파드 안에는 컨테이너가(1개 이상) 있고 파드 안에 있는 컨테이너들은 IP 하나를 공유한다. 외부에서 파드 안 컨테이너와 통신할 때는 컨테이너마다 다르게 설정한 포트를 사용한다. tip. 불러온 pod 저장하기 kubectl run redis --image=redis --dry-run=client -o yaml > pod_redis.yaml --dry-run=client -o yaml: 명령어를 실행시키지 않고 내용을 yaml 형태로 out한다. 파드 사용하기 pod-sample.yaml apiVersion: v1 kind: Pod metadata: # 파드 이름 설정 name: nginx-..
[Kubernetes]What is Kubernetes Pod쿠버네티스는 파드라는 단위로 컨테이너를 묶어서 관리하므로 보통 컨테이너 하나가 아닌 여러 개 컨테이너로 구성된다. 파드 안에는 컨테이너가(1개 이상) 있고 파드 안에 있는 컨테이너들은 IP 하나를 공유한다. 외부에서 파드 안 컨테이너와 통신할 때는 컨테이너마다 다르게 설정한 포트를 사용한다. tip. 불러온 pod 저장하기 kubectl run redis --image=redis --dry-run=client -o yaml > pod_redis.yaml --dry-run=client -o yaml: 명령어를 실행시키지 않고 내용을 yaml 형태로 out한다. 파드 사용하기 pod-sample.yaml apiVersion: v1 kind: Pod metadata: # 파드 이름 설정 name: nginx-..
2022.05.06 -
쿠버네티스 리소스 쿠버네티스는 유연한 어플리케이션 실행 환경 관리를 소프트웨어로 수행하기 때문에 다양한 것들을 추상화하고 있다. 이렇게 추상화한 것을 쿠버네티스에서는 리소스라고 부른다. 파드(Pod) 쿠버네티스에서는 여러 개의 컨테이너를 모아서 파드로 관리한다. 파드 안에는 어플리케이션 서버용 컨테이너와 프록시 서버용 컨테이너 등과 관련된 것을 모아 관리할 수 있다. 쿠버네티스에서 이 파드가 어플리케이션의 배포 단위가 되며, 포드 단위로 컨테이너의 작성, 시작, 정지, 삭제 등과 같은 조작을 한다. 동일한 파드 안의 컨테이너는 반드시 동일한 노드 상에 동시에 디플로이 된다는 특징이 있다. 파드 안의 여러 컨테이너에서 가상 NIC를 공유하는 구성을 취하기 때문에 컨테이너끼리 localhost를 경유하여 통..
[Kubernetes]쿠버네티스 리소스 - 어플리케이션 (Pod/ReplicaSet/Delpoyment/DaemonSet/StatefulSet)쿠버네티스 리소스 쿠버네티스는 유연한 어플리케이션 실행 환경 관리를 소프트웨어로 수행하기 때문에 다양한 것들을 추상화하고 있다. 이렇게 추상화한 것을 쿠버네티스에서는 리소스라고 부른다. 파드(Pod) 쿠버네티스에서는 여러 개의 컨테이너를 모아서 파드로 관리한다. 파드 안에는 어플리케이션 서버용 컨테이너와 프록시 서버용 컨테이너 등과 관련된 것을 모아 관리할 수 있다. 쿠버네티스에서 이 파드가 어플리케이션의 배포 단위가 되며, 포드 단위로 컨테이너의 작성, 시작, 정지, 삭제 등과 같은 조작을 한다. 동일한 파드 안의 컨테이너는 반드시 동일한 노드 상에 동시에 디플로이 된다는 특징이 있다. 파드 안의 여러 컨테이너에서 가상 NIC를 공유하는 구성을 취하기 때문에 컨테이너끼리 localhost를 경유하여 통..
2022.05.06