mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-19 09:16:29 +00:00
Merge pull request #1572 from errordeveloper/kubernetes
Working single-node Kubernetes setup
This commit is contained in:
commit
64933fa292
@ -1,4 +1,4 @@
|
||||
image_name = "errordeveloper/mobykube"
|
||||
@image_name = "mobylinux/kubernetes"
|
||||
|
||||
@versions = {
|
||||
kubernetes: "v1.6.1",
|
||||
@ -65,8 +65,8 @@ end
|
||||
def kubelet_cmd
|
||||
%w(
|
||||
/hyperkube kubelet
|
||||
--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true
|
||||
--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true
|
||||
--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=""
|
||||
)
|
||||
@ -74,17 +74,28 @@ def kubelet_cmd
|
||||
#--node-ip="192.168.65.2"
|
||||
end
|
||||
|
||||
def create_shell_wrapper script, path
|
||||
run "echo \"#!/bin/sh\n#{script}\n\" > #{path} && chmod 0755 #{path}"
|
||||
end
|
||||
|
||||
def create_kubelet_wrapper
|
||||
kubelet_wrapper = "#!/bin/sh\nuntil #{kubelet_cmd.join(' ')} ; do sleep 1 ; done"
|
||||
run "echo \"#{kubelet_wrapper}\" > /usr/bin/kubelet.sh && chmod 0755 /usr/bin/kubelet.sh"
|
||||
create_shell_wrapper "until #{kubelet_cmd.join(' ')} ; do sleep 1 ; done", '/usr/bin/kubelet.sh'
|
||||
end
|
||||
|
||||
def create_kubeadm_wrappers
|
||||
#create_shell_wrapper 'env KUBE_KUBERNETES_DIR=/var/lib/kubeadm kubeadm init --skip-preflight-checks --kubernetes-version v1.6.1 --cert-dir /var/lib/kubeadm/pki', '/usr/bin/kubeadm-init.sh'
|
||||
create_shell_wrapper "kubeadm init --skip-preflight-checks --kubernetes-version v1.6.1", '/usr/bin/kubeadm-init.sh'
|
||||
end
|
||||
|
||||
install_dependencies
|
||||
|
||||
create_kubelet_wrapper
|
||||
create_kubeadm_wrappers
|
||||
|
||||
flatten
|
||||
|
||||
env KUBECONFIG: "/etc/kubernetes/admin.conf"
|
||||
|
||||
set_exec entrypoint: %w(tini -s --), cmd: %w(kubelet.sh)
|
||||
|
||||
tag "#{image_name}:master"
|
||||
tag "#{@image_name}:latest"
|
||||
|
@ -8,7 +8,10 @@ build-container-images: Boxfile
|
||||
boxbuilder/box:master Boxfile
|
||||
|
||||
push-container-images: build-container-image
|
||||
docker push errordeveloper/mobykube:master
|
||||
docker push mobylinux/kubernetes:latest
|
||||
|
||||
build-vm-images:
|
||||
../../bin/moby build -name kube-master kube-master.yml
|
||||
|
||||
clean:
|
||||
rm -f kube-master-bzImage kube-master-cmdline kube-master-disk.img kube-master-initrd.img
|
||||
|
@ -11,12 +11,12 @@ make
|
||||
|
||||
Boot Kubernetes master OS image using `hyperkit` on macOS:
|
||||
```
|
||||
../../bin/moby run hyperkit -mem 4096 -cpus 2 kube-master
|
||||
../../bin/moby run hyperkit -cpus 2 -mem 4096 -disk-size 2048 kube-master
|
||||
```
|
||||
|
||||
Manually initialise master with `kubeadm`:
|
||||
```
|
||||
runc exec kubelet kubeadm init --skip-preflight-checks
|
||||
runc exec kubelet kubeadm-init.sh
|
||||
```
|
||||
|
||||
Once `kubeadm` exits, try `runc exec kubelet kubectl get nodes`.
|
||||
|
@ -2,7 +2,10 @@ kernel:
|
||||
image: "mobylinux/kernel:4.9.x"
|
||||
cmdline: "console=ttyS0 console=tty0 page_poison=1"
|
||||
init:
|
||||
- "mobylinux/init:c0007f0cdf1ef821a981fcc676e3f1c2dd9ab5b1"
|
||||
- mobylinux/init:671bdce1ed0803daeb35e83e4bcd576bb449ea35
|
||||
- mobylinux/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9
|
||||
- mobylinux/containerd:c7f6ecdcbcb615a53edee556ba03c7c873bc8488
|
||||
- mobylinux/ca-certificates:eabc5a6e59f05aa91529d80e9a595b85b046f935
|
||||
onboot:
|
||||
- name: sysctl
|
||||
image: "mobylinux/sysctl:2cf2f9d5b4d314ba1bfc22b2fe931924af666d8c"
|
||||
@ -12,6 +15,11 @@ onboot:
|
||||
capabilities:
|
||||
- CAP_SYS_ADMIN
|
||||
readonly: true
|
||||
- name: binfmt
|
||||
image: "mobylinux/binfmt:bdb754f25a5d851b4f5f8d185a43dfcbb3c22d01"
|
||||
binds:
|
||||
- /proc/sys/fs/binfmt_misc:/binfmt_misc
|
||||
readonly: true
|
||||
- name: format
|
||||
image: "mobylinux/format:53748000acf515549d398e6ae68545c26c0f3a2e"
|
||||
binds:
|
||||
@ -19,6 +27,15 @@ onboot:
|
||||
capabilities:
|
||||
- CAP_SYS_ADMIN
|
||||
- CAP_MKNOD
|
||||
- name: mount
|
||||
image: "mobylinux/mount:d2669e7c8ddda99fa0618a414d44261eba6e299a"
|
||||
binds:
|
||||
- /dev:/dev
|
||||
- /var:/var:rshared,rbind
|
||||
capabilities:
|
||||
- CAP_SYS_ADMIN
|
||||
rootfsPropagation: shared
|
||||
command: ["/mount.sh", "/var/lib"]
|
||||
services:
|
||||
- name: rngd
|
||||
image: "mobylinux/rngd:3dad6dd43270fa632ac031e99d1947f20b22eec9@sha256:1c93c1db7196f6f71f8e300bc1d15f0376dd18e8891c8789d77c8ff19f3a9a92"
|
||||
@ -37,8 +54,16 @@ services:
|
||||
- CAP_NET_RAW
|
||||
net: host
|
||||
oomScoreAdj: -800
|
||||
- name: sshd
|
||||
image: "mobylinux/sshd:160631d59fffc13d523ff7f09b3b49538d34b9cd"
|
||||
capabilities:
|
||||
- all
|
||||
net: host
|
||||
pid: host
|
||||
binds:
|
||||
- /root/.ssh:/root/.ssh
|
||||
- name: docker
|
||||
image: "mobylinux/docker-ce:f6505961df89ca6b5d024f1ac5a6b986359786d1"
|
||||
image: "mobylinux/docker-ce:741bf21513328f674e0cdcaa55492b0b75974e08"
|
||||
capabilities:
|
||||
- all
|
||||
net: host
|
||||
@ -49,9 +74,9 @@ services:
|
||||
binds:
|
||||
- /dev:/dev
|
||||
- /lib/modules:/lib/modules
|
||||
- /var/run:/var/run
|
||||
- /var/lib:/var/lib
|
||||
- /etc/kubernetes:/etc/kubernetes
|
||||
- /var:/var:rshared,rbind
|
||||
- /var/lib/kubeadm:/etc/kubernetes
|
||||
rootfsPropagation: shared
|
||||
- name: kubelet
|
||||
image: "errordeveloper/mobykube:master"
|
||||
capabilities:
|
||||
@ -63,13 +88,15 @@ services:
|
||||
options: ["rw","nosuid","noexec","nodev","relatime"]
|
||||
binds:
|
||||
- /dev:/dev
|
||||
- /var/run:/var/run
|
||||
- /var/lib:/var/lib
|
||||
- /var:/var:rshared,rbind
|
||||
- /var/lib/kubeadm:/etc/kubernetes
|
||||
#- /var/log:/var/log #/var/log/containers
|
||||
# TODO /{etc,opt}/cni & /var/lib/kubelet:rw,rshared
|
||||
- /var/log:/var/log #/var/log/containers
|
||||
- /etc/kubernetes:/etc/kubernetes
|
||||
rootfsPropagation: shared
|
||||
files:
|
||||
- path: etc/kubernetes/
|
||||
- path: root/.ssh/authorized_keys
|
||||
contents: '# Your ssh key goes here'
|
||||
- path: var/lib/kubeadm
|
||||
directory: true
|
||||
outputs:
|
||||
- format: kernel+initrd
|
||||
|
Loading…
Reference in New Issue
Block a user