無知

갈 길이 먼 공부 일기

쿠버네티스 20

쿠버네티스 (18) | CRD, 서비스 카탈로그, 오픈시프트, Helm

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 1. 사용자 정의 API 오브젝트 1.1 CustomResourceDefinition 1.2. 사용자 정의 컨트롤러 1.3. 사용자 정의 오브젝트 유효성 검증 1.4. 사용자 정의 API 서버 2. 서비스 카탈로그를 통한 셀프 서비스 2.1. 서비스 카탈로그 소개 2.2 서비스 카탈로그 API 서버 및 컨트롤러 매니저 2.3. ServiceBroker와 OpenServiceBroker API 2.4. 프로비저닝과 서비스 사용 2.5. 바인딩 해제와 프로비저닝 해제 3. 쿠버네티스 기반 플랫폼 3.1. 레드햇 오픈시프트 컨테이너 플랫폼 3...

쿠버네티스 (16) | 스케줄링 심화

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 스케줄링 심화란 파드 스펙 내 노드 셀렉터 지정 방식 외에도 파드가 스케줄링될 위치를 조정하는 추가적인 메커니즘 1. 노드 테인트와 파드 톨러레이션 1.1. 테인트는 기존의 파드를 수정하지 않는다. 노드에 테인트를 추가하면 파드가 특정 노드에 배포되지 않는다. 1.2. 테인트된 노드에 배포할 파드는 테인트된 노드를 사용하게 선택한다. 2. 노드 셀렉터와 노드 어피니티 2.1. 특정 정보를 파드에 추가해 파드가 스케줄링 가능한 노드인지의 여부를 선택한다. 즉, 기존 파드를 수정한다. 2.2. 파드에 배포할 노드를 명시적으로 지정한다. 테인트..

쿠버네티스 (15) | 오토스케일링

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 핵심 내용 - CPU 사용률 기반 파드 자동 수평 스케일링 - 사용자 정의 메트릭 기반 파드 자동 수평 스케일링 - 파드 수직 스케일링의 어려움 - 클러스터 노드 자동 수평 스케일링 수평적 파드 오토스케일링 컨트롤러를 통한 파드 레플리카 수의 자동 조정이 이루어진다. 1. Horizontal 컨트롤러가 HorizontalPodAutoScaler, HPA 리소스를 작성해 활성화시키고 스케일링을 설정한다. 2. 컨트롤러는 주기적으로 파드 메트릭을 확인한다. [따라서 즉각적으로 이뤄지지는 않는다] 3. 컨트롤러는 HPA 리소스에 설정된 대상 메..

DevOps (2) | ALB, NLB, AWS Load Balancer Controller

배경 service.beta.kubernetes.io/aws-load-balancer-type 등, NLB를 활용한 인프라를 운용 중에, helm 차트 상의 컨트롤러 관련 어노테이션에 오류가 확인되어, 이와 관련된 구체적인 스펙을 확인해보는 리서치를 진행해 정리한다. 리서치 내용 1. ALB VS NLB NLB ) L4에서 네트워크 트래픽을 로드 밸런싱하려면 LoadBalancer 유형의 Kubernetes service를 배포합니다. 이 유형은 AWS Network Load Balancer를 프로비저닝합니다. https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/network-load-balancing.html NLB는 비교적 설정이 적고 따라서 설정해줄 수..

쿠버네티스 (12) | API 서버 보안

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 인증 개념 정리 API 서버는 인증 - 인가 단계를 거치는 과정에서 인증 플러그인이 구성 상 포함됨을 이야기한 바 있다. 아래의 순서 및 과정으로 인증 작업이 진행됨을 참고하자. API 서버가 요청을 받음 인증 플러그인이 요청인 정보를 추출해 검사 요청인 정보, 클라이언트 아이덴티티란 사용자 이름, 사용자 ID, 클라이언트 소속 그룹을 의미. 클라이언트 아이덴티티 습득 방법은 : 클라이언트 인증서 / HTTP 헤더를 통해 전달된 인증 토큰 / 기본 HTTP 인증 등 인증 플러그인이 API 서버 코어에 반환 -> 사용자가 작업 수행 권한이 ..

쿠버네티스 (11) | 쿠버네티스 내부 이해

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 아키텍처 개괄 쿠버네티스 컨트롤 플레인 : 클러스터 기능의 제어, 클러스터 상태의 저장 및 관리. etcd 분산 저장 스토리지 : API 서버의 실패 여부와 무관히 안정성을 유지하기 위해, 매니페스트를 영구적으로 저장하는 목적으로, 분산된 키-값 저장소 역할의 etcd를 사용. 현재 기준 v3는 키를 계층적 키 공간에 저장해 키-값 쌍을 만들지만, v2와 달리 디렉터리를 지원하지 않음. 모든 데이터는 /registry에 저장되므로 키 목록을 확인 가능. 고가용성을 위해 2개 이상의 etcd 인스턴스를 실행. RAFT 합의 알고리즘으로 대다..

쿠버네티스 (10) | 스테이트풀셋

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 핵심 내용 복제된 파드에 개별 스토리지 제공 파드에 안정적인 아이덴티티 제공 스테이트풀셋을 위한 헤드리스 거버닝 서비스 생성 스테이프풀셋 스케일링 및 업데이트 DNS를 통한 스테이트풀셋 피어 디스커버리 호스트 이름을 통한 다른 멤버 연결 스테이트풀 파드 강제 삭제 스테이트풀 파드 복제하기 (스테이트풀셋의 필요성) 인스턴스마다 개별적인 스토리지 제공하기 레플리카셋을 통해 파드 템플릿으로 여러 파드 레플리카를 생성하는 경우, 각 레플리카가 별도의 퍼시스턴트 볼륨 클레임을 사용하도록 만들 수 없다. 각 인스턴스 별로 각각의 스토리지를 갖도록 하..

쿠버네티스 (9) | 디플로이먼트

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 파드를 최신 버전으로 교체하고 업데이트하기 파드를 선언적으로 업데이트하기 롤링 업데이트 기능 배워보기 잘못된 버전 롤아웃 방지하기 롤아웃 속도를 제어하기 이전 버전으로 파드 롤백시키기 애플리케이션 변경 시 업데이트하는 방법과, 무중단 업데이트 프로세스의 작동 방식에 대해 공부해보자. 쿠버네티스는 레플리카셋 기능을 활용하는 디플로이먼트 리소스를 통해 선언적으로 업데이트를 진행한다. 실행 중인 애플리케이션 업데이트 파드가 v1 태그 이미지를 기반으로 애플리케이션 버전1을 실행 중이라고 할 때, 최신 이미지인 v2 이미지가 개발되어 이미지 저장..

쿠버네티스 (8) | 파드 메타데이터

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 주요 내용은 아래와 같다 특정 파드와 컨테이너 메타데이터를 컨테이너로 전달하는 방법 컨테이너 내에서 실행 중인 애플리케이션이 쿠버네티스 API 서버와 통신해 클러스터 리소스 정보 얻기 컨테이너에 정보를 전달하기 위한 Downward API 쿠버네티스 REST API 인증과 서버 검증을 kubectl proxy에 맡기기 앰배서더 컨테이너 패턴 쿠버네티스 클라이언트 라이브러리 Downward API 파드의 IP, 호스트 노드 이름, 파드 자체 이름 등 실행 시점까지 알려지지 않은 데이터, 파드 레이블, 어노테이션 등 이미 설정된 데이터 등 일..

쿠버네티스 (7) | 컨피그맵, 시크릿

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 애플리케이션은, 빌드된 애플리케이션 자체에 포함해서는 안되지만 필요한 설정 데이터들이 있다. 배포된 인스턴스별로 다른 설정들도 있고, 외부 시스템에 접근하기 위해 필요한 자격증명 관련 데이터도 있다. 이런 설정 옵션을 전달하는 방식에 대해 공부해 볼 예정이다. 컨테이너화된 애플리케이션 설정 일반적인 컨테이너화 애플리케이션은 다음과 같이 설정 옵션을 넘겨줄 수 있다. 명령줄 인수로 애플리케이션 설정 넘겨주기 환경변수 사용하기 볼륨을 통한 마운트 상대적으로 환경 변수의 사용이 더 보편적인데, 그 이유는 도커 컨테이너 내부 설정 파일을 사용하기..

쿠버네티스 (6) | 볼륨, 퍼시스턴트 스토리지

핵심 내용 다중 컨테이너 파드 생성 컨테이너 간 디스크 스토리지 공유용 볼륨 생성 파드 내부 깃 리포지터리 사용 파드 내 GCE 퍼시스턴트 디스크 등 퍼시스턴트 스토리지 연결 사전 프로비저닝된 퍼시스턴트 스토리지 퍼시스턴트 스토리지의 동적 프로비저닝 볼륨 소개 파드는 내부에 프로세스를 실행하고, 여러 리소스를 공유하는 논리적 호스트이지만, 디스크를 공유하지 못한다. 파드 내 각 컨테이너는 컨테이너 이미지에서 제공하는, 고유하게 분리된 파일시스템을 가진다. 새로운 컨테이너가 시작할 때 이미지 빌드 시 추가해둔 파일을 갖고 시작하기 때문에, 재시작시마다 파일시스템이 이미지대로 초기화된다. 즉, 이전에 종료된 컨테이너의 데이터를 가진 디렉터리를 보존하기 위해서는, 쿠버네티스 내에서 스토리지 볼륨을 정의해야 한..

쿠버네티스 (5) | 서비스

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 서비스, 파드의 검색과 통신을 위한 요소 파드가 다른 파드에게 제공하는 서비스를 사용하기 위해서는, 다른 파드를 검색하고 인식할 수 있어야 한다. 쿠버네티스가 나오기 전에는 사용자가 서비스 제공 서버의 주소와 호스트 이름을 지정해 구성해줬지만, 쿠버네티스에는 해당하지 않는다. 서비스를 제공하는 파드 자체가 일시적이라는 특성이 있고, 파드는 시작 직전에 IP 주소를 받기 때문에 미리 주소를 알아 구성해줄 수 없기 때문이다. 나아가, 수평적인 스케일링을 제공하려면, 여러 파드가 동일 서비스를 제공해야 하므로, 여러 병렬적인 파드의 수와 무관하..