컨트롤러의 종류 중 하나이다.
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-nginx
spec:
replicas: 3
selector:
app: webui
template:
<컨테이너 템플릿>
kubectl run redis --image=redis --dry-run --labels=app=webui -o yaml > redis.yaml : 레디스 이미지 컨테이너를 redis.yaml로 생성
kubectl get rc
로 확인
kubectl describe rc rc-nginx
더 자세하게 확인
해당 컨테이너의 개수를 보장
해준다.
selector의 키 밸류를 바라보다가 eidt으로 수정이 되면 반영한다.
kubectl scale rc rc-nginx --relpicas=2
으로 edit말고 바로 개수 수정 가능 (스케일 아웃/다운)selector 외는 수정이 된다고해서 바로 반영이 되지않고 삭제 하면 컨트롤러에 의해 자동 생성되면서 수정된 버전이 생긴다. (롤링 업데이트)
template에는 pod 컨테이너 처럼 작성하면 된다.
kubectl delete rc rc-nginx
rc를 삭제해야 pod가 다같이 삭제.
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
무엇이 다른건가?
풍부한 Selector
지원
apiVersion: apps/v1
kind: ReplicaSet
selector:
matchLabels:
component: redie
matchExpressions:
- {key: tier, operator: In, values: [cache]}
- {key: enviroment, operator: NotIn, values: [dev]}
matchExpressions 연산자
In : key와 values를 지정하여 key, value가 일치하는 Pod만 연결
NotIn : key는 일치하고 value는 일치하지 않는 Pod에 연결
Exists : key에 맞는 label의 pod를 연결
DoesNotExist: key와 다른 label의 pod를 연결
kubectl get rs (replicasets)로 확인
kubectl delete rs rs-nginx --cascade=false
: 컨트롤러만 삭제하고 pod는 남겨 놓는다.
selector:
matchLabels:
app: webui
matchExpresstions:
- {key: version, operator: In, value: ["2.1", "2.2"] }
app이름은 webui이고 version은 2.1이거나 2.2를 보장해줘
rc와 rs 컴트롤러에 있어서 가장 중요한 것!
Selector
와 label
!