Pod를 관리하는 역할을 하며 다양한 목적에 따라 컨트롤러를 선택하여 사용하면된다
Controller를 사용하여 적용할 수 있는 기능
현재 Replication Controller는 Deprecated되어 사용은 가능하지만 추천은 되지 않는다. 대신 ReplicaSet을 사용하는것을 추천한다
spec:
replicas: 1
selector: => 라벨과 연결되는 부분
matchLabels:
type: web
template: => 팟의 내용이 들어가는 곳
metadata:
name: pod1
labels: => 라벨 지정 (selector와 연괼되는 부분)
type: web
spec:
replicas: 1 =>여기에 지정된 수만틈 Pod의 갯수가 관리된다
selector:
matchLabels:
type: web
template:
metadata:
name: pod1
labels:
type: web
Replication 컨트롤러 안에 Selecotr는 Key와 Label이 같은 Pod과 연결시켜준다
만일 둘중 하나라도 다르면 연결되지 않는다
Replication과 다르게 Replicaset에는 두가지 속성이 있다
Exists
: 기본 옵션, 지정된 Key만 찾아서 연결시켜준다
DoesNotExists
: Key를 A라고 설정하면 Pod들 중 Key값에 A가 포함되지 않는 것 만 선택한다(Exists와 반대)
In
: Key와 Values를 지정할 수 있다(Key를 A, Values를 2,3이라고 지정해 놓으면, Key가 A인 값들 중에서 values가 2,3것들만 찾아서 연결)
NotIn
: Key와 Values를 해당 내용에 아닌 것만 지정할 수 있다(Key를 A, Values를 2,3이라고 지정해 놓으면, Key가 A인 값들 중에서 values가 2,3이 아닌 것들만 찾아서 연결 In과 반대)
spec:
replicas: 1
selector:
matchLabels: <= key, label만 같은 경우 찾아서 연결 지정
type: web
ver: v1
matchExpressions:
- {key: type, operator: In, values: [web]}
- {key: ver, operator: Exists} <= key가 ver인것들을 찾아서 연결
template:
metadata:
labels:
type: web
ver: v1
location: dev