Share
Sign In
Kubernetes
쿠버네티스란?
컨테이너화된 워크 로드와 서비스를 관리하기 위한 이식성이 있고, 확장 가능한 오픈소스 플랫폼
컨테이너 발전과정
쿠버네티스 특징
서비스 디스커버리와 로드 밸런싱
스토리지 오케스트레이션
자동화된 롤아웃과 롤백
자동화된 빈 패킹
자동화된 복구
시크릿과 구성 관리
쿠버네티스 컴포넌트
Control Plane
쿠버네티스 클러스터를 관리하는 역할
상태 관리 및 명령어 처리
구성 요소
apiserver
쿠버네티스 리소스와 클러스터 관리를 위한 API 제공
etch를 데이터 저장소로 사용
etcd
일관성과 고가용성을 가지 key-value 저장소
etcd를 백업하여 복구 가능
scheduler
노드의 자원 사용 상태를 관리하며 새로운 워크로드를 어디에 배포할지 관리
controller manager
여러 컨트롤러 프로세스를 관리, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고 단일 프로세스 내에서 실행
Node Controller, Job Controller, EndpointSlices Controller, ServiceAccount Controller
각 컨트롤러는 클러스터로부터 특정 리소스 상태의 변화를 감지하여 클러스터에 반영하느 reconcile 과정을 반복 수행
cloud-controller-manager
클라우드별 컨트롤 로직을 포함하는 컴포넌트
클라우드 공급자의 컨트롤러 매니저를 통해 API연결하고 해당 클라우드 플랫폼과 상화 작용하는 컴포넌트
Data Plane
실행 중인 파드를 유지시키고 쿠버네티스 런타임 환경을 제공
kubelet
각 Data Plane에서 실행되는 에이전트이며 API 서버와 통신하며 노드의 리소스 관리
Container Runtime과 통신 및 Container Lifecycle 관리
CRI(Container Runtime Interface)
kubelet이 컨테이너 런타임과 통신할 때 사용되는 인터페이스
쿠버네티스에서는 Docker, Containerd, cri-o 런타임 지원
kube-proxy
Network Proxy 및 내부 로드 밸런서 역할 수행
노드의 네트워크 규칙을 유지 관리 및 내부/외부 통신 할 수 있게하는 역할 수행
Refer.
Mc
Subscribe to 'mchlkim'
Welcome to 'mchlkim'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to 'mchlkim'!
Subscribe
👍
Other posts in 'Kubernetes'See all
mchlkim
Amazon EKS Cluster Endpoint 네트워크 유형별 차이점
EKS를 생성할 때 클러스터 엔드포인트 액세스 유형을 지정해야한다. 클러스터 엔드포인트는 Control Plane의 Kubernetes API 서버용 엔드포인트를 의미한다. 클러스터 엔드포인트는 시스템 요구사항에 맞춰 유형을 지정하여 생성하면 되는데 이 때 유형별로 어떤 차이점이 있는지와 어떤 네트워크 흐름을 가지는지 궁금했다. 우선 클러스터 엔드포인트 액세스 유형은 3가지로 Public, Public & Private, Private 중 선택하여 생성할 수 있다. Public Access 사용자는 인터넷에서 클러스터 API 서버에 접근할 수 있다. 워커 노드가 존재하는 VPC에서 DNS 질의를 해도 클러스터 엔드포인트의 퍼블릭 아이피가 조회된다. 외부 환경에서도 동일하게 클러스터 엔드포인트의 퍼블릭 아이피가 조회된다. 위의 구성도에서 PUBLIC ACCESS SOURCE CIDR를 보면 0.0.0.0/0으로 되어있는데 해당 CIDR는 직접 조정이 가능하며 최대 40개까지 CIDR를 추가할 수 있다. Netowrk ACL로 제어하는 것으로 보인다. 그러나 위의 경우 워커 노드에서 API Server와 통신할 때 Amazon 네트워크 내에서 이동되며 외부 인터넷으로는 이동되지 않는다. Private Access Private Access로 설정하게 되면 EKS OWNED ENI를 통한 접근만 허용하게 된다. Public Access로 생성해도 EKS OWNED ENI가 생성되지만 직접 통신은 하지 않는다. 클러스터 API에 접근하기 위해서는 EKS OWNED ENI와 통신이 가능한 상태여야 한다.
Kubernetes Pod
Pod 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위 1개 이상의 컨테이너로 구성된 컨테이너 집합 동일 파드 내 컨테이너는 여러 리눅스 네임스페이스 공유 (동일한 아이피 주소 사용) 사용자가 파드를 직접 관리하는 경우는 거의 없음 파드 수명주기 파드는 정의된 라이프 사이클을 따르며 반드시 한 번만 스케줄 되며 중지 및 종료 전까지 해당 노드에서 실행된다. 파드의 상태는 status필드는 phase 값에서 확인할 수 있다. 값 의미 Pending 파드가 클러스터 상에서 승인되었지만 파드를 실행하기 위한 준비중인 상태 Running 파드가 노드에 바인딩되었고 컨테이너가 생성된 상태 Succeeded 파드에 있는 모든 컨테이너가 정상적으로 실행된 상태 Failed 파드에 있는 모든 컨테이너가 종료되었고, 하나 이상의 컨테이너가 실패로 종료된 상태 Unknown 파드의 상태를 알 수 없는 상태로 일반적으로 파드가 실행되는 노드와 통신 문제로 발생