LinuxKit的Kubernetes定制操作系统

源码: https://github.com/openthings/kubernetes

LinuxKit的Kubernetes定制

转载请注明来源:https://my.oschina.net/u/2306127/blog/1601103

该项目将示范如何通过Linuxkit创建一个最小的、不可更改的Kubernetes OS images,从而可以从任何HyperVisor中直接运行虚拟机镜像。

Build 要求

可以使用 LinuxKit tool 来从头构建Linuxkit的工具集。

如果已经安装 go ,使用 go get -u github.com/linuxkit/linuxkit/src/cmd/linuxkit 来安装Linuxkit。

在 MacOS 通过 brew tap 安装linuxkit(参考:https://my.oschina.net/u/2306127/blog/1600376)。细节说明在 linuxkit/homebrew-linuxkit ,简单运行如下:

brew tap linuxkit/linuxkit
brew install --HEAD linuxkit

从源代码构建需要安装:

  • GNU make
  • Docker
  • optionally qemu

构建 OS images

构建缺省的 OS images:

make all

这将基于 Docker Engine 构建并用于执行. 替代使用 cri-containerd,采用下面的方法:

make all KUBE_RUNTIME=cri-containerd

启动和初始化 OS images

启动Kubernetes master OS image 使用 hyperkit ( macOS),或者 qemu (Linux):

./boot.sh

或者,自动化初始化集群(无选项):

KUBE_MASTER_AUTOINIT="" ./boot.sh

得到master的 IP 地址:

ip addr show dev eth0

Login 到 kubelet container:

./ssh_into_kubelet.sh <master-ip>

手动初始化  master (带 kubeadm ),如果启动时没有 KUBE_MASTER_AUTOINIT

kubeadm-init.sh

一旦 kubeadm 推出, 确保拷贝 kubeadm join 参数, 然后尝试  kubectl get nodes 从 master得到信息。

如果希望运行single node cluster 在 master, 可以使用:

kubectl taint nodes --all node-role.kubernetes.io/master- 
--kubeconfig /etc/kubernetes/admin.conf

启动一个node,使用:

./boot.sh <n> [<join_args> ...]

启动 3 nodes,使用 3 个不同的 shells,然后运行:

shell1> ./boot.sh 1 --token bb38c6.117e66eabbbce07d 192.168.65.22:6443
shell2> ./boot.sh 2 --token bb38c6.117e66eabbbce07d 192.168.65.22:6443
shell3> ./boot.sh 3 --token bb38c6.117e66eabbbce07d 192.168.65.22:6443

平台相关信息

MacOS

按照上面的方法操作。

Linux

缺省情况下,linuxkit run 使用 user mode 网络,不支持从 host的访问。为了避免这个问题,可以使用端口转发等方式。

KUBE_RUN_ARGS="-publish 2222:22" ./boot.sh

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 root@localhost

但是,你不能运行worker nodes,因为单个 instances 互相之间无法看见。

为了使能instance之间的网络,需要 root 权限配置 bridge 和设置bridge mode privileged helper。

详细的参考 http://wiki.qemu.org/Features/HelperNetworking ,简单来说需要:

  • 在host设置和配置bridge (包括 DHCP etc) 。 (你可以重用 bridge,通过 virt-mananger 创建)

  • 设置 qemu-bridge-helper setuid root. 该位置与 distro不同, 可能为 /usr/lib/qemu/qemu-bridge-helper/usr/local/libexec/qemu-bridge-helper 或者其他。需要 chmod u+s «PATH»

  • 列出bridge,在上面第一步 /etc/qemu/bridge.conf 中,带一行类似 allow br0 (如果bridge名称为 br0)。

  • 设置 KUBE_NETWORKING=bridge,«name» 等。

    KUBE_NETWORKING="bridge,br0" ./boot.sh KUBE_NETWORKING="bridge,br0" ./boot.sh 1 «options»

配置

boot.sh 脚本 有几个配置变量,可以使用环境变量进行覆盖,如下方法:

KUBE_VCPUS=4 ./boot.sh

转载于:https://my.oschina.net/u/2306127/blog/1601103

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值