- toc {:toc}
Controller
-
쿠버네티스의 컨트롤러는 운영자가 원하는 상태를 쿠버네티스가 받아서 원하는 상태로 만드는 역할을 한다.
-
Desired state를 받아서 원하는 개수의 팟, 서비스 등의 동작을 수행하고 동작이 잘 진행되는지 관리하는 역할을 한다.
-
Label : 객체에 붙여지는 key/value 쌍이다. kind - 클래스 명
-
라벨은 그룹핑을 한다.
-
쿠버네티스는 팟, 다양한 객체의 집합이다.
-
라벨은 팟을 만드는 시점에 만들어질 수 있고 언제나 더해지고 수정될 수 있다.
Pods Selection using Label
- 쿠버네티스 팟들은 metadata를 통해서 조작하고 IP 주소가 아닌 이름을 사용한다.
- 쿠버네티스의 팟은 mortal하다. 팟이 죽을 수 있다. Deployment를 사용한다면 팟을 동적으로 만들고 삭제하며 조정한다.
- 때문에 새로 만드는 경우 그때마다 IP 주소가 달라질 것이고, 매번 수정해줘야 하므로 IP 주소가 아닌 라벨을 통해 이름을 설정해 사용한다.
- Prefix는 동일하나 Postfix의 숫자가 달라진다.
- Ingress, NodePort → 서비스, 외부의 IP에서 받아와 load balancing을 진행한다.
- 서비스를 만들 때 key 값이 app:myapp인 경우에 전달하도록 설정하여 해당 팟에만 load balancing 할 수 있게 된다.
- 라벨 사용 예시
- 현재 운용 중인 서비스를 release 라벨을 통해 묶는다. 기능을 개발해 테스트 용도로 beta의 라벨을 주고 작동시켜 구분하여 개발할 수 있다.
ReplicaSet
-
ReplicaSet은 컨트롤러 이다.
-
목적
- 팟의 희망하는 개수만큼 실행시키고 3개를 지정해놨는데 하나가 죽으면 새로 하나 만들어 원하는 개수를 유지시키는 역할을 한다.
-
Replicaset
- 운영자가 요청한 팟을 원하는 개수만큼 n개를 실행하고 유지한다.
- selector : 운영자가 요구한 무언가를 명령하기 위한 이름 설정한다.
- replicas : 생성하고자 희망하는 팟의 개수를 설정한다.
- template : 복제할 새로운 팟의 데이터를 구체적으로 작성한 템플릿을 설정한다.
- 쿠버네티스는 입력 파라미터를 받아 ReplicaSet을 작동시킨다.
-
Set-based Requirement
-
주어진 라벨을 replicaset에서 보면 어느 위치, 어느 지점, 노드에 적용할지를 구분하는 역할로도 사용할 수 있다.
-
많은 정보 중 선택해서 원하는 정보를 볼 때 라벨을 사용할 수 있다.
Service Distribution in ReplicaSet
- 서버 업데이트 Blue → Green, 위쪽이 유저, 아래쪽이 개발자라고 하자.
- 초록색 Replica Controller가 제일 먼저 생성된다.
- 팟을 3개를 만들고 잘 동작하는지를 확인하고 관리한다.
- 사용자의 서비스는 NodePort or Ingress를 만들어 load balancing 하며 팟에 작동을 요청한다.
- 그린 하나 생성 블루 하나 죽이고 → 기존에 가지고 있던 것을 발전 업데이트 시키는 것이 아니다.
- 새로운 Replicaset Controller를 띄워 새로운 팟을 띄우고 서비스가 새로운 팟과 연결되고 기존 팟은 그대로 두거나 죽는 쪽으로 만든다.
- 2개 이상의 복수의 ReplicaSet Controller를 Deployment가 작동시킨다.