🥳
쿠버네티스
는 클러스터 내의 컨테이너 상태를 자동으로 관리하며, 필요한 개수의 컨테이너 복제본이 항상 실행 중임을 보장하는 기능을 제공합니다.
이러한 기능은ReplicationController
와ReplicaSet
,Deployment
등 다양한 컨트롤러를 지원합니다. 여기서는 위에서 언급한 3가지 컨트롤러중ReplicationController
와ReplicaSet
를 중심으로 알아보겠습니다.
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-replication
spec:
replicas: 3
selector:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx:latest
🫠
ReplicationController
는spec.replicas
필드를 통해 원하는 Pod의 수를 지정하며, selector를 통해 해당 컨트롤러가 관리할 Pod를 선택합니다.이때 selector에서 설정한 갑사이 template의 labels에 존재해야 합니다.
위 파일을 만든 후
kubectl create -f [파일 이름]
을 실행하고 나면 replicas에서 정한 개수 만큼 pod가 생성된 것을 알 수 있습니다.R
eplicationController
를 확인 하는 명령어는kubectl get rc
입니다.😑정말 관리해주는지 pod 하나를 지워보시면 알 수 있습니다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-replica
spec:
replicas: 3
selector:
matchExpressions:
- {key: version, operator: In, values: [1.15]}
template:
metadata:
labels:
app: nginx
version: 1.15
spec:
containers:
- name: nginx-container
image: nginx:1.15
🧐
ReplicationController
와 같은 기능을 하지만ReplicaSet
은ReplicationController
보다 라벨 선택에 있어 보다 더 많은 기능을 가지고 있습니다.1. matchLables
ReplicationController
의 labels와 같은 기능입니다.2. matchExpressions
라벨을 보다 더 세밀하게 조정해서 선택할 수 있는 기능입니다. key에는 원하는 값을 넣어주고 operator에는 계산 기능을 넣어주시면 되는데 위에서 in의 경우에는 values에 정한 값이 들어있는 경우에 선택하라는 의미를 지니고 있습니다.
ReplicaSet
확인 하는 명령어는kubectl get rs
입니다.
😓
쿠버네티스
는 서비스의 안정성과 확장성을 보장하기 위해ReplicationController
와ReplicaSet
과 같은 리소스를 제공합니다. 이들 컨트롤러는 클러스터 내에서 안정적인 서비스 운영을 위해 필요한 Pod의 수를 자동으로 관리합니다.
deployment
의 경우에는 다음 글에서 다루어 보겠습니다.