ABOUT ME

-

오늘 방문자
-
어제 방문자
-
전체
-
  • 쿠버네티스 기초 개념
    Server 2021. 7. 27. 22:57

     

    쿠버네티스에는 여러가지 오브젝트들이 있다. 아래 오브젝트들은 이해해야 한다!

     

     

    Pod

    - 쿠버네티스에서 관리하는 가장 작은 배포단위

    - pod은 1개이상의 컨테이너를 포함 할 수도 있다.(보통은 1개를 사용한다)

    - libenessProbe 

        -컨테이너가 정상적으로 동작하는지 체크

        -정상적으로 동작하지 않는 다면 컨테이너를 재시작하여 문제를 해결

    - readingnessProbe

       -컨테이너가 준비되었는지 체크

       -정상적으로 준비되지 않는다면 pod으로 들어오는 요청을 제외

     

     

    ReplicaSet

    - pod을 정해진 수만큼 복제하고 관리해주는 것

    - pod만 단독으로 만들면 서버가 죽어서 pod이 사라지는등 문제가 생기면 자동으로 복구가 되지 않음.

    - resplicaset은 label을 체크해서 원하는 수의 Pod이 없으면 새로운 pod을 생성함

    - 실제로는 replicaset을 단독으로 쓰는 경우는 없다(deployment가 resplicaset을 이용하고 주로 deployment를 사용함)

     

     

    Deployment

    - replicaset을 이용해서 pod을 업데이트하고, 이력을 관리하여 롤백하거나, 특정버전으로 돌아갈 수 있게 해줌

    - 쿠버네티스에서 가장 많이 사용되는 오브젝트

    - 다양한 배포 전략이 있음 ex) rolliongUpdate방식...

     

     

    Service

     - 쿠버네티스는 pod과 직접 통신 하는 방법 대신 별도의 고정된 Ip를 가진 서비스를 만들고 그 서비스를 통해 pod에 접근하는 방식을 이용 

    - pod은 자체ip를 가지고 다른 pod과 통신 할 수 있지만, 쉽게 사라지고 생성되는 특징때문에 직접통신하는 방법은 권장하지 않음

    <service>

     

     

    Cluster IP(내부용)

    - 클러스터 내부에 새로운 IP를 할당하고 여러개의 pod을 바라보는 로드밸런서 기능을 제공

    - 서비스 이름을 내부 도메인서버에 등록하여 Pod간에 서비스 이름으로 통신을 가능하게 해줌

     

     

    NodePort(외부용)

    - 클러스터 외부에서 접근 할 수 있게 해주는 것

    - 포트 미지정시 30000~32768 자동 할당

    - 클러스터의 모든 노드에 포트를 오픈함

     

     

    LoadBalancer

    - 자동으로 살아 있는 노드에 접근하기 위해 모든 노드를 바라보는 오브젝트(알아서 살아 있는 노드에 접근함)

    - NodePort의 단점은 노드가 사라졌을 때 자동으로 다른 노드를 통해서 접근이 불가능하다

    - 만약 3개의 노드가 있다면 3개중 아무 노드로 접근해도 NodPort로 연결 할 수 있지만, 어떤 노드가 살아 있는지는 알수가 없음.

    <LoadBalaner>

     

     

    Ingress

    - 포트는 1개만 오픈하고, 도메인이나 주소에 따라 분기를 해주는 역할

    - 어떻게 동작?

    1) ingress controller는 Ingress 변화를 감시함

    2) ingresss contorller는 변경된 내용을 Nginx에 설정하고 프로세스 재시작(설정 변경시 자동적용)

    <Ingress>

     

    Volume

    - 컨테이너의 디렉토리를 외부저장소와 연결하고 다양한 플러그인하여 흔히 사용하는 대부분의 스토리지를 별도 설정없이 사용할 수 있음

    - aws사용 할 경우  aws Elastick Block Store같은 volum을 사용함

    -  컨테이너가 사라지면 내부 디렉토리도 사라지기 때문에..중요데이터는 외부 저장소랑 연결을 해야함

    - 보통 사이드카라는 패턴을 이용함 ex) 특정 컨테이너에서 생성되는 로그 파일을 별도의 컨테이너가 수집 할 수 있게 함

    - emptry dir

    - hostpath

     

     

    ConfigMap

    - 컨테이너에서 설정파일을 관리하는 방법은 이미지를 빌드할때 복사하거나, 컨테이너를 실행할때 외부 파일을 연결하는 방법이 있음 , 쿠버네티스는 configmap으로 설정을 관리함!

     

     

    Scret

    - configmap에 비밀번호를 넣어 놓기는 부적합하여, 해당 오브젝트가 생김

    - 하지만 암호화되지는 않음...base64로 저장됨

     

     

     

     

     

    댓글

Designed by Tistory.