목록Kubernetes (8)
공대생 정리노트
참고자료 쿠버네티스 인 액션 구성 요소가 서로 통신하는 방법 쿠버네티스 시스템 구성 요소는 오직 API 서버하고만 통신한다. API 서버는 etcd와 통신하는 유일한 구성 요소. 다른 구성 요소는 API 서버를 통해 클러스터 상태를 변경한다. 쿠버네티스가 etcd를 사용하는 방법 모든 오브젝트는 API 서버가 다시 시작되거나 실패하더라도 유지하기 위해 매니페스트가 영구적으로 저장될 필요가 있다. 이룰 위해 쿠버네티스는 빠르고, 분산해서 저장되며, 일관된 key-value 저장소를 제공하는 etcd를 사용한다. 분산돼 있기 때문에 etcd 인스턴스를 실행해 고가용성과 우수한 성능을 제공할 수 있다. 구성 요소들이 API 서버를 통해 간접적으로 데이터를 읽고 쓰면서 동시성 제어와 유효성 검사 등에 이점을 얻..
참고자료 sktelecom-oslab.github.io/Virtualization-Software-Lab/Helm/ Helm : The Kubernetes Package Manager 공지: 블로그가 다음 주소로 이전되었습니다. https://openinfradev.github.io/ sktelecom-oslab.github.io helm.sh/ko/docs/topics/architecture/ 헬름 아키텍처 헬름 아키텍처를 개괄적으로 설명한다. helm.sh lsjsj92.tistory.com/582 kubernetes helm 이란? - helm 사용법(kubernetes 배포/관리하기) 포스팅 개요 이번 포스팅은 kubernetes(쿠버네티스)의 package managing인 helm에 대해서 알..
9.1 파드에서 실행 중인 애플리케이션 업데이트 모든 파드를 업데이트하는 방법에는 두 가지가 있다. 1. 기존 파드를 모두 삭제한 후, 새 파드 시작 2. 새로운 파드를 삭제하고, 가동하면 기존 파드 삭제 2번 방법의 경우 새 파드를 모두 추가하고 한꺼번에 기존 파드를 삭제하거나 순차적으로 새 파드를 추가하고 기존 파드를 점진적으로 제거하는 등으로 작업을 수행할 수 있다 1번 방법 : 짧은 시간 동안 애플리케이션 사용이 불가 2번 방법 : 애플리케이션이 동시에 두 가지 버전을 실행해야 하기에, 데이터 저장소에 데이터를 저장하는 경우 새 버전이 이전 버전을 손상시킬 수 있는 데이터 스키마나 데이터의 수정을 해서는 안된다 9.2 레플리케이션컨트롤러로 자동 롤링 업데이트 수행 롤링 업데이트 : 파드를 단계별로..
인프라스트럭처의 세부 사항을 처리하지 않고 애플리케이션이 쿠버네티스 클러스터에 스토리지를 요청할 수 있도록 하기 위해 도입된 리소스 - PersistentVolume, PersistentVolumeClaim PersistentVolume과 PersistentVolumeClaim 개발자가 파드에 기술적인 세부 사항을 기재한 볼륨 추가를 하지 않는다. 1. 쿠러스터 관리자가 기반 스토리지를 설정하고 쿠버네티스 API 서버로 퍼시스턴트볼륨 리소스를 생성해 쿠버네티스에 등록 2. 퍼시스턴트볼륨이 생성되면 관리자는 크기와 지원 가능한 접근 모드 지정 3. 클러스터 사용자가 persistent storage 사용해야할 때 최소 크기와 필요 접근모드 명시한 퍼시스턴트볼륨클레임 manifest생성. 4. 사용자는 퍼시..
스토리지 볼륨은 파드와 같은 최상위 리소스는 아니지만 파드와 동일한 라이프 사이클을 가진다. 따라서 컨테이너를 다시 사작하더라도 볼륨의 컨텐츠는 지속된다. 볼륨 소개 볼륨은 파드 구성 요소로 파드 스펙에서 정의된다. 쿠버네티스 오브젝트가 아니므로 자체적으로 생성, 삭제 될 수 없고 파드의 모든 컨테이너에서 사용 가능하지만 접근하려는 컨테이너에서 각각 마운트가 되야 한다. 볼륨의 유형으로는 emptyDir, gitRepo, hostPath 등이 있다. emptyDir 볼륨 볼륨이 빈 디렉터리로 시작한다. 동일 파드에서 실행 중인 컨테이너 간 파일을 공유할 때 유용하다. apiVersion: v1 kind: Pod metadata: name: fortune spec: containers: - image: l..
서비스 사용 이유 파드는 일시적이다 노드에 파드를 스케줄링 할 때 파드가 시작하기 직전에 파드의 IP 주소 할당 수평 스케일링은 여러 파드가 동일한 서비스를 제공함. 각 파드는 고유한 IP 주소가 있지만 클라이언트는 그것에 상관이 없어야 하므로 단일 IP 주소로 액세스 할 수 있어야 한다 서비스 생성 apiVersion: v1 kind: Service metadata: name: kubia spec: ports: - port: 80 # port used by service targetPort: 8080 # container port to be forwarded by service selector: app: kubia app=kubia 레이블에 있는 pod가 서비스에 포함된다. 포트 80 연결을 허용하고 ..
파드를 안정적으로 유지하기 위한 방법 1. 라이브니스 프로브(liveness probe) 파드의 specification에 각 컨테이너의 liveness porbe를 지정할 수 있다. 쿠버네티스는 주기적으로 프로브를 실행하고 프로브가 실패할 경우 컨테이너를 다시 시작한다. 쿠버네티스가 프로브를 실행하는 방식은 3가지이다. HTTP GET 프로브. 지정한 IP 주소, 포트, 경로에 HTTP GET 요청을 수행한다. 응답을 수신해 실패했다고 판단하면 컨테이너를 다시 시작한다. TCP 소켓 프로브. 컨테이너의 지정된 포트에 TCP 연결을 시도한다. 연결에 실패하면 컨테이너가 다시 시작된다. Exec 프로브는 컨테이너 내의 임의의 명령을 실행하고 명령의 종료 상태 코드 확인. 컨테이너에 크래시가 발생하거나 li..
쿠버네티스 인 액션을 읽고 공부한 것 요약 파드 소개 쿠버네티스는 컨테이너를 개별적으로 배포하기 보다는 컨테이너를 가진 파드를 배포하고 운영. 컨테이너는 단일 프로세스를 실행하는 것으로 목적으로 설계. Ex) 개별 프로세스가 실패하는 경우 자동으로 재시작하는 매커니즘 포함해야 한다. 그래서 컨테이너를 함께 묶고 하나의 단위로 관리하는 구조가 파드이다. 쿠버네티스는 파드 안에 있는 모든 컨테이너가 자체 네임스페이스가 아닌 동일한 리눅스 네임스페이스를 공유하도록 도커를 설정한다. 파드의 모든 컨테이너는 동일한 네트워크 네임스페이스와 UTS(UNIX Timesharing System Namespace) 네임스페이스 안에서 실행되기 때문에, 모든 컨테이너는 같은 호스트 이름과 네트워크 인터페이스를 공유한다. 파..