modulus
Flatcar Linux를 위한 커널 모듈을 자동으로 컴파일합니다.
Build Status
설치 (Installation)
Kubernetes 클러스터에 Modulus를 배포하여 NVIDIA GPU 드라이버를 설치하고 유지 관리하려면 다음을 실행합니다:
kubectl apply -f https://raw.githubusercontent.com/squat/modulus/main/nvidia/daemonset.yaml
배경 (Background)
Flatcar Linux에서 드라이버를 컴파일하는 것은 일반적으로 간단하지 않습니다. 왜냐하면 해당 OS는 빌드 도구를 포함하고 있지 않고 커널 소스에 접근할 명확한 방법이 없기 때문입니다.
Modulus는 [1]에서 문서화되었고 [2]에서 사용된 것처럼, Flatcar Linux 개발 환경 내에서 커널 모듈을 컴파일하여 작동합니다.
게다가, Flatcar Linux는 시스템을 안전하게 유지하기 위해 자동으로 업데이트되기 때문에, 커널 모듈이 쉽게 구식이 될 수 있습니다.
Modulus는 OS가 업그레이드될 때 새로운 버전의 Flatcar Linux를 위한 커널 모듈을 자동으로 컴파일하여, 장치가 재부팅될 때 새로운 모듈을 사용할 수 있도록 합니다.
Modulus는 Kubernetes DaemonSet으로 사용되어 워커 노드를 최신 상태로 유지하거나 systemd 템플릿 유닛으로 사용될 수 있으며, 커널 모듈을 컴파일하는 모든 스크립트와 결합할 수 있습니다.
이 프로젝트는 현재 NVIDIA 및 WireGuard 커널 모듈 생성을 지원하지만, 모든 모듈을 지원하도록 확장할 수 있습니다.
[1] https://github.com/coreos/docs/blob/master/os/kernel-modules.md
[2] https://github.com/Clarifai/coreos-nvidia
NVIDIA 커널 모듈 컴파일 (Compiling NVIDIA Kernel Modules)
Modulus를 사용하면 NVIDIA GPU용 커널 모듈을 자동으로 컴파일하기가 쉬워집니다. 자세한 지침은 NVIDIA README를 참조하십시오.
WireGuard 커널 모듈 컴파일 (Compiling WireGuard Kernel Modules)
자세한 지침은 WireGuard README를 참조하십시오.
배포 (Distribution)
컴파일 후, Modulus는 모든 컴파일된 에셋을 설치하고 디스크에 캐시합니다. 또한 Modulus는 사용자가 한 번 드라이버를 컴파일하여 여러 머신에서 재사용할 수 있도록 컴파일된 커널 모듈을 S3로 자동 업로드하려고 시도합니다. 이 기능을 활성화하려면, 다음 환경 변수를 Modulus DaemonSet에 제공하십시오:
AWS_ACCESS_KEY_ID=<your-aws-access-key-id>
AWS_SECRET_ACCESS_KEY=<your-aws-secret-access-key>
MODULUS_S3_BUCKET=s3://your.s3/bucket-name/
Systemd 설치 (Systemd Installation)
Modulus는 Kubernetes에 의존하지 않고도 Systemd 서비스 세트로 사용될 수 있습니다: