1. 용어정의 및 내용 정리

  • 크기 순서 : 쿠버네티스 > 클러스터 > 노드 > 팟(+쿠블릿) > 컨테이너 > 도커 스토리지*
  1. 컨테이너: 커널 / 하드웨어 계층과 분리 시킨 어플리케이션 제공 방식.
  2. 이미지를 통해 실행 가능한 인스턴스 단위의 컨테이너를 생성해서 사용한다.
  3. 쿠버네티스 : 컨테이너들을 관리하는 역할, 마스터 클러스터에서 모든 작업을 제어/스케쥴링 함. 하위의 노드들을 제어함. 개발자가 컨테이너 클러스터에 접근하도록 Open API 를 제공함.
  4. 클러스터 : 여러 노드들을 관리하는 컴퓨터 인스턴스
  5. 노드 : 팟을 가지고 있음. OS 계층과 하드웨어 하드디스크를 가짐. node 에는 외부 네트워크와 교류하기 위한 IP가 존재함. pod의 네트워크 인터페이스에는 node의 IP와 연결되기 위한 IP가 존재함. 실질적으로 사용되는 컨테이너는 pod안에 있기 때문에 팟에 접근하기 위한 방법이 필요
  6. pod : 쿠버네티스의 작업 단위. 동일한 하나의 네트워크와 여러 스토리지들을 공유하는 컨테이너들의 그룹. 즉 쿠버네티스가 클러스러, 노드, 팟에 접근해 컨테이너를 제어한다.
  7. 팟 정의 방법 : yaml 로 팟 버젼, 이름 등을 정의하고 넣을 컨테이너들을 정해준다. 이 팟 파일을 마스터 클러스터 -> 노드로 이동시켜 팟을 생성 시킴. 추가로 스케쥴링 및 복제도 가능한데 다음 단원에서 배움.
  8. 팟 장애 시 : 쿠버네티스는 N개의 pod이 클러스트 내부에서 실행될 수 있도록 보장하는데, 장애가 발생하면 다른 node에서 이를 대체하는 동일한 pod을 구동한다.
  9. 서비스 : 여러 Pod들 사이에서, 상호 소통을 가능하게 해 주는 방법을 제공함. 하나의 고정 IP를 복제된 Pod들 에게 할당해줌. 일반적으로 웹서버, 앱서버, DB 서버 등으로 사용됨.
  10. Label: 메타데이터의 하나로, 모든 API 객체에 할당 가능함. 객체마다의 식별자로 사용됨. pod 들을 그룹화할 수 있으며 레이블링 정보를 통해 검색함.
  11. Kublet (쿠블릿) : Node마다 배치되는 에이전트 프로그램, Pod의 Health check 해줌. 비정상이면 restart 시킴.
  12. Volumes : 데이터를 저장하기 위한 폴더라고 보면 됨. 저장공간임. 타입에 따라 어떤걸 저장하는지가 다름. ex : ConfigMap: Pod에 설정(configuration) 데이터를 삽입하는 방법을 제공 Secret: Pod에 민감한(sensitive)한 데이터를 전달하는데 사용됨
  13. 도커 스토리지(Volumes): 도커 차원에서 컨테이너를 위한 스토리지를 제공함. 그러나 여러 컨테이너 사이에서 공유 안 됨 & 라이플사이클 관리 안 해줌.
  14. 쿠버네티스 볼륨(Volume) : 하나의 pod 에 속한 컨테이너들 사이에 공유가 가능하면 라이프사이클도 관리해줌.
  15. 쿠버네티스 볼륨과 Pod : 하나의 볼륨이 여러개의 Pod과 공유되기도 하지만, 하나의 Pod이 여러개의 볼륨과 공유됨 Pod이 사라지지 않는 이상, 연관된 볼륨 또한 사라지지 않음 ⇒ Pod의 생명주기와 맞물림