From 81e8c392035a56d6080071fe07c70385111697e4 Mon Sep 17 00:00:00 2001 From: Ilya Dmitrichenko Date: Sun, 16 Apr 2017 09:10:53 -0500 Subject: [PATCH] Rebase Kubernetes images on Apline Signed-off-by: Ilya Dmitrichenko --- projects/kubernetes/boot-master.sh | 2 +- projects/kubernetes/boot-node.sh | 2 +- projects/kubernetes/common.rb | 24 +++++----------------- projects/kubernetes/kubernetes.rb | 33 +++++++++++++++++++----------- 4 files changed, 28 insertions(+), 33 deletions(-) diff --git a/projects/kubernetes/boot-master.sh b/projects/kubernetes/boot-master.sh index b0515ca12..ccfe7aab7 100755 --- a/projects/kubernetes/boot-master.sh +++ b/projects/kubernetes/boot-master.sh @@ -2,4 +2,4 @@ disk="kube-master-disk.img" set -x rm -f "${disk}" -../../bin/moby run hyperkit -cpus 2 -mem 6144 -disk-size 6144 kube-master +../../bin/moby run hyperkit -cpus 2 -mem 4096 -disk-size 4096 kube-master diff --git a/projects/kubernetes/boot-node.sh b/projects/kubernetes/boot-node.sh index a88bc566a..762bb39e8 100755 --- a/projects/kubernetes/boot-node.sh +++ b/projects/kubernetes/boot-node.sh @@ -5,4 +5,4 @@ shift disk="kube-${name}-disk.img" set -x rm -f "${disk}" -../../bin/moby run hyperkit -cpus 2 -mem 4096 -disk-size 1024 -disk "${disk}" -data "${*}" kube-node +../../bin/moby run hyperkit -cpus 2 -mem 4096 -disk-size 4096 -disk "${disk}" -data "${*}" kube-node diff --git a/projects/kubernetes/common.rb b/projects/kubernetes/common.rb index 133a4c2a2..b902cd0c1 100644 --- a/projects/kubernetes/common.rb +++ b/projects/kubernetes/common.rb @@ -1,34 +1,20 @@ @image_name = "linuxkit/kubernetes" @versions = { - kubernetes: "v1.6.1", - weave: "v1.9.4", - tini: "v0.14.0", + kubernetes: 'v1.6.1', + weave: 'v1.9.4', + cni: '0799f5732f2a11b329d9e3d51b9c8f2e3759f2ff', } def install_packages pkgs cmds = [ - %(apt-get update -q), - %(apt-get upgrade -qy), - %(apt-get install -qy #{pkgs}), + %(apk update), + %(apk add #{pkgs.join(' ')}), ] cmds.each { |cmd| run cmd } end -def setup_apt_config - prepare = [ - 'curl --silent "https://packages.cloud.google.com/apt/doc/apt-key.gpg" | apt-key add -', - 'echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list', - ] - - dependencies = %(curl apt-transport-https) - - install_packages dependencies - - prepare.each { |cmd| run cmd } -end - def create_shell_wrapper script, path run "echo \"#!/bin/sh\n#{script}\n\" > #{path} && chmod 0755 #{path}" end diff --git a/projects/kubernetes/kubernetes.rb b/projects/kubernetes/kubernetes.rb index ee4c30ab4..6f45d8a10 100644 --- a/projects/kubernetes/kubernetes.rb +++ b/projects/kubernetes/kubernetes.rb @@ -1,49 +1,58 @@ import 'common.rb' -from "gcr.io/google_containers/hyperkube-amd64:#{@versions[:kubernetes]}" +from "alpine:edge" def install_node_dependencies kube_release_artefacts = "https://dl.k8s.io/#{@versions[:kubernetes]}/bin/linux/amd64" - weave_launcher = "https://frontend.dev.weave.works/k8s/v1.6/net?v=#{@versions[:weave]}" + cni_release_artefacts = "https://dl.k8s.io/network-plugins/cni-amd64-#{@versions[:cni]}.tar.gz" + weave_launcher = "https://cloud.weave.works/k8s/v1.6/net?v=#{@versions[:weave]}" download_files = [ - "/etc/weave.yaml" => { + '/etc/weave.yaml' => { url: weave_launcher, mode: '0644', }, - "/usr/bin/kubeadm" => { + '/tmp/cni.tgz' => { + url: cni_release_artefacts, + mode: '0644', + }, + '/usr/bin/kubelet' => { + url: "#{kube_release_artefacts}/kubelet", + mode: '0755', + }, + '/usr/bin/kubeadm' => { url: "#{kube_release_artefacts}/kubeadm", mode: '0755', }, - "/usr/bin/tini" => { - url: "https://github.com/krallin/tini/releases/download/#{@versions[:tini]}/tini", + '/usr/bin/kubectl' => { + url: "#{kube_release_artefacts}/kubectl", mode: '0755', }, ] download_files.each do |file| file.each do |dest,info| - run %(curl --insecure --output "#{dest}" --fail --silent --location "#{info[:url]}") + run %(curl --output "#{dest}" --fail --silent --location "#{info[:url]}") run %(chmod "#{info[:mode]}" "#{dest}") end end + + run "mkdir -p /opt/cni/bin /etc/cni/net.d && tar xzf /tmp/cni.tgz -C /opt/cni && rm -f /tmp/cni.tgz" end def kubelet_cmd %w( - /hyperkube kubelet + kubelet --kubeconfig=/var/lib/kubeadm/kubelet.conf --require-kubeconfig=true --pod-manifest-path=/var/lib/kubeadm/manifests --allow-privileged=true --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --cgroups-per-qos=false --enforce-node-allocatable="" --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin ) - #--node-ip="192.168.65.2" end -setup_apt_config -run "rm -f /etc/cni/net.d/10-containernet.conf" -install_packages 'kubernetes-cni' +kubelet_dependencies = %w(libc6-compat tini util-linux iproute2 iptables ebtables ethtool socat curl) +install_packages kubelet_dependencies install_node_dependencies # Exploit shared mounts, give CNI paths back to the host