- Update to Outdated files in the dev-1.18-ko.5 branch. (#21450) - Translate tasks/run-application/run-single-instance-stateful-application in Korean (#21174) - Translate tasks/debug-application-cluster/determine-reason-pod-failure in Korean (#21515) - Translate tasks/manage-hugepages/scheduling-hugepages.md into Korean (#21337) - Translate tasks/extend-kubectl/kubectl-plugins.md into Korean (#21454) - Translate tasks/manage-daemon/rollback-daemon-set.md into Korean (#21376) - Translate contribute/generate-ref-docs/overview in Korean (#21466) - Translate reference/kubectl/overview.md into Korean (#21552) - Translate configure-pod-initialization in Korean (#21600) - Translate tasks/manage-daemon/update-daemon-set.md into Korean (#21378) Co-authored-by: Jerry Park <jaehwa@gmail.com> Co-authored-by: Yoon <learder@gmail.com> Co-authored-by: Yuk, Yongsu <ysyukr@gmail.com> Co-authored-by: Seokho Son <shsongist@gmail.com> Co-authored-by: guslcho <jamie14@naver.com> Co-authored-by: DongMoon Kim <dmoons.kim@gmail.com> Co-authored-by: bluefriday <bluefriday86@gmail.com>
4.5 KiB
title, content_template, weight
| title | content_template | weight |
|---|---|---|
| 데몬셋(DaemonSet)에서 롤백 수행 | templates/task | 20 |
{{% capture overview %}}
이 페이지는 데몬셋에서 롤백을 수행하는 방법을 보여준다.
{{% /capture %}}
{{% capture prerequisites %}}
- 데몬셋 롤아웃 기록과 데몬셋 롤백 기능은
쿠버네티스 버전 1.7 이상의
kubectl에서만 지원된다. - 데몬셋에서 롤링 업데이트를 수행하는 방법을 알고 있어야 한다.
{{% /capture %}}
{{% capture steps %}}
데몬셋에서 롤백 수행
1단계: 롤백할 데몬셋 리비전 찾기
마지막 리비전으로 롤백하려는 경우 이 단계를 건너뛸 수 있다.
데몬셋의 모든 리비전을 나열한다.
kubectl rollout history daemonset <daemonset-name>
이 명령은 데몬셋 리비전 목록을 반환한다.
daemonsets "<daemonset-name>"
REVISION CHANGE-CAUSE
1 ...
2 ...
...
- 변경 원인은 데몬셋 어노테이션
kubernetes.io/change-cause에서 생성 시의 리비전으로 복사된다. 변경 원인 어노테이션에서 실행된 명령을 기록하도록kubectl에--record=true를 지정할 수 있다.
특정 리비전의 세부 사항을 보려면 다음을 수행한다.
kubectl rollout history daemonset <daemonset-name> --revision=1
이 명령은 해당 리비전의 세부 사항을 반환한다.
daemonsets "<daemonset-name>" with revision #1
Pod Template:
Labels: foo=bar
Containers:
app:
Image: ...
Port: ...
Environment: ...
Mounts: ...
Volumes: ...
2단계: 특정 리비전으로 롤백
# --to-revision에 1단계에서 얻는 리비전 번호를 지정한다
kubectl rollout undo daemonset <daemonset-name> --to-revision=<revision>
성공하면, 명령은 다음을 반환한다.
daemonset "<daemonset-name>" rolled back
--to-revision 플래그를 지정하지 않은 경우, 마지막 리비전이 선택된다.
3단계: 데몬셋 롤백 진행 상황 확인
kubectl rollout undo daemonset 은 서버에 데몬셋 롤백을 시작하도록
지시한다. 실제 롤백은 서버 측에서 비동기적으로 수행된다.
롤백 진행 상황을 보려면 다음의 명령을 수행한다.
kubectl rollout status ds/<daemonset-name>
롤백이 완료되면, 출력 결과는 다음과 비슷하다.
daemonset "<daemonset-name>" successfully rolled out
{{% /capture %}}
{{% capture discussion %}}
데몬셋 리비전의 이해
이전 kubectl rollout history 단계에서, 데몬셋 리비전 목록을
얻었다. 각 리비전은 ControllerRevision 이라는 리소스에 저장된다.
ControllerRevision 은 쿠버네티스 릴리스 1.7 이상에서만 사용할 수 있는
리소스이다.
각 리비전에 저장된 내용을 보려면, 데몬셋 리비전 원시 리소스를 찾는다.
kubectl get controllerrevision -l <daemonset-selector-key>=<daemonset-selector-value>
이 명령은 ControllerRevisions 의 목록을 반환한다.
NAME CONTROLLER REVISION AGE
<daemonset-name>-<revision-hash> DaemonSet/<daemonset-name> 1 1h
<daemonset-name>-<revision-hash> DaemonSet/<daemonset-name> 2 1h
각 ControllerRevision 은 데몬셋 리비전의 어노테이션과 템플릿을
저장한다. ControllerRevision 오브젝트의 이름은 유효한
DNS 서브도메인 이름이어야 한다.
kubectl rollout undo 는 특정 ControllerRevision 을 가져와 데몬셋
템플릿을 ControllerRevision 에 저장된 템플릿으로 바꾼다.
kubectl rollout undo 는 kubectl edit 또는 kubectl apply 와 같은 다른 명령을 통해
데몬셋 템플릿을 이전 리비전으로 업데이트하는 것과
같다.
{{< note >}}
데몬셋 리비전은 롤 포워드만 한다. 즉, 롤백이
완료된 후, 롤백될 ControllerRevision 의
리비전 번호(.revision 필드)가 증가한다. 예를 들어,
시스템에 리비전 1과 2가 있고, 리비전 2에서 리비전 1으로 롤백하면,
ControllerRevision 은 .revision: 1 에서 .revision: 3 이 된다.
{{< /note >}}
문제 해결
- 데몬셋 롤링 업데이트 문제 해결을 참고한다.
{{% /capture %}}