일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 솔데스크
- github action 사용법
- 메탈LB
- Kubernets on Jenkins
- kubernetes 동작 원리
- Firelens
- headless service
- Prometheus install
- 딥레이서
- helm
- SAA 합격 후기
- 깃허브 액션
- EKS 클러스터
- Aurora cluster
- 딥레이서 보상함수
- blue-green
- Solution Architecture
- AWS 딥레이서
- terraform
- 쿠버네티스
- 그라파나 시각화
- 쿠버네티스 컴포넌트
- LoadBalancer Controller
- 로드밸런서 컨트롤러
- Kubernetes
- livenessPorbe
- EFS CSI Driver
- grafana on kubernetes
- 그라파나 대시보드
- jenkins
mingming
kubernetes controller - Deployment 본문
Deployment
ReplicaSet을 컨트롤해서 Pod 수를 조절
Rolling Update & Rolling Back
Deployment가 ReplicaSet을 컨트롤하고 ReplicaSet이 Pod를 컨트롤하는 형태
RollingUpdate
롤링 업데이트는 파드 인스턴스를 점진적으로 업데이트하여 서비스 중단 없이 이루어 질 수 있도록 해줍니다.
- 하나의 환경에서 또 다른 환경으로의 애플리케이션 프로모션
- 이전 버전으로의 롤백
- 서비스 중단없는 애플리케이션의 지속적인 통합과 지속적인 전달
Deployment Definition
nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
nginx-rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
spec:
replicas: 3
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
RollingUpdate 기능을 제외하면 ReplicaSet과 거의 동일한 형태를 갖는 컨트롤러 입니다.
Deployment를 생성하면 ReplicaSet이 생성됩니다.
kubectl get deploy,rs,pod
Deployment Rolling Update & Rolling Back
Rolling Update
1. application rolling update
kubectl set image deployment <deploy_name> <container_name>=<new_version_image>
kubectl set image deploy nginx-deployment nginx-container=nginx:1.15 --record
kubectl descirbe pods <pod_name>
2. controlling rolling update
RollBack
kubectl rollout history deployment <deploy_name>
kubectl rollout undo deploy <deploy_name>
history 확인
kubectl rollout history deployment <deployment_name>
바로 전 단계로 rollback
kubectl rollout undo deployment nginx-deployment
특정 history로 rollback
kubectl rollout undo deployment nginx-deployment --to-revision=3
deployment yaml format으로 확인
kubectl get deployment nginx-deployment -o yaml
history size는 10
progressDeadlineSeconds : 일정 시간동안 업데이트가 되지 않으면 롤백
maxSurge : replicas=3 25%=0.75 ~> 3+1 = 4 running 중인 Pod를 최대 4개로 설정한다
Sample-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
annotations:
kubernetes.io/change-cause: version 1.14
spec:
progressDeadlineSeconds: 600
revisionHistoryLimit: 10
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
replicas: 3
selector:
matchLabels:
app:web
template:
metadata:
name: nginx-pod
labels:
app: web
spec:
containers:
- name: nginx-container
image: nginx:1.14
EXAMPLE
1. 다음 조건으로 Deployment를 사용하는 dep-lab.yaml 파일을 생성하고 apply 명령으로 동작시킵니다.
- labels(name: apache, app: main, rel: stable)를 가지는 httpd:2.2 버전의 Pod를 2개 히스토리를 기록하며 운영합니다.
- annotations( kubernetes .io/change-cause: version 2.2) 를 추가로 설정합니다.
deployment name: dep-mainui
container: httpd:2.2
dep-mainui.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: dep-mainui
annotation:
kubernetes.io/change-cause: version 2.2
spec:
replicas: 2
selector:
matchLabels:
app: main
template:
metadata:
name: http-pod
labels:
name: apache
app: main
rel: stable
spec:
containers:
- name: apache
image: httpd:2.2
kubectl create -f dep-mainui.yaml
2. 동작되는 dep-lab.yaml 의 이미지를 httpd:2.4 버전으로 rolling update 합니다. 단 apply 명령어를 통해 rolling update 진행합니다.
kubectl set image deployment dep-mainui apache=httpd:2.4 --record
vi 편집기를 열고 nginx version 수정 후
kubectl apply -f dep-mainui.yaml
3. 현재의 dep-mainui 히스토리를 확인하고 rollback 시킵니다.
kubectl rollout history deployment dep-mainui
kubectl rollout undo deployment dep-mainui --to-revision=3
4. 현재 동작중인 Pod의 httpd 이미지 버전은 어떻게 되는지 확인합니다.
kubectl describe pods <pod_name>
'kubernetes' 카테고리의 다른 글
kubernetes controller - Job (0) | 2023.09.05 |
---|---|
kubernetes controller - StatefulSet (0) | 2023.09.04 |
kubernetes controller - ReplicaSet (0) | 2023.09.03 |
kubernetes controller - Replication Controller (0) | 2023.09.03 |
Vagrant로 kubernetes Cluster 구축하기 (0) | 2023.09.01 |