K8s 컨테이너 런타임

1 개요

Crystal Clear action info.png 작성 중인 문서입니다.
컨테이너 런타임
Container Runtimes

https://kubernetes.io/docs/setup/production-environment/container-runtimes/


Note

Dockershim은 Kubernetes 프로젝트에서 릴리스 1.24부터 제거되었습니다. 자세한 내용은 Dockershim 제거 FAQ를 참조하세요.

각 클러스터 노드에 컨테이너 런타임을 설치해야만 파드를 실행할 수 있습니다. 이 페이지에서는 노드 설정에 필요한 작업과 관련된 내용을 설명합니다.

Kubernetes 1.30에서는 Container Runtime Interface (CRI)를 준수하는 런타임을 사용해야 합니다.

자세한 내용은 CRI 버전 지원 정보를 참조하세요.

이 페이지에서는 Kubernetes에서 몇 가지 일반적인 컨테이너 런타임을 사용하는 방법에 대해 설명합니다.

Note

Kubernetes v1.24 이전 릴리스에서는 dockershim이라는 컴포넌트를 사용하여 Docker Engine과 직접 연계를 제공했습니다. 이 특별한 직접 연계는 더 이상 Kubernetes의 일부가 아닙니다(v1.20 릴리스에서 이 제거가 발표되었습니다). 이 제거가 사용자에게 미치는 영향을 이해하려면 Dockershim 제거 영향도 확인하기를 읽어보세요. dockershim을 사용하는 것에서의 마이그레이션에 대해 알아보려면 dockershim으로부터 마이그레이션을 참조하세요.

Kubernetes v1.30 이외의 버전을 사용 중인 경우 해당 버전의 문서를 확인하세요.

2 전제조건 설치 및 설정

2.1 네트워크 설정

기본적으로, 리눅스 커널은 인터페이스 간에 IPv4 패킷이 라우팅되는 것을 허용하지 않습니다. 대부분의 Kubernetes 클러스터 네트워킹 구현은 이 설정을 변경합니다(필요한 경우). 그러나 일부는 관리자가 직접 설정해주기를 기대할 수도 있습니다. (또한 일부는 다른 sysctl 매개변수를 설정하거나, 커널 모듈을 로드하는 등의 작업을 기대할 수도 있습니다. 특정 네트워크 구현에 대한 문서를 참조하세요.)

2.2 IPv4 패킷 포워딩 활성화

IPv4 패킷 포워딩을 수동으로 활성화하려면 다음 단계를 따르세요:

# 재부팅 후에도 유지되는 sysctl 파라미터 셋업
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF

# 재부팅 없이 sysctl 파라미터 적용
sudo sysctl --system

net.ipv4.ip_forward 값이 1로 설정되었는지 확인하려면 다음 명령어를 실행하세요:

sysctl net.ipv4.ip_forward

3 cgroup 드라이버

리눅스에서, 제어 그룹(cgroup)은 프로세스에 할당된 자원을 제약하기 위해 사용됩니다.

kubelet과 기본 컨테이너 런타임은 파드와 컨테이너에 대한 자원 관리(예: CPU/메모리 요청 및 제한)를 강제하기 위해 제어 그룹과 인터페이스해야 합니다. 제어 그룹과 인터페이스하기 위해, kubelet과 컨테이너 런타임은 cgroup 드라이버를 사용해야 합니다. kubelet과 컨테이너 런타임이 동일한 cgroup 드라이버를 사용하고 동일하게 설정하는 것이 중요합니다.

사용가능한 두 가지 cgroup 드라이버는 다음과 같습니다:

3.1 cgroupfs 드라이버

3.2 systemd cgroup 드라이버

3.3 kubeadm으로 생성한 클러스터의 드라이버를 systemd로 변경하기

4 CRI 버전 지원

5 컨테이너 런타임

5.1 containerd

5.2 CRI-O

5.3 Docker Engine

5.4 Mirantis 컨테이너 런타임

6 다음 내용

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}