Cloud-native/Kubernetes (65) 썸네일형 리스트형 [Kubernetes]What is Kubernetes ReplicaSet(레플리카세트) 레플리카세트의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. 집합 기반의 셀럭터를 지원한다. 집합 기반의 셀럭터는 in, notin, exists 같은 연산자를 지원한다. 권장 디플로이먼트는 레플리카세트를 관리하고 다른 유용한 기능과 함께 파드에 대한 선언적 업데이트를 제공하는 상위 개념이므로 업데이트가 전혀 필요하지 않거나 custom 오케스트레이션이 필요 없는 경우가 아니면 레플리카세트를 직접 사용하기 보다는 디플로이먼트를 사용하는 것을 권장한다. Example - ReplicaSet replicaset-nginx.yaml apiVersion: apps/v1 kind: ReplicaSet me.. [Kubernetes]PODs Design Patterns - POD 구성 패턴 Design Patterns type 사이드카 패턴(Sidecar) 앰배서더 패턴(Ambassador) 어댑터 패턴(Adapter) 사이드카 패턴(Sidecar) 원래 사용하려던 기본 컨테이너의 기능을 확장하거나 강화하는 용도의 컨테이너를 추가하는 것 기본 컨테이너는 원래 목적의 기능에만 충실하도록 구성하고, 나머지 공통 부가 기능들은 사이드카 컨테이너를 추가해서 사용한다. e.g. 웹 서버 컨테이너 - 로그 수집 컨테이너 웹 서버 컨테이너는 웹 서버 역할만 하고 로그는 파일로 남긴다. 그럼 사이드카 역할인 로그 수집 컨테이너는 파일 시스템에 쌓이는 로그를 수집해서 외부의 로그 수집 시스템으로 보낸다. 이렇게 구성하면 웹 서버 컨테이너를 다른 역할을 하는 컨테이너로 변경했을 때도 로그 수집 컨테이너는 그.. [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이 그걸 감지해서 파드로 .. [Kubernetes]Kubernetes Init Containers - 초기화 컨테이너 초기화 컨테이너 (Init Containers) 앱 컨테이너가 실행되기 전 파드를 초기화한다. 보안상 이유로 앱 컨테이너 이미지와 같이 두면 안 되는 앱의 소스 코드를 별도로 관리할 때 유용하다. 특징 초기화 컨테이너가 여러 개 있다면 파드 템플릿에 명시한 순서대로 초기화 컨테이너가 실행된다. 초기화 컨테이너 실행이 실패하면 성공할 때까지 재시작한다. 즉, 필요한 명령들을 순서대로 실행하는 데 사용된다. 초기화 컨테이너가 모두 실행된 후 앱 컨테이너 실행이 시작 된다. 즉, 초기화 컨테이너가 외부의 특정 조건을 만족할 때까지 대기하고 있다가 조건이 충족된 후 앱 컨테이너를 실행한다. 앱 컨테이너와 비슷하지만, 파드가 모두 준비되기 전에 실행한 후 종료되는 컨테이너이기 때문에 readindessProbe .. [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.. [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-.. [Kubernetes]What is Namespace in Kubernetes - 쿠버네티스 리소스 분리 쿠버네티스에는 리소스를 모아서 가상적으로 분리하는 네임스페이스 라는 기능이 있다. 이를 사용하면 하나의 쿠버네티스 클러스터를 여러 프로젝트에서 이용할 수 있다. 여러 리소스를 모아서 넣는 폴더와 같은 것이라고 이해하면 된다. 이 네임스페이스는 롤베이스로 권한을 설정할 수 있다. 네임스페이스별로 필요한 액세스 권한을 설정하여 이용할 수 있는 사용자를 제한하면 보안성을 높일 수 있다. 쿠버네티스에서 동일한 네임스페이스 안에서는 리소스명을 고유하게 해야 한다. Namespace 사용법 네임스페이스의 사용법을 살펴보자. 클러스터 안의 네임스페이스 목록을 확인 kubectl get namespace NAME STATUS AGE default Active 6d19h kube-node-lease Active 6d19.. [Kubernetes]How to label Kubernetes pods 라벨(Label) 개발이 진행되면 쿠버네티스 클러스터 안에는 파드가 많이 생성된다. 이것들을 클러스터에서 관리할 때 동일한 그룹으로 모아서 조작할 수 있다면 편리할 것이다. 하지만 폴더와 같은 계층 구조로 만들어 버리면, 결제 처리를 하는 백엔드 처리에서 스테이징 환경과 같이 여러 속성을 갖고 있는 경우등을 관리해야 하기 때문에 운용이 복잡해진다. 그래서 나온 개념이 라벨 이다. 파드에 라벨 설정 라벨은 Key-Value 형으로 설정한다. Key와 Value 둘다 문자열로 지정한다. Key 명은 필수이며, 63자 이내로 지정. 맨 앞과 맨 뒤는 반드시 알파벳이나 숫자로 지정한다. 그 외에는 '-', '_', '.' 도 사용할 수 있다. Key 에는 슬래시로 구분한 prefix도 지정할 수 있다. pref.. 이전 1 ··· 3 4 5 6 7 8 9 다음