이세개발
article thumbnail
Published 2023. 10. 25. 10:21
proxmox lxc 에 k8s 설치오류 해결 Infra/OS

 LXC 컨테이너 내부에 Kubernetes를 설치하려면 바로 설치가 되지 않는다.
설치하기 위해 몇 가지 설정을 바꿔야한다.

메인노드 설정

메인노드에서 쉘을 열고 설정한다.

vi /etc/sysctl.conf

net.ipv4.ip_forward=1 주석 해제
맨아래 vm.swapiness=0 추가

net.ipv4.ip_forward=1, vm.swapiness=0

스왑 해제 (스왑 해제하고 재부팅시 스왑 켜지지 않는 명령어)

swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

 

커널 module 설정

cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

컨테이너 생성

권한없는 컨테이너를 체크 해제, 스왑0 (필수) 이후 원하는 리소스로 생성한다.
그후 생성한 컨테이너를 실행하면 안된다.

중첩을 켠다(옵션, 특징)

메인노드 설정2

다시 메인노드 shall 로 돌아와서

cd /etc/pve/lxc

cd /etc/pve/lxc
ls
vi xxx.conf


내부에 만든 컨테이너의 설정파일을 수정한다.

맨 뒤에 아래 내용을 추가한다.

lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.mount.auto: "proc:rw sys:rw"

추가한 모습

 

LXC 내부 설정

생성한 컨테이너를 실행한다.

다음과 같은 배치파일을 생성한다.

sudo vi /etc/rc.local
#!/bin/sh -e
if [ ! -e /dev/kmsg ]; then
ln -s /dev/console /dev/kmsg
fi
mount --make-rshared /

스크립트를 실행한다.

chmod +x /etc/rc.local
/etc/rc.local


이걸로 설정이 완료되었고, kubernetes를 설치할 준비가 되었다.
추가로 템플릿을 만들어두면 여러개의 노드를 만들때 편리하게 할 수 있다.

참고
https://kevingoos.medium.com/installing-k3s-in-an-lxc-container-2fc24b655b93

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!