Rebase Kubernetes images on Apline

Signed-off-by: Ilya Dmitrichenko <errordeveloper@gmail.com>
This commit is contained in:
Ilya Dmitrichenko 2017-04-16 09:10:53 -05:00
parent 491439c1d8
commit 81e8c39203
4 changed files with 28 additions and 33 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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