Object & Controller
Table of contents
컨네이너는 크게 오브젝트(Object) 와 오브젝트를 관리하는 Controller 로 나뉜다.
Object
관리 대상이다.
Pod
Pod 란 콩깍지라는 어원으로 어플리케이션 기본 실행 단위(컨테이너) 를 배포할 수 있는 가장 작은 단위를 말한다. 즉, 하나의 컨테이너 또는 그를 보조하는 컨테이너까지 포함하여 이를 Pod 라고 일컫는다.
Service
파드는 일회성으로 제거 후 다시 생성되는데 이때 노드가 바뀔 경우 IP 도 달라지게 된다. 서비스로 인해 노드 외부에서는 고정 IP 주소 로 파드에 접근할 수 있다.

Volume
컨테이너가 삭제되더라고 데이터는 유지되어야 하므로 볼륩 을 통해 데이터를 관리한다. 도커의 볼륨과 의미는 동일하다.
- PV (PersistantVolume)
- PVC (PersistantVolumeClame)
NameSpace
동일 물리 클러스터에서 논리적으로 구분된 가상 클러스터를 일컫는다.
 여러 팀이나 많은 사용자가 있을 경우 클러스터 내에서 여러 어플리케이션을 실행할 경우 사용한다.
 default 가 기본값이다.
root@master:~# kubectl get namespace
NAME              STATUS   AGE
default           Active   41h  // 기본 네임스페이스
kube-node-lease   Active   41h //  스케일링 관련 네임스페이스
kube-public       Active   41h // 모든 사용자가 읽기 가능한 네임스페이스
kube-system       Active   41h // 쿠버네티스 시스템에서 생성한 네임스페이스
추가/삭제 테스트
root@master:~# kubectl get ns
NAME              STATUS   AGE
default           Active   41h
kube-node-lease   Active   41h
kube-public       Active   41h
kube-system       Active   41h
root@master:~#
root@master:~# kubectl create ns test-system
namespace/test-system created
root@master:~#
root@master:~# kubectl get ns
NAME              STATUS   AGE
default           Active   42h
kube-node-lease   Active   42h
kube-public       Active   42h
kube-system       Active   42h
test-system       Active   4s
root@master:~#
root@master:~# kubectl delete ns test-system
namespace "test-system" deleted
root@master:~# kubectl get ns
\NAME              STATUS   AGE
default           Active   42h
kube-node-lease   Active   42h
kube-public       Active   42h
kube-system       Active   42h
root@master:~# \
root@master:~# kubectl config current-context
kubernetes-admin@kubernetes
root@master:~#
root@master:~# kubectl config get-contexts kubernetes-admin@kubernetes
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin
// namespace 수정
root@master:~# kubectl config set-context kubernetes-admin@kubernetes --namespace=kube-system
Context "kubernetes-admin@kubernetes" modified.
root@master:~#
root@master:~# kubectl config get-contexts kubernetes-admin@kubernetes
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   kube-system
root@master:~# kubectl get pods
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-846d7f49d8-hmc2h   1/1     Running   1          41h
calico-node-2tvpz                          1/1     Running   2          41h
calico-node-ndnrd                          1/1     Running   2          41h
calico-node-s99pf                          1/1     Running   1          41h
coredns-558bd4d5db-cnnwp                   1/1     Running   1          42h
coredns-558bd4d5db-skncw                   1/1     Running   1          42h
etcd-master                                1/1     Running   2          42h
kube-apiserver-master                      1/1     Running   2          42h
kube-controller-manager-master             1/1     Running   2          42h
kube-proxy-cbkjv                           1/1     Running   2          41h
kube-proxy-ln6sg                           1/1     Running   2          42h
kube-proxy-rvdnm                           1/1     Running   2          41h
kube-scheduler-master                      1/1     Running   2          42h
root@master:~#
root@master:~# kubectl config set-context kubernetes-admin@kubernetes --namespace=default
Context "kubernetes-admin@kubernetes" modified.
root@master:~# kubectl get pods
No resources found in default namespace.
Controller
Object 를 관리하는 얘들이다.
 파드가 원하는 수만큼 배포/유지되도록 한다.
ReplicaSet
지정한 수만큼의 파드가 항상 실행되도록 관리한다.
Deployment
일정수의 파드 수 유지, 롤아웃/롤백, 배포 중 일시정지 등의 기능이 있다. 기존에는 Replicaset 을 사용했지만 현재는 Deployment 를 가장 많이 사용한다.