mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-22 02:21:34 +00:00
Merge pull request #1644 from errordeveloper/kubernetes-alpine
Rebase Kubernetes images on Alpine
This commit is contained in:
commit
9a068e792a
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user