Quark 컨테이너에 오신 것을 환영합니다.
이 저장소는 Quark Containers 코드의 홈입니다.
Quark Container는 다음 기능을 갖춘 고성능 보안 컨테이너 런타임입니다.
성능 조각은performance.pdf입니다. 자세한 테스트 단계 및 결과는 여기에 있습니다.
Quark Container는 아래와 같은 클래식 Linux 가상 머신 아키텍처를 사용합니다. 여기에는 QVisor라는 HyperVisor와 QKernel이라는 게스트 커널이 포함되어 있습니다. Linux/Windows와 같은 표준 OS 이미지가 Qemu에서 실행될 수 있는 일반적인 Linux 가상 머신 설계와는 다릅니다. QVisor와 QKernel은 긴밀하게 결합되어 있습니다. QVisor는 QKernel만 지원합니다.
Quark Container의 하이 레벨 디자인은 다음과 같습니다. 다음 단계에 따라 컨테이너 애플리케이션 요청을 처리합니다.
Quark Container는 RDMA 연결, 즉 TSoR을 통해 컨테이너 응용 프로그램의 TCP 트래픽 전송을 지원합니다. TSoR은 K8S 클러스터의 컨테이너 네트워크 공급자이며 기존 TCP 기반 컨테이너 애플리케이션은 아무런 수정 없이 RDMA를 통해 데이터를 전송할 수 있습니다. TSoR은 TCP/IP 프로토콜 스택 워크로드를 RDMA NIC로 오프로드합니다. 더 적은 CPU 공간으로 더 높은 처리량과 낮은 대기 시간을 달성할 수 있습니다. TSOR 테스트 결과는 Quark + TSoR과 RunC + Flannel을 비교한 Redis 벤치마크 테스트 결과입니다. TSoR은 Flannel에 비해 5배 향상된 처리량을 보여줍니다. TSoR 아키텍처는 아래와 같습니다. 소개는 여기
Quark는 기본적으로 X86-64를 지원합니다. aarch64 지원은 예비 단계이며 활발하게 개발 중입니다. 향후 다른 아키텍처도 제공될 예정입니다.
Quark는 Rust 언어로 개발되었습니다. 빌드는 밤마다 Rust를 설치해야 합니다. 현재 알려진 양호한 버전 nightly-2023-12-11-x86_64-unknown-linux-gnu
사용하십시오(aarch64 빌드의 경우 x86_64
aarch64
로 교체).
rustup toolchain install nightly-2023-12-11-x86_64-unknown-linux-gnu
rustup default nightly-2023-12-11-x86_64-unknown-linux-gnu
현재 툴체인에 Rust-src 구성요소를 추가합니다.
rustup component add rust-src
그리고 qkernel 크로스 컴파일을 위해 "cargo-xbuild"를 설치합니다.
cargo install cargo-xbuild
libcap 라이브러리 설치
sudo apt-get install libcap-dev
또한 RDMA 모듈 컴파일을 위한 몇 가지 추가 라이브러리:
sudo apt-get install build-essential cmake gcc libudev-dev libnl-3-dev
libnl-route-3-dev ninja-build pkg-config valgrind python3-dev cython3
python3-docutils pandoc libclang-dev
또한 GPU 모듈 컴파일을 위한 추가 라이브러리도 있습니다.
(Nvidia가 아닌 시스템에서도 다음 명령을 실행하여 GPU 모듈 컴파일 기능을 얻을 수 있습니다.)
sudo apt-get install libelf-dev nvidia-driver-535
git clone [email protected]:QuarkContainer/Quark.git
cd Quark
make
make install
make cuda_all
make install
make install
실행할 때 둘 다 /usr/local/bin/ 폴더에 복사되었습니다. "quark"에는 QVisor 코드가 포함되어 있으며 OCI 인터페이스도 구현합니다.sudo mkdir /var/log/quark
sudo systemctl restart docker
hello-world docker 샘플 애플리케이션은 다음과 같이 실행될 수 있습니다.
sudo systemctl restart docker
sudo systemctl restart docker.service
docker run --rm --runtime=quark hello-world
Quark Container의 구성 파일은 /etc/quark/config.json 에 있습니다. 구성 세부 사항은 미정입니다...
Quark Container의 디버그 로그는 /var/log/quark/quark.log에 저장됩니다. /etc/quark/config.json의 "DebugLevel"을 통해 활성화하거나 비활성화할 수 있습니다. "DebugLevel"에는 아래와 같이 5가지 가능한 값이 있습니다.
Off,
Error,
Warn,
Info,
Debug,
Trace,
로그가 활성화된 경우(예: 디버그) Quark Container로 docker 이미지를 실행하면 /var/log/quark/quark.log에 로그가 생성됩니다. 추가 디버깅 팁은 위키를 참조하세요.
Quark 컨테이너 및 RDMA 지원을 사용하여 k8s를 설정하려면 이 링크를 참조하십시오.
Quark는 이제 예비 aarch64 지원을 제공합니다(아직 개발 중).
최신 arm64 아키텍처에 대한 참고 사항 :
최신 arm64 아키텍처는 커널(el1)이 사용자(el0) 메모리에 액세스하지 못하도록 pstate에 PAN(Privilege Access Never) 비트를 추가합니다. 전체 지원은 WIP입니다. 임시 해결 방법으로 qkernel에서 PAN을 삭제하면 됩니다. 이렇게 하려면 이 패치를 수동으로 적용해야 합니다.
~quark/[email protected]
로 이메일을 보내면 Quark 메일링 리스트를 사용할 수 있습니다. 목록에 가입하려면 빈 이메일을 ~quark/[email protected]
로 보내십시오. 메일링리스트 사용에 대해 더 배우려면 메일링 리스트 에티켓을 참조하십시오.