Merge pull request #1644 from errordeveloper/kubernetes-alpine

Rebase Kubernetes images on Alpine
This commit is contained in:
Justin Cormack 2017-04-16 10:51:55 -05:00 committed by GitHub
commit 9a068e792a
4 changed files with 29 additions and 34 deletions

View File

@ -2,4 +2,4 @@
disk="kube-master-disk.img" disk="kube-master-disk.img"
set -x set -x
rm -f "${disk}" 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" disk="kube-${name}-disk.img"
set -x set -x
rm -f "${disk}" 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" @image_name = "linuxkit/kubernetes"
@versions = { @versions = {
kubernetes: "v1.6.1", kubernetes: 'v1.6.1',
weave: "v1.9.4", weave: 'v1.9.4',
tini: "v0.14.0", cni: '0799f5732f2a11b329d9e3d51b9c8f2e3759f2ff',
} }
def install_packages pkgs def install_packages pkgs
cmds = [ cmds = [
%(apt-get update -q), %(apk update),
%(apt-get upgrade -qy), %(apk add #{pkgs.join(' ')}),
%(apt-get install -qy #{pkgs}),
] ]
cmds.each { |cmd| run cmd } cmds.each { |cmd| run cmd }
end 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 def create_shell_wrapper script, path
run "echo \"#!/bin/sh\n#{script}\n\" > #{path} && chmod 0755 #{path}" run "echo \"#!/bin/sh\n#{script}\n\" > #{path} && chmod 0755 #{path}"
end end

View File

@ -1,49 +1,58 @@
import 'common.rb' import 'common.rb'
from "gcr.io/google_containers/hyperkube-amd64:#{@versions[:kubernetes]}" from "alpine:edge"
def install_node_dependencies def install_node_dependencies
kube_release_artefacts = "https://dl.k8s.io/#{@versions[:kubernetes]}/bin/linux/amd64" 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 = [ download_files = [
"/etc/weave.yaml" => { '/etc/weave.yaml' => {
url: weave_launcher, url: weave_launcher,
mode: '0644', 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", url: "#{kube_release_artefacts}/kubeadm",
mode: '0755', mode: '0755',
}, },
"/usr/bin/tini" => { '/usr/bin/kubectl' => {
url: "https://github.com/krallin/tini/releases/download/#{@versions[:tini]}/tini", url: "#{kube_release_artefacts}/kubectl",
mode: '0755', mode: '0755',
}, },
] ]
download_files.each do |file| download_files.each do |file|
file.each do |dest,info| 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}") run %(chmod "#{info[:mode]}" "#{dest}")
end end
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 end
def kubelet_cmd def kubelet_cmd
%w( %w(
/hyperkube kubelet kubelet
--kubeconfig=/var/lib/kubeadm/kubelet.conf --require-kubeconfig=true --kubeconfig=/var/lib/kubeadm/kubelet.conf --require-kubeconfig=true
--pod-manifest-path=/var/lib/kubeadm/manifests --allow-privileged=true --pod-manifest-path=/var/lib/kubeadm/manifests --allow-privileged=true
--cluster-dns=10.96.0.10 --cluster-domain=cluster.local --cluster-dns=10.96.0.10 --cluster-domain=cluster.local
--cgroups-per-qos=false --enforce-node-allocatable="" --cgroups-per-qos=false --enforce-node-allocatable=""
--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin
) )
#--node-ip="192.168.65.2"
end end
setup_apt_config kubelet_dependencies = %w(libc6-compat util-linux iproute2 iptables ebtables ethtool socat curl)
run "rm -f /etc/cni/net.d/10-containernet.conf" install_packages kubelet_dependencies
install_packages 'kubernetes-cni'
install_node_dependencies install_node_dependencies
# Exploit shared mounts, give CNI paths back to the host # Exploit shared mounts, give CNI paths back to the host
@ -63,6 +72,6 @@ flatten
env KUBECONFIG: "/etc/kubernetes/admin.conf" env KUBECONFIG: "/etc/kubernetes/admin.conf"
set_exec entrypoint: %w(tini -s --), cmd: %w(kubelet.sh) set_exec entrypoint: %w(kubelet.sh)
tag "#{@image_name}:latest" tag "#{@image_name}:latest"