샤인의 IT (막 적는) 메모장

[Kubernetes 기본 정리] 쿠버네티스란? 본문

Container/Kubernetes 기본

[Kubernetes 기본 정리] 쿠버네티스란?

신샤인 2021. 4. 6. 08:44
반응형

쿠버네티스는 Container Orchestration Framework로

 

컨테이너를 조화롭게 해주는 틀을 제공항한다.

 

앞전에 도커 설명할 떄 Host 위에 바로 컨테이너가 올라가는 것과 같이

 

이렇게 올라가는 컨테이너들을 관리해준다.

 

주요기능으로 서비스 디스코버리, 셀프 힐링, 로드밸런싱, 롤링업데이트를 지원한다. (K8s 리소스의 기능들)

 

Master-Worker 구조 컴포넌트들은 각 노드마다 존재한다.

 

여기서 쿠버네티스에서 사용하는 컴포넌트와 오브젝트에 대해 알아보면

 

kube-api-server : 모든 요청을 처리하는 API 서버

 

etcd : 분산 데이터 키-값 저장소, 클러스터의 모든 설정 및 상태 저장

 

kube-controller-manager : K8s의 모든 리소스를 관리하는 역할 수행

 

cloud-controller-manager : 퍼블릭 클라우드에 특화된 모듈로 해당 클라우드 업체와의 호환성을 높이기 위해 (예: 멀티 클라우드)

 

kubelet : 파드를 관리하고 감지하는 역할 ( 모든 노드에서 작동)

 

kube-proxy : 파드로 연결되는 네트워크 관리 ( 워커 노드 )

 

보통 마스터 컴포넌트들은 Static Pod로 불리는 /etc/kubernetes/manifest 경로에서 해당 파일을 설정하여 올라간다.

 

물론 kubelet, kube-proxy 제외!

 

이 manifest 경로를 kubelet 설정으로 바꿀 수 있는데 나중에 기본 끝나면 하나씩 정리해서 올릴게여

 

위에서 말한 것처럼 쿠버네티스의 모든 설정은 YAML 오브젝트로 저장하게 되는데

 

K8s가 상태를 관리하기 위한 대상을 YAML 파일을 통해 영속적으로 리소스를 관리할 수 있다.

 

크게 apiVersion, kind, metadata, spec으로 나누어진다.

 

보통 status 최상위 필드는 설정하지 않아서 교육 때 잘 안알려주긴 하는데

 

엔지니어 입장에서는 해당 상태를 확인할 수 있어 꽤나 소소한 도움이 된다 (예 : 타임스탬프, 생성날짜, 현재상태 등등)

 

status 필드

 

apiVersion: v1 # Kubernetes API 버전 정의
kind: Pod # Kubernetes Resource 정의
metadata: # Object와 관련된 정보 정의
  name: my-pod
  labels:
    app: my-app
spec: # Object 스펙 정의
  containers:
  - name: my-pod
image: nginx:latest
readinessProbe:
  httpGet:
    path: /
    port: 80
livenessProbe:
  httpGet:
    path: /
    port: 80

 

YAML이 보기 편해서 좋고 또한 영어 좀만 안다면 대략 어떤 옵션일지 감이 온다.

 

주로 잘 봐야하는 부분이 metadata와 spec 부분으로 해당 컨테이너를 적용할 때 - (하이폰)을 쓰는데 이는 YAML에서 사용하는 리스트(List) 형식

반응형
Comments