無知

갈 길이 먼 공부 일기

기술 공부/쿠버네티스 24

쿠버네티스 (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...

쿠버네티스 (17) | 모범 사례 탐구

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 실제 애플리케이션 구성 개발자의 애플리케이션 메니페스트 디플로이먼트 파드 템플릿 컨테이너 정의 : 라이브니스 프로브, 레디니스 프로브 / 환경변수 설정 / 마운트할 볼륨 명세 / 리소스 요청량 제한량 지정 레이블과 어노테이션으로 추가 메타데이터 제공 가능 클러스터 관리자가 생성한 시크릿을 imagePullSecret으로 프라이빗 레지스트리에서 이미지 참조 볼륨 : 환경변수 초기화나 컨피그맵 볼륨으로 마운트되는 컨피그맵이 존재 퍼시스턴트볼륨 클레임을 작성 (관리자 생성 스토리지클래스 참조 가능) 오토스케일링 : 디플로이먼트를 바라보는 수평 ..

쿠버네티스 (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 리소스에 설정된 대상 메..

쿠버네티스 (14) | 파드 컴퓨팅 리소스

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 14장 핵심 내용 컨테이너의 CPU, 메모리 및 컴퓨팅 리소스 요청 CPU, 메모리 제한 설정 파드 서비스 품질 보장 네임스페이스에서 파드의 기본 / 최소 / 최대 리소스 설정 네임스페이스에서 사용 가능한 리소스 총량 제한 파드 컨테이너의 리소스 요청 리소스 요청을 갖는 파드 생성 컨테이너의 CPU, 메모리 필요량(requests), 제한량(limits)을 지정. 컨테이너 개별 지정량으로 파드 전체에 지정되지 않음. 파드 리소스 요청량/필요량과 제한량은 전체 컨테이너의 합계. CPU 요청의 지정 = 컨테이너의 프로세스에 할당되는 CPU 시..

쿠버네티스 (13) | 클러스터 노드와 네트워크 보안

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 핵심 내용 파드가 노드의 리소스에 액세스하는 방법 파드에서 사용자가 원하는 작업을 마음대로 수행하지 못하도록 클러스터를 구성하는 방법 파드 통신 시 네트워크를 보호하는 방법 파드에서 호스트 노드의 네임스페이스 사용 파드의 네임스페이스 파드의 컨테이너는 개별 리눅스 네임스페이스에서 실행되어 다른 노드, 다른 컨테이너와 프로세스가 격리된다. 고유한 네트워크 네임스페이스를 사용하므로 고유 IP와 포트 공간을 얻는다. 고유한 PID 네임스페이스를 사용해, 동일 파드 내 프로세스 간 통신 메커니즘, IPC로 통신한다 파드에서 노드의 네트워크 네임스..

쿠버네티스 (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 애플리케이션은, 빌드된 애플리케이션 자체에 포함해서는 안되지만 필요한 설정 데이터들이 있다. 배포된 인스턴스별로 다른 설정들도 있고, 외부 시스템에 접근하기 위해 필요한 자격증명 관련 데이터도 있다. 이런 설정 옵션을 전달하는 방식에 대해 공부해 볼 예정이다. 컨테이너화된 애플리케이션 설정 일반적인 컨테이너화 애플리케이션은 다음과 같이 설정 옵션을 넘겨줄 수 있다. 명령줄 인수로 애플리케이션 설정 넘겨주기 환경변수 사용하기 볼륨을 통한 마운트 상대적으로 환경 변수의 사용이 더 보편적인데, 그 이유는 도커 컨테이너 내부 설정 파일을 사용하기..