创建kata的K8s集群
Overview
本文介绍下如何创建kata的k8s集群, kata项目链接:https://github.com/kata-containers kata是什么不介绍了,能看到这篇文章的相信对kata都已经有一定了解了。
本文参考了官方的安装说明: https://github.com/kata-containers/documentation/blob/master/how-to/how-to-use-k8s-with-cri-containerd-and-kata.md 实际上仅仅安装没有什么好讲的,文档里讲的很清楚了。但是在我们恶劣的大网络环境下,就变得有点技巧了。
以下为正文
安装环境
Virtual Machine:
OS: Ubuntu 18.04
CPU: 4
Memory: 8G
在虚拟化环境中,务必保证嵌套虚拟化打开。
- 虚拟化软件必须要支持
可以在guest OS里面通过以下命令检查:
1$ sudo grep -E "(vmx|svm)" --color=always /proc/cpuinfo
如果没有显示则不支持硬件虚拟化。需要打开相应的虚拟化选项,如果是物理机则需要bios里面启用虚拟化支持。
- 启动kvm_intel的嵌套虚拟化支持
1# modprobe -r kvm_intel
2# modprobe kvm_intel nested=1
安装kata-containers
参考:
https://github.com/kata-containers/documentation/blob/master/install/ubuntu-installation-guide.md
运行以下命令:
1$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/katacontainers:/release/xUbuntu_$(lsb_release -rs)/ /' > /etc/apt/sources.list.d/kata-containers.list"
2$ curl -sL http://download.opensuse.org/repositories/home:/katacontainers:/release/xUbuntu_$(lsb_release -rs)/Release.key | sudo apt-key add -
3$ sudo -E apt-get update
4$ sudo -E apt-get -y install kata-runtime kata-proxy kata-shim
安装docker
参考:
https://github.com/kata-containers/documentation/blob/master/install/docker/ubuntu-docker-install.md
实际上在本文写成之时,k8s+docker+kata的路子还没走通,必须依赖一个将annotation透传的补丁:
PR: https://github.com/moby/moby/pull/37289
docker公司一向强势,这个pr虽然很有用,但是也不知道还要多久才会被合入。
所以本文运行kata的k8s集群使用的是cri-containerd而不是docker。
不过笔者仍然建议先安装docker,来尝试kata-containers。你可以简单的运行以下命令:
1$ docker run -ti --runtime kata busybox sh
2#
运行成功后可以通过 ps -ef | grep qemu
来查看kata-containers后台对应的qemu进程。
安装cri-containerd
参考: https://github.com/containerd/cri/blob/master/docs/installation.md
step 0: 安装依赖
1$ sudo apt-get update
2$ sudo apt-get install libseccomp2
step 1: 下载containerd的tar包:
1export VERSION=1.1.2
2$ wget https://storage.googleapis.com/cri-containerd-release/cri-containerd-${VERSION}.linux-amd64.tar.gz
这一步就要用到翻墙大法了,翻墙流量也会费钱的,所以给大家提供个网盘链接吧:
安装cni插件
这里简化一下,使用标准的cni插件。
参考: https://github.com/containernetworking/cni
1$ git clone https://github.com/containernetworking/plugins
2$ cd plugins
3$ ./build.sh
4$ mkdir -p /etc/cni/net.d
5$ cat >/etc/cni/net.d/10-mynet.conf <<EOF
6{
7 "cniVersion": "0.2.0",
8 "name": "mynet",
9 "type": "bridge",
10 "bridge": "cni0",
11 "isGateway": true,
12 "ipMasq": true,
13 "ipam": {
14 "type": "host-local",
15 "subnet": "10.22.0.0/16",
16 "routes": [
17 { "dst": "0.0.0.0/0" }
18 ]
19 }
20}
21EOF
22$ cat >/etc/cni/net.d/99-loopback.conf <<EOF
23{
24 "cniVersion": "0.2.0",
25 "name": "lo",
26 "type": "loopback"
27}
28EOF