하나의 독립적인 서비스를 구동할 수 있는 컨테이너가 존재
각 컨테이너는 port를 갖고 있으며, 한 pod 안의 컨테이너들은 중복 된 port를 갖을 수 없다.
pod은 외부에서 접속을 하지 못하고 클러스터 내부에서만 접속을 할 수 있는 ip를 갖고 있다.
해당 ip는 pod이 생성되면 자동적으로 할당되고 재생성 됐을땐 변경이 되는 가변적인 ip다.
pod를 포함한 모든 오브젝트에 사용 가능하나 pod에서 가장 많이 사용된다.
목적에 따라 오브젝트를 분류하고 그 분류된 오브젝트들만 따로 골라서 연결하기 위함
Key와 value 한쌍으로 구성
한 pod에는 여러개의 label을 다는 것이 가능
service에서 원하는 pod만 선택하는 것이 가능
pod이 어떤 node에 생성될지 결정하는 것, 수동과 자동 둘다 가능하다
service는 clusterIP를 갖고 있어 pod을 접속할 수 있게해준다
pod의 ip는 가변적인 반면 cluserIP는 직접 지우지 않는 이상 계속 유지된다.
cluster 내의 object에서는 접근 가능하나 외부에선 접근 불가
외부 트래픽이 node로 들어오면 해당 node는 nodePort에 해당하는 service에 접근, 해당 service가 다시 pod에 접근하는 방식
한 node에서 nodePort를 접근 시 다른 node에 있는 pod에 접근할 수 도 있는데 'externalTrafficPolicy' 설정을 'local'로 하여 같은 node 내 pod만 접근하게 설정할 수 도 있다.
같은 개념이나 외부에서 접근 시 어떤 노드에 접근할찌 지정해주는 리버스 프록시
내부 ip가 노출되지 않기 때문에 직접 서비스를 할때 사용한다
한 팟 안의 컨테이너끼리 데이터를 주고 받을 때 사용
pod 생성 시 만들어지고 삭제시 같이 삭제된다.
node 안에 위치하며 해당 node 안에 있는 pod들이 data를 주고 받을 때 사용
pod이 죽더라도 emptydir과 다르게 유지
pod에 영속성 있는 volume을 제공하기 위해 사용
pv를 통해 volume에 연결
pod은 pvc를 사용하여 pv에 연결
개발과 상용에 동일한 설정이 다른 동일한 컨테이너가 있을때 컨테이너의 설정 값들은 컨테이너 안에서 설정이 되기 때문에 각 환경별 이미지 파일을 관리해야하고 이는 비효율적이다.
pod 생성 시 configMap과 secret을 연결하여 해당 pod 안의 container는 이 값을 참도한다.
키와 밸류로 구성 된 configMap과 secret을 memory에 저장하고 있는다
키는 파일명 밸류는 값으로 저장하고 있는다
한번 주입하면 끝으로 수정을 해도 pod의 설정은 변하지 않는다
file 방식과 동일하나 'mountPath' 값을 yml 파일에서 설정
계속 참조를 하고 있기 때문에 configMap이나 secret 값이 변하게 된다면 pod의 설정도 같이 변하게 된다.
한 쿠버네티스 클러스터는 여러개의 namespace로 구성되어있다.
쿠버네티스 클러스터의 자원은 한정 될 수 밖에 없다.
각 namespace별 resourceQuota를 줘 한 namespace서 사용할 수 있는 최대 메모리를 설정
limitRange를 통해 한 nameSpace안에 생성 될 수 있는 pod의 최대 메모리를 제한
Controller의 기능은 크게 auto healing, software udpate, auto scaling, job이다.
selector에 pod의 label에 해당하는 값을 넣는다
pod이 죽었을때 controller 안의 template값에 일치하는 pod을 만들어준다
template을 update하고 pod을 죽이면 새로운 pod을 생성할때 해당 template 속성을 갖고있는 pod을 생성해준다
controller 안에 replicas 숫자만큼 pod을 생성
이걸 활용해 scale in, scale out이 가능하다
ReplicaSet에만 존재
matchLabels: 키와 밸류가 모두 같아야 pod과 연결
matchExpressions: 키와 밸류 값이 일치하지 않아도 조금은 유동적으로 pod과 연결이 가능
크게 recreate, rolling update, blue/green, canary 4가지 방식이 있다.
모든 node에 daemonSet pd가 한개씩 생성
pod이 죽었을때 replicaSet과 job을 통해 만들어진 pod들은 다른 node에 pod이 생성된다.
ReplicaSet을 통해 만들어진 node들은 recreate되고 다른 node에서 restart가 되는 반면, job을 통해 만들어진 node들은 recreate 된 후 restart하지 않고 finish 된다
'completion'은 총 생성 되는 pod의 갯수, 'parallelism'은 동시에 생성되는 pod의 갯수, 'activeDeadlineSeconds'는 생성 된 pod 이 살아있는 기간이다
Cronjob은 특정 job을 반복적으로 실행(사용처: db백업, 메세지 보내기 등등)