본문 바로가기

Computer Science/Kubernetes 정리

(9)
Kubernetes 정리 9 : Services ClusterIP 1. Cluster IP쿠버네티스에서 Pod는 컨트롤러가 관리하므로 노드를 옮겨다니면서 실행되기도 하고 클러스터 안 Pod의 IP가 변경되기도 한다. 이렇게 동적으로 변하는 Pod에 고정적으로 접근할 때 사용하는 방법이 Service다.서비스(ClusterIP) 생성 시, apiserver → (kubelet) → kube-proxy → iptables 에 rule이 생성됨풀스택 웹 애플리케이션에는 일반적으로 다양한 종류의 파드가 있다. 프론트엔드 웹 서버를 실행하는 파드 세트, 백엔드 웹서버를 실행하는 파드 세트, Redis와 같은 key-value store를 실행하는 파드 세트, MYSQL과 같은 영구 데이터베이스를 실행중인 파드 세트 등이 있을 수 있다. 웹 프론트엔드 서버는 백엔드서버와 통신해야..
Kubernetes 정리 8 : Services 1. ServiceKubermetes Services는 내부의 컴포넌트끼리, 그리고 애플리케이션 외부와 통신할 수 있게 해준다.Kubermetes Services는 애플리케이션을 다른 애플리케이션이나 사용자와 연결하는데 도움이 된다.예를 들어서, 우리 애플리케이션은 다양한 섹션을 실행하는 파드의 그룹들이 있다. 프론트엔드를 유저에게 서빙하는 그룹, 백엔드 프로세스를 실행하는 그룹, 외부 데이터 소스에 연결하는 그룹들이 있을 것이다. 이러한 파드 그룹 간 연결을 가능하게 하는 것이 Service이다. Service를 통해 프론트엔드 애플리케이션을 엔드 유저가 사용할 수 있게 하고, 백엔드와 프론트엔드 POD 간 통신을 돕고, 외부 데이터 소스 연결 설정에 도움을 준다.즉, 서비스는 애플리케이션의 마이크로 ..
언제 딸지 모르겠지만 Kubernetes 자격증 팁!! Yaml 파일을 만들고 편집하는 것은 어려우니 'kubectl run' 커맨드를 활용해 Yaml template을 생성하는데 도움이 될 수 있습니다!아래 커맨드들을 사용해 이전 기출문제들을 시도해보아요~(영어로 문제가 나오니까 번역하지 않고 그대로 씀!) 1) Create an NGINX PODkubectl run nginx --image=nginx 2) Generate POD Manifest YAML file(-o yaml).  (--dry-run) --> 이거는 생성하지 않고 실행되는지만 확인하는 명령어kubectl run nginx --image=nginx --dry-run=client -o yaml 3) Create a deploymentkubectl create deployment --image..
Kubernetes 정리 7 : Deployments 1. Deployment애플리케이션이 담긴 컨테이너는 PoD에 캡슐화된다. 파드를 여러 개 보장해주는 역할로 ReplicaSet을 사용했다.Deployments는 ReplicaSet보다 한단계 더 높은 구조계층에 있다. (Deployment를 사용하면 ReplicaSet이 자동으로 생성된다.)Deployment는 원활한 업그래이드를 위해 롤링 업데이트, 롤백, 중지, 재개하는 기능을 제공한다. 2. Deployment 생성방법1) 다른 컴포넌트들과 마찬가지로 Definition file을 생성한다.Deployment 의 Definition file은 ReplicaSet Definition File에서 'kind'부분만 다르고 동일하다.2) Definition file이 완료되면, 아래 커맨드로 Deplo..
Kubernetes 정리 5 : ReplicaSets 1. Replication ControllerReplication Controller는 클러스터에서 여러 POD의 인스턴스를  실행하는 데 도움이 된다.고가용성(High Availabilty)를 제공한다.POD가 하나만 있어도 Replication Controller가 도움이 된다.Replication Controller는 기존 POD가 죽었을 때, 새로운 POD를 자동으로 불러와서 지정된 수의 POD가 항상 실행 중이라는 것을 항상 보장한다.   Replication Controller가 필요한 또 다른 이유는 부하를 분산하기 위해 여러 POD를 생성해야한다.(로드 밸런싱)유저가 늘어나면 로드밸런싱을 위해 추가 파드를 배포한다.해당 노드의 리소스가 부족해지면 클러스터의 다른 노드에 추가 POD를 배포할..
Kubernetes 정리 4 : Kube Scheduler 1. Kube Scheduler스케쥴러는 어떤 POD가 어떤 노드로 가야하는지 결정하는 것만 한다. 실제로 파드를 노드에 배치하지는 않는다.Kubelet이 파드를 노드에 배치하는 작업을 한다.CPU:10이라는 요구사항이 있을 때, 스케쥴러는 두 단계를 거친다.POD에 가장 적합한 노드를 식별. 여기서 스케쥴러는 이 POD 프로필에 맞지 않는 노드를 필터링을 시도한다.(CPU가 충분치 않은 노드 등)스케줄러는 노드의 순위를 매긴다. 우선순위 함수를 사용해서 0에서 10까지의 점수를 할당한다. 예를 들어, 스케쥴러는 노드의 리소스 양을 계산하고 POD를 잔여 리소스가 더 많은 노드에 배치한다.이외에 커스터마이징하여 자신만의 스케쥴러를 만들 수 있다. 2. kube-scheduler-Manual 설치하기Kub..
Kubernetes 정리 3 : Kube Controller Manager 1. Node Controller노드 컨트롤러는 애플리케이션이 계속 실행될 수 있도록 노드의 상태를 모니터링하고 필요한 조치를 취한다.노드 컨트롤러는 이 조치를 Kube API Server를 통해 수행한다.노드 컨트롤러는 5초마다 노드의 상태를 테스트한다.만약 노드가 멈추면 노드는 접근할 수 없는 것으로 표시된다.(Unreachable)하지만 바로 표시하지는 않고, 표시하기 전에 40초 동안 기다린다.노드가 접근할 수 없는 것으로 표시된다면 회복할 5분의 시간을 준다.5분안에 회복이 안 될 경우, 노드에 할당된 POD들을 제거하고 POD가 replica set의 일부인 경우, health 노드를 제공한다. 2. Replication ControllerReplication Controller는 replic..
Kubernetes 정리 2 : Kube-API Server 1. Kube API ServerKube API Server는 주요 관리 컴포넌트이다.Kubectl 명령을 실행하면, kubectl 유틸리티는 kube-apiserver에 접근한다.kube-apiserver는 가장 먼저 요청을 인증하고 검증한다.그리고 etcd 클러스터로부터 데이터를 받아 다시 요청한 정보와 함께 응답한다.반드시 kubectl 명령어를 사용할 필요는 없다. 대신 POST 리퀘스트를 보내서 API를 직접 호출할 수 있다.1. Authenticate User: 먼저 요청이 인증된 다음,2. Validate Request: 검증됩니다. (이 경우, API서버는 POD객체를 노드에 할당하지 않고 생성됩니다.)3. Retrieve Data4. Update ETCD: ETCD 서버에 있는 'POD를..
Kubernetes 정리 1 : Kubernetes용어정리 1. 쿠버네티스여러 서버(노드)에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 비밀 번호나 환경설정을 관리하고 주입해주는 역할을 한다.목적: 사용자의 응용 프로그램을 컨테이너 형식으로 자동화된 방식으로 호스팅하는 것 -> 응용 프로그램 내 다양한 서비스 간 통신이 쉽게한다. ETCD는 키 값 형식으로 정보를 저장하는 DB용어뜻컨테이너앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술- 각종 설정 과장이 줄어 좀 더 편하게 프로그램을 실행할 수 있다.컨테이너 런타임컨테이너 실행을 담당하는 소프트웨어- 쿠버네티스는 containerd, CRI-O와 같은 컨테이너 런타임 및 모든 Kubernetes CRI (컨테이너 런타임 인터페이스) 구현체를 지원한다도커..