LinuxKit的Kubernetes定製操做系統

源碼: https://github.com/openthings/kubernetesnode

LinuxKit的Kubernetes定製

轉載請註明來源:http://www.javashuo.com/article/p-tywdsgkq-du.htmllinux

該項目將示範如何經過Linuxkit建立一個最小的、不可更改的Kubernetes OS images,從而能夠從任何HyperVisor中直接運行虛擬機鏡像。git

Build 要求

可使用 LinuxKit tool 來從頭構建Linuxkit的工具集。github

若是已經安裝 go ,使用 go get -u github.com/linuxkit/linuxkit/src/cmd/linuxkit 來安裝Linuxkit。shell

在 MacOS 經過 brew tap 安裝linuxkit(參考:https://my.oschina.net/u/2306127/blog/1600376)。細節說明在 linuxkit/homebrew-linuxkit ,簡單運行以下:網絡

brew tap linuxkit/linuxkit
brew install --HEAD linuxkit

從源代碼構建須要安裝:ssh

  • GNU make
  • Docker
  • optionally qemu

構建 OS images

構建缺省的 OS images:工具

make all

這將基於 Docker Engine 構建並用於執行. 替代使用 cri-containerd,採用下面的方法:ui

make all KUBE_RUNTIME=cri-containerd

啓動和初始化 OS images

啓動Kubernetes master OS image 使用 hyperkit ( macOS),或者 qemu (Linux):spa

./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
相關文章
相關標籤/搜索