Sysbox Container Runtime

김건호·2024년 8월 31일

sysbox란 ?

향상 된 컨테이너 격리를 위한 컨테이너 런타임

  • 모든 컨테이너는 리눅스 유저로 실행 됨
  • 컨테이너 내부의 procfs와 sysfs 를 가상화
  • 컨테이너 내부에서 호스트 정보를 숨김
  • 컨테이너의 초기 마운트와 기타 작업을 금지

https://github.com/nestybox/sysbox

crio나 containerd에 추가로 sysbox를 배포하여 컨테이너를 격리시키는 기술

쿠버네티스 환경에서 sysbox runtime 실행

환경

NAME     STATUS                     ROLES                  AGE    VERSION
pps-26   Ready                      control-plane,master   579d   v1.21.14

회사에 있는 서버를 써서 버전이 많이 낮긴 하지만.. 일단 해보자..

yaml

apiVersion: v1
kind: Pod
metadata:
  name: ubu-bio-systemd-docker
  annotations:
    io.kubernetes.cri-o.userns-mode: "auto:size=65536"
spec:
  runtimeClassName: sysbox-runc
  containers:
  - name: ubu-bio-systemd-docker
    image: registry.nestybox.com/nestybox/ubuntu-bionic-systemd-docker
    command: ["/sbin/init"]
  restartPolicy: Never

에러..

 kubectl apply -f sys.yaml
Error from server (Forbidden): error when creating "sys.yaml": 
pods "ubu-bio-systemd-docker" is forbidden: pod rejected: RuntimeClass "sysbox-runc" not found

apply 하려고 하니까 에러가 난다..

sysbox runtime 설치

 ⚡ root@pps-26  ~  kubectl label nodes pps-26 sysbox-install=yes
node/pps-26 labeled
 ⚡ root@pps-26  ~  kubectl apply -f https://raw.githubusercontent.com/nestybox/sysbox/master/sysbox-k8s-manifests/sysbox-install.yaml
serviceaccount/sysbox-label-node created
clusterrole.rbac.authorization.k8s.io/sysbox-node-labeler created
clusterrolebinding.rbac.authorization.k8s.io/sysbox-label-node-rb created
daemonset.apps/sysbox-deploy-k8s created
runtimeclass.node.k8s.io/sysbox-runc created


설치를 빼먹고 파드만 배포하려고 했던거 같아서 일단 설치를 해보자

kubectl get pods -A | grep sysbox
kube-system                         sysbox-deploy-k8s-6rxv4 

배포 확인

 kubectl apply -f sys.yaml
pod/ubu-bio-systemd-docker created

하고 보니까 pending으로 진행중

Sysbox can be installed in all or some of the Kubernetes cluster worker nodes, according to your needs.
문구가 github에 있는데 마스터에 taint 푸는 내 서버라 안되는거 같다...

Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  31s (x6 over 3m17s)  default-scheduler  0/3 nodes are available: 3 node(s) didn't match Pod's node affinity/selector.
profile
네.. 뭐.. 김건호입니다...

0개의 댓글