Merge pull request #41532 from H13m0n/dev-1.26-configure-cgroup-driver

[ko] Translate configure-cgroup-driver.md into Korean
pull/41777/head
Kubernetes Prow Robot 2023-06-26 02:59:44 -07:00 committed by GitHub
commit a9f13d6425
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 122 additions and 0 deletions

View File

@ -0,0 +1,122 @@
---
title: cgroup 드라이버 설정
content_type: task
weight: 20
---
<!-- overview -->
이 페이지에서는 kubeadm으로 생성한 클러스터에 대해 kubelet의 cgroup 드라이버를
컨테이너 런타임 cgroup 드라이버와 일치하도록 구성하는 방법을 설명한다.
## {{% heading "prerequisites" %}}
쿠버네티스 [컨테이너 런타임 요구사항](/ko/docs/setup/production-environment/container-runtimes)을
숙지하고 있어야 한다.
<!-- steps -->
## 컨테이너 런타임 cgroup 드라이버 구성
[컨테이너 런타임](/ko//docs/setup/production-environment/container-runtimes) 페이지에서는,
kubeadm 기반 설치의 경우 kubeadm이 kubelet을 `systemd` 서비스 형태로 관리하기 때문에
kubelet의 [기본](/docs/reference/config-api/kubelet-config.v1beta1) `cgroupfs` 드라이버 대신에
systemd 드라이버를 사용하는 것이 좋다고 설명는데, 이는 kubeadm이
[systemd 서비스](/docs/setup/production-environment/tools/kubeadm/kubelet-integration)로 kubelet을 관리하기 때문이다.
이 페이지에서는 `systemd` 드라이버를 기본으로 사용하여 다양한 컨테이너 런타임을 설정하는 방법에 대한
자세한 내용도 제공한다.
## kubelet cgroup 드라이버 구성
`kubeadm init`을 실행할 때 kubeadm에 `KubeletConfiguration` 구조를 전달할 수 있다.
`KubeletConfiguration`은 kubelet의 cgroup 드라이버를 제어하는 `cgroupDriver`
필드를 포함할 수 있다.
{{< note >}}
v1.22 및 이후 버전에서는 사용자가 `KubeletConfiguration``cgroupDriver` 필드를 설정하지 않은 경우
kubeadm은 기본으로 `systemd`를 사용한다.
{{< /note >}}
다음은 필드를 명시적으로 구성하는 최소한의 예시이다.
```yaml
# kubeadm-config.yaml
kind: ClusterConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kubernetesVersion: v1.21.0
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
```
위와 같은 구성 파일을 kubeadm 명령에 전달할 수 있다.
```shell
kubeadm init --config kubeadm-config.yaml
```
{{< note >}}
kubeadm은 클러스터의 모든 노드에 대해 동일한 `KubeletConfiguration`을 사용한다.
`KubeletConfiguration``kube-system` 네임스페이스에 속하는 [컨피그맵](/ko/docs/concepts/configuration/configmap)
오브젝트에 저장된다.
하위 명령인 `init`, `join`, `upgrade`를 실행하면 kubeadm이
`KubeletConfiguration``/var/lib/kubelet/config.yaml` 파일로
작성하여 로컬 노드 kubelet에 전달한다.
{{< /note >}}
## `cgroupfs` 드라이버 사용
`cgroupfs`를 사용하고 `kubeadm upgrade`가 기존 설정의
`KubeletConfiguration` cgroup 드라이버를 수정하는 것을 방지하려면, 해당
값을 명시적으로 표시해야 한다. 이는 향후 버전의 kubeadm이 기본적으로
`systemd` 드라이버를 적용하는 것을 원하지 않는 경우에 해당된다.
값을 명시하는 방법에 대한 자세한 내용은 아래 "[kubelet 컨피그맵 수정](#kubelet-컨피그맵-수정)"
섹션을 참조한다.
컨테이너 런타임이 `cgroupfs` 드라이버를 사용하도록 구성하려면
선택한 컨테이너 런타임의 설명서를 참조해야 한다.
## `systemd` 드라이버로 마이그레이션
기존 kubeadm 클러스터의 cgroup 드라이버를 `cgroupfs`에서 `systemd`로 변경하려면,
kubelet 업그레이드와 유사한 절차가 필요하다. 이러한 절차는 아래에
설명된 두 단계를 모두 포함해야 한다.
{{< note >}}
또는 클러스터의 기존 노드에서 `systemd` 드라이버를 사용하는 새 노드로
교체할 수도 있다. 이를 위해서 새 노드를 조인(join)시키기 전에 아래의 첫 번째
단계만 실행하고 이전 노드를 삭제하기 전에 워크로드가 새 노드로
안전하게 이동할 수 있는지 확인해야 한다.
{{< /note >}}
### kubelet 컨피그맵 수정
- `kubectl edit cm kubelet-config -n kube-system`를 실행한다.
- 기존 `cgroupDriver` 값을 수정하거나 다음과 같은 새 필드를 추가한다.
```yaml
cgroupDriver: systemd
```
이 필드는 컨피그맵의 `kubelet:` 섹션 아래에 있어야 한다.
### 모든 노드에서 cgroup 드라이버 업데이트
클러스터의 각 노드에 대해
- `kubectl drain <node-name> --ignore-daemonsets`을 사용하여 [노드 드레인(drain)](/docs/tasks/administer-cluster/safely-drain-node)
- `systemctl stop kubelet`을 사용하여 kubelet 중지
- 컨테이너 런타임 중지
- 컨테이너 런타임 cgroup 드라이버를 `systemd`로 수정
- `/var/lib/kubelet/config.yaml`에서 `cgroupDriver: systemd`로 설정
- 컨테이너 런타임 시작
- `systemctl start kubelet`을 사용하여 kubelet 시작
- `kubectl uncordon <node-name>`를 사용하여 [노드 통제 해제(Uncordon)](/docs/tasks/administer-cluster/safely-drain-node)
이 단계를 노드에서 한 번에 하나씩 실행하여 워크로드가 다른 노드에
스케줄링할 충분한 시간을 확보할 수 있도록 한다.
위의 과정이 완료되면 모든 노드와 워크로드가 정상인지 확인한다.