- toc {:toc}
Pods
-
Container : 기본적으로 수행시키는 프로그램, 스토리지, 환경 변수 등을 하나의 컨테이너로 합쳐 사용한다.
-
Pods : 여러 다양한 컨테이너를 하나의 캡슐과 같이 하나로 묶어 다룬다.
- 다른 컨테이너 혹은 같은 컨테이너를 묶어 관리
-
쿠버네티스가 관리하는 가장 작고 간단한 블록이다.
-
팟은 클러스터의 실행 중인 프로세스들을 나타낸다.
-
팟은 App의 컨테이너, 스토리지 리소스, 유일한 네트워크 IP, 컨테이너를 어떻게 실행시킬지를 다루는 설정 등을 하나로 캡슐화한다.
Pods Networking
- 각각의 팟은 유일한 IP 주소를 할당한다.
- 팟에서 모든 컨테이너는 IP 주소, 네트워크 포트를 포함해 네트워크 namespace를 공유한다. 즉, 동일한 IP 주소, 포트, namespace를 사용한다.
- 팟속의 컨테이너들은 localhost를 사용해 동일 팟 내의 컨테이너들과 통신한다.
Nodes
- 컴퓨터들이 하나의 노드가 된다.
- Nodes : 쿠버네티스의 worker machine을 말한다.
Clusters
- 노드들이 뭉치면 Cluster가 된다.
- Cluster : 쿠버네티스에 의해 다뤄지는 컨테이너화된 어플리케이션을 실행하는 노드들의 집합이다.
- Docker Storage와 같이 Storage를 연결할 수 있다.
- 네트워크를 통해 연결한 Storage도 사용할 수 있다. 도커와 동일하다.
- 도커와 동일하게 deploy한다.
Deployment
-
도커 때에는 명령을 주는 것처럼 하지만, 쿠버네티스는 희망 상태를 제시하고 해당 상태에 맞춰 작동한다.
-
도커 때 replica → 컨테이너를 여러 개 띄우지만, 쿠버네티스는 팟을 중심으로 다룬다.
-
프로그래머들은 원하는 상태를 배포의 형태로 제시한다.
-
Deployment Controller는 실제 상태를 원하는, 제시된 상태로 변경하고 배포하는 역할을 한다. Actual state → Desired state
-
Replica로 복제하는 역할은 Replica Controller가 한다. (역할도 분할되어 있다.)
-
BusyBox : 하나의 실행파일에서 여러 유닉스 유틸리티들을 제공하는 작은 소프트웨어 묶음이다.
-
다양한 POSIX 환경에서 돌아가고 리눅스 커널에 의해 제공되는 인터페이스와 작동할 수 있도록 제공된다.
-
매우 제한된 리소스들로 사용하는 임베디드 운영체제를 위해 만들어졌다.
Ingress
- Ingress : HTTP와 같이 클러스터에서 서비스에 대한 외부 접근을 다루기 위한 API 객체(object)이다.
- 클러스터와 외부의 통신을 할 때 사용한다.
- Load balancing : 도착한 request를 어떤 팟으로 보낼 것인지 조종한다.
- SSL(Secure Socket Layer) Termination : 암호화된 통신(SSL)이 계속 전달될 때 암호화는 트래픽이 크기 때문에 성능 부하가 크다. 외부에서 왔을 때 내부에서는 암호화를 사용할 필요가 없으므로 입구에서 암호화를 종료하는데, 이를 Ingress가 진행한다.
- 이름 기반 가상 호스팅을 제공한다. 여러 명이 내 사이트를 사용할 때 한 대의 컴퓨터를 사용하면 트래픽으로 인해 터지기 때문에 여러 대를 동일한 이름으로 사용한다. 혹은 그 반대도 가능하다. (여러 개의 컴퓨터가 한 개의 이름을 갖는 경우, 한 대의 컴퓨터가 여러 개의 이름을 갖는 경우) ex) 네이버
NodePort
- 특정 노드에 포트를 뚫어 노드와 외부가 통할 수 있도록 하는 방식이다.