You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# rc 제거
kubectl delete rc --all
# deployment 생성# --recode 명령줄을 포함시켜 개정 이력(revision history)에 기록하여야 한다.
kubectl create -f kubia-deployment-v1.yaml --record
# deployment 조회
kubectl get deploy
# deployment에 의해 생성된 rc 조회
kubectl get rs
# deployment, rs에 의해 생성된 pod 조회
ubectl get po | grep kubia-59d857
디플로이먼트 롤아웃 상태 출력
# 롤아웃 상태 출력
kubectl rollout status deploy kubia
# pod 확인
kubectl get po
디플로이먼트가 레플리카셋을 생성하는 방법과 레플리카셋이 파드를 생성하는 방식 이해
컨트롤러 이름과 임의로 생성된 문자열로 구성된다. 디플로이먼트에서 생성한 파드 3개에는 이름 중간에 숫자 값이 추가로 포함된다.
이 숫자 값은 파드 템플릿의 해시값을 나타낸다.
# 레플리카셋 조회
kubectl get rs
디플로이먼트에서 생성된 레플리카셋의 이름을 보면 여기에도 파드 템플릿의 해시값이 포함되어 있다.
디플로이먼트는 파드 템플릿의 각 버전마다 하나씩 여러 개의 레플리카셋을 만든다.
이 파드 템플릿의 해시 값을 사용하면 디플로이먼트에서 지정된 버전의 파드 템플릿에 관해 항상 동일한 레플리카셋을 사용할 수 있다.
9.3.2 디플로이먼트 업데이트
디플로이먼트 리소스에 정의된 파드 템플릿을 수정하기만 하면 쿠버네티스가 실제 시스템 상태를 리소스에 정의된 상태로 만드는 데 필요한 모든 단계를 수행한다.
사용 가능한 디플로이먼트 전략
기본 전략은 RollingUpdate 전략이다. RollingUpdate 전략은 이전 버전과 새 버전을 동시에 실행할 수 있는 경우에만 사용해야 한다.
대안으로 존재하는 Recreate 전략은 한 번에 기존 모든 파드를 삭제한 뒤 새로운 파드를 만드는 전략이다. 이는 앱이 여러 버전을 병렬로 실행하는 것을 지원하지 않고 새 버전을 시작하기 전에 이전 버전을 완전히 중지해야 하는 경우 사용할 수 있는데, 짧게 서비스 다운타임이 발생하는 문제가 있다.
롤링 업데이트 속도 느리게 하기
디플로이먼트의 minReadySeconds 속성을 설정하여 롤링 업데이트 속도를 느리게 만들 수 있다.
# deployment spec 수정
kubectl patch deployment kubia -p '{"spec":{"minReadySeconds":10}}'# deployment 상태 확인
kubectl get deploy -o yaml
롤링 업데이트 시작
kubectl set image 명령어를 사용해 컨테이너가 포함된 모든 리소스(rc, rs, deployment 등등)을 수정할 수 있다.
# image 변경
kubectl set image deployment kubia nodejs=luksa/kubia:v2 --record
# deployment 상태 확인
kubectl get deploy -o yaml
depolyment의 파드 템플릿이 업데이트돼 nodejs 컨테이너에 사용된 이미지가 kubia:v2로 변경된다.
# 1번 revision으로 롤백
kubectl rollout undo deployment kubia --to-revision=1
9.3.4 롤아웃 속도 제어
롤링 업데이트 전략의 두 가지 추가 속성을 통해 새 파드를 만들고 기존 파드를 삭제하는 과정에서 속도를 제어할 수 있다.
롤링 업데이트 전략의 maxSurge와 maxUnavailable 속성 소개
이 2개의 속성에 의해서 한 번에 몇개의 파드를 교체할지를 결정된다.
maxSurge : 레플리카 수보다 얼마나 많은 파드 인스턴스 수를 허용할지를 나타낸다.(기본값 : 25%), 만약 레플리카수가 4로 설정한 경우 4의 25%인 1개만큼 더 허용될수 있다. 즉 5개의 파드까지 생성될 수 있음을 의미한다. 백분위로 설정하기 떄문에 이 값은 반올림 처리 된다.
maxUnavailable : 업데이트 중에 의도하는 레플리카 수를 기준으로 사용할 수 없는 파드 인스턴스 수(기본값 25%), 레플리카수가 4인 경우 25%인 1개만큼 unavailable되는것을 허용한다. 업데이트 과정에서 사용할 수 없는 파드는 최대 1개여야 한다. 즉 최소 3개의 파드는 항상 가용한 상태를 유지하면서 롤링 업데이트가 수행되어야 한다는 의미이다. 이 백분위 값을 처리할떄는 내림으로 처리된다.
9. 디플로이먼트 : 선언적 애플리케이션 업데이트
9.1 파드에서 실행중인 애플리케이션 업데이트
모든 파드를 업데이트 하는 방법
9.1.1 오래된 파드를 삭제하고 새 파드로 교체
9.1.2 새 파드 기동과 이전 파드 삭제
한 번에 이전 버전에서 새 버전으로 전환
롤링 업데이트 수행
9.2 레플리케이션컨트롤러로 자동 롤링 업데이트 수행
하나의 YAML에 여러개의 쿠버네티스 리소스를 정의하는 방법
---
(대시 3개)를 구분자로 여러 리소스 정의를 포함할 수 있다.9.2.2 kubectl을 이용한 롤링 업데이트
롤링 업데이트 과정
동일한 이미지 태그로 업데이트 푸시하기
롤링 업데이트가 시작되기 전 kubeclt이 수행한 단계 이해하기
레플리케이션컨트롤러 두 개를 스케일업해 새 파드로 교체
9.2.3 kubectl rolling-update를 더 이상 사용하지 않는 이유
1) 스스로 만든 오브젝트를 쿠버네티스가 수정하기 떄문에
2) 롤링 업데이트를 수행하는 레벨이 클라이언트에서 이루어지기 때문
--v
옵션을 사용해 자세한 로딩을 켜면 이를 확인할 수 있다.3) rolling-update 자체가 명령(imperative)을 나타내기 떄문
9.3 애플리케이션을 선언적으로 업데이트 하기 위한 디플로이먼트 사용하기
9.3.1 디플로이먼트 생성
디플로이먼트 매니페스트 생성
디플로이먼트 롤아웃 상태 출력
디플로이먼트가 레플리카셋을 생성하는 방법과 레플리카셋이 파드를 생성하는 방식 이해
# 레플리카셋 조회 kubectl get rs
9.3.2 디플로이먼트 업데이트
사용 가능한 디플로이먼트 전략
롤링 업데이트 속도 느리게 하기
롤링 업데이트 시작
디플로이먼트와 그 외의 리소스를 수정하는 방법
디플로이먼트의 놀라움
# rs 조회 ( 2개가 그대로 남아있는것을 알 수 있다.) kubectl get rs
9.3.3 디플로이먼트 롤백
롤아웃 되돌리기
# 이전 버전으로 롤백 kubectl rollout undo deploy kubia
디플로이먼트 롤아웃 이력 표시
특정 디플로이먼트 개정으로 롤백
# 1번 revision으로 롤백 kubectl rollout undo deployment kubia --to-revision=1
9.3.4 롤아웃 속도 제어
롤링 업데이트 전략의 maxSurge와 maxUnavailable 속성 소개
maxUnavailable 속성 이해
9.3.5 롤아웃 프로세스 일시 중지
롤아웃 재개
# 롤아웃 재개 kubectl rollout resume deploy kubia
롤아웃을 방지하기 위한 일시 중지 기능 사용
9.3.6 잘못된 버전의 롤아웃 방지
minReadySeconds의 적용 가능성 이해
적절한 minReadySeconds와 레디니스 프로브 정의
kubectl apply 를 통한 deploy 업데이트
레디니스 프로브가 잘못된 버전으로 롤아웃되는 것을 방지하는 법
롤아웃 데드라인 설정
# deploy 정보 확인 kubectl describe deploy kubia
잘못된 롤아웃 중지
# 롤아웃 중지 kubectl rollout undo deployment kubia
The text was updated successfully, but these errors were encountered: