Kubernetes 노드에서 스왑 메모리 구성하기
Kubernetes 노드에서 스왑 메모리 구성하기
이 페이지는 kubeadm을 사용해 Kubernetes 노드에 스왑(swap) 메모리를 프로비저닝하고 구성하는 예시를 제공해요.
출처: 문서
본문
목표 (Objectives)
- kubeadm으로 Kubernetes 노드에 스왑 메모리 프로비저닝
- 암호화 및 비암호화 스왑 둘 다 구성하는 법 배우기
- 부팅 시 스왑 활성화하는 법 배우기
시작하기 전에
Kubernetes 클러스터가 있어야 하고 kubectl 명령줄 도구가 클러스터와 통신하도록 구성되어 있어야 해요. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 최소 두 개 있는 클러스터에서 실행하는 것을 권장해요. 아직 클러스터가 없다면 minikube를 이용해 만들거나, 아래 Kubernetes 플레이그라운드 중 하나를 사용할 수 있어요.
버전을 확인하려면 kubectl version을 입력해요.
클러스터에 Linux 운영체제를 실행하는 워커 노드가 최소 하나 있어야 해요. 이 데모에서는 kubeadm 도구가 kubeadm 설치 가이드에 설명된 단계에 따라 설치되어 있어야 해요.
스왑을 구성할 각 워커 노드에는 다음이 필요해요.
fallocatemkswapswapon- 암호화 스왑 공간용(권장)으로 추가로:
cryptsetup
kubeadm으로 스왑 지원 클러스터 설치
스왑 파일을 만들고 스왑 켜기
스왑이 활성화되어 있지 않다면 노드에 스왑을 프로비저닝해야 해요. 다음 섹션들은 암호화 및 비암호화 경우 둘 다에서 4GiB의 스왑을 만드는 방법을 보여줘요.
암호화 스왑 설정
암호화 스왑 파일은 다음과 같이 설정할 수 있어요. 이 예시가 cryptsetup 바이너리(대부분의 Linux 배포판에서 사용 가능)를 사용한다는 점을 명심해요.
# Allocate storage and restrict access
fallocate --length 4GiB /swapfile
chmod 600 /swapfile
# Create an encrypted device backed by the allocated storage
cryptsetup --type plain --cipher aes-xts-plain64 --key-size 256 -d /dev/urandom open /swapfile cryptswap
# Format the swap space
mkswap /dev/mapper/cryptswap
# Activate the swap space for paging
swapon /dev/mapper/cryptswap
비암호화 스왑 설정
비암호화 스왑 파일은 다음과 같이 설정할 수 있어요.
# Allocate storage and restrict access
fallocate --length 4GiB /swapfile
chmod 600 /swapfile
# Format the swap space
mkswap /swapfile
# Activate the swap space for paging
swapon /swapfile
스왑 활성화 확인
스왑은 swapon -s 명령이나 free 명령 둘 다로 확인할 수 있어요.
swapon -s 사용:
Filename Type Size Used Priority
/dev/dm-0 partition 4194300 0 -2
free -h 사용:
total used free shared buff/cache available
Mem: 3.8Gi 1.3Gi 249Mi 25Mi 2.5Gi 2.5Gi
Swap: 4.0Gi 0B 4.0Gi
부팅 시 스왑 활성화
스왑을 설정한 후, 부팅 시 스왑 파일을 시작하려면 보통 (암호화된) 스왑을 활성화하는 systemd 유닛을 설정하거나, /etc/fstab에 /swapfile swap swap defaults 0 0과 비슷한 줄을 추가해요.
systemd를 스왑 활성화에 사용하면, 시스템이 원한다면 스왑이 가용해질 때까지 kubelet 시작을 지연시킬 수 있어요. 비슷한 방식으로 systemd를 사용하면 서버가 kubelet(그리고 보통 컨테이너 런타임)이 종료될 때까지 스왑을 활성 상태로 유지하게 할 수 있어요.
kubelet 구성 설정
노드에서 스왑을 활성화한 후에는 kubelet이 그것을 사용하도록 구성해야 해요. 이 노드에 대한 스왑 동작을 선택해야 해요. 이 튜토리얼에서는 LimitedSwap 동작을 구성할 거예요.
kubelet 구성 파일을 찾아 편집하고:
failSwapOn을false로 설정memorySwap.swapBehavior를LimitedSwap으로 설정
# this fragment goes into the kubelet's configuration file
failSwapOn: false
memorySwap:
swapBehavior: LimitedSwap
이 구성이 적용되려면 kubelet을 재시작해야 해요. 보통 다음을 실행해 그렇게 해요.
systemctl restart kubelet.service
이제 kubelet이 건강하고, 필요에 따라 스왑 메모리를 사용하는 파드를 실행할 수 있다는 것을 발견할 거예요.