728x90
쿠버네티스 컨트롤러 (1)
쿠버네티스 컨트롤러
- 쿠버네티스는 선언적 선언을 하면 그 선언에 클러스터 상태를 맞추고 감시하며 항상 제어
- 쿠버네티스 Pod를 관리하는 역할을 함
Replication Controller
Replication Controller
- Pod가 항상 실행되도록 유지하는 Kubernetes Resource
- 어떤 이유로든 Pod가 사라지면 누락된 Pod를 감지하고 대체 Pod를 만듦
Template
- 필수 요소 세가지
- Label Selector
- Replica Count
- Pod Template
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-nginx
spec:
replicas: 3
selector:
app: web
template:
metadata:
name: nginx-pod
labels:
app: web
spec:
containers:
- image: nginx:1.14
name: nginx
ReplicaSet
- ReplicationController와 같은 역할을 하는 컨트롤러
- ReplicationController보다 풍부한 Selector
Match Expression 연산자
- in : Key와 Value를 지정하여 Key, Value가 일치하는 Pod만 연결
- Notin : Key는 일치하고, Value는 일치하지 않는 Pod에 연결
- Exists : Key에 맞는 Label의 Pod를 연결
- DoesNotExist : Key와 다른 Label의 Pod를 연결
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs-nginx
spec:
replicas: 3
selector:
matchLabels:
app: web
matchExpressions:
- { key: version, operator: In, values: ["1.14", "1.15"] }
template:
metadata:
name: nginx-pod
labels:
app: web
version: "1.14"
spec:
containers:
- image: nginx:1.14
name: nginx
Deployment
- 서비스가 운영 중에 멈추지 않음
- Rolling Update & Rolling Back
- ReplicaSet을 이용해 Pod수를 유지
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
name: nginx-pod
labels:
app: web
spec:
containers:
- image: nginx:1.14
name: nginx-container
Rollig Update & Rolling Back
- Command
Rolling Update
: nginx 1.14 -> 1.15로 update
kubectl set image deployment deploy-nginx nginx-container=nginx:1.15 --record
kubectl describe deployment deploy-nginx
상태 확인
kubectl rollout status deployment deploy-nginx
kubectl rollout history deployment deploy-nginx
이전 version으로 롤백
kubectl rollout undo deployment deploy-nginx
kubectl rollout history deployment deploy-nginx
특정 시점 version으로 롤백
kubectl rollout undo deployment deploy-nginx --to-revision 5
pod (deployment) 삭제
kubectl delete deployments.apps deploy-nginx
- Yaml (Annotation)
key-value를 통해 리소스 특성을 기록
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx-update
annotations:
kubernetes.io/change-cause: nginx version 1.14
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
name: nginx-pod
labels:
app: web
spec:
containers:
- name: nginx-container
image: nginx:1.14
pod 실행
kubectl apply -f deploy-nginx-update.yaml
version 수정
vi deploy-nginx-update.yaml
~
spec:
containers:
- name: nginx-container
image: nginx:1.15
~
update 확인
kubectl apply -f deply-nginx-update.yaml
kubectl rollout history deployment deploy-nginx-update
kubectl delete deployment deploy-nginx-update
반응형
'🐳 Container > K8S' 카테고리의 다른 글
[K8s] 쿠버네티스(Kubernetes) 서비스 (0) | 2023.03.30 |
---|---|
[K8s] 쿠버네티스(Kubernetes) 컨트롤러 (2) (0) | 2023.03.28 |
[K8s] 쿠버네티스(Kubernetes) 레이블(Labels) (0) | 2023.03.27 |
[K8s] 쿠버네티스(Kubernetes) pod 관리 (0) | 2023.03.26 |
[K8s] 쿠버네티스(Kubernetes) node 관리 (0) | 2023.03.26 |