쿠버네티스 공부 4
ReplicasController
컨트롤러의 종류 중 하나이다.
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
더 자세하게 확인 -
해당 컨테이너의 개수를
보장
해준다. -
- 같은 라벨이름으로 다른 pod를 실행하면 해당 pod는 실행 후 강제 종료된다. 컨트롤러가 3개를 보장하기때문(많아도 적어도 안됨)
-
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
ReplicaSet
무엇이 다른건가?
풍부한 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
!
Author And Source
이 문제에 관하여(쿠버네티스 공부 4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ehgks0000/쿠버네티스-공부-4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)