본문 바로가기
개발 및 운영/Kubernetes

kata-containers 설치

by Joseph.Lee 2022. 6. 21.

1. modules 등록 & snap & loop 제거

(loop device 가 있으면 동작을 안한다. 나만 그런가..)

# snap list
# snap remove (...) # 모든 snap 제거 
# apt remove snapd lxd-installer multipath-tools
# rm /dev/loop*

# cat <<EOF > /etc/rc.local
#!/bin/bash
rm /dev/loop*
EOF
# chmod +x /etc/rc.local
# systemctl enable rc-local.service

 

/etc/modules 에 아래 내용 추가

br_netfilter
vsock
vhost_vsock

 

2. release 에서 kata-containers 를 다운받아 루트(/) 에 푼다.

그럼 /opt/kata 가 생김

 

3. containerd 설정

# mkdir -p /etc/containerd
# containerd config default > /etc/containerd/config.toml

# cd /usr/local/bin
/usr/local/bin# ln -s /opt/kata/bin/kata-monitor
/usr/local/bin# ln -s /opt/kata/bin/kata-runtime
/usr/local/bin# ln -s /opt/kata/bin/containerd-shim-kata-v2
/usr/local/bin# ln -s /opt/kata/bin/kata-collect-data.sh

 

/etc/containerd/config.toml 에 아래 내용 추가

        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes."kata-qemu"]
          runtime_type = "io.containerd.kata.v2"
          privileged_without_host_devices = true
          # [plugins."io.containerd.grpc.v1.cri".containerd.runtimes."kata-qemu".options]
          #   ConfigPath = "/etc/kata-containers/configuration-qemu.toml"

 

커널 버전에 따라

"Could not create the sandbox resource controller cgroups: cgroup mountpoint does not exist" 이런 오류 발생 시

$ sudo sed -i -e 's/^GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"/' /etc/default/grub
$ sudo update-grub2
$ sudo reboot

으로 cgroup2 대신 cgroup1 을 써야 한다.

 

https://github.com/kata-containers/kata-containers/blob/main/docs/design/host-cgroups.md#cgroups-v2

설정 파일을 만들고 위 내용을 적용해야 할 수 있다.

 

3. Kubernetes 설치

https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

 

그리고 (https://github.com/kata-containers/kata-containers/blob/main/docs/how-to/how-to-use-k8s-with-cri-containerd-and-kata.md)

$ sudo mkdir -p  /etc/systemd/system/kubelet.service.d/
$ cat << EOF | sudo tee  /etc/systemd/system/kubelet.service.d/0-containerd.conf
[Service]                                                 
Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
EOF

$ sudo systemctl daemon-reload

 

그 다음은...

반응형

댓글