Kubeadm: Create a kubeadm installer container for CoreOS

Created on 13 Jun 2017  ·  17Comments  ·  Source: kubernetes/kubeadm

Choose one: BUG REPORT or FEATURE REQUEST
FEATURE REQUEST

And other platforms that may not have deb/rpm installation support

Moved from: https://github.com/kubernetes/kubernetes/issues/34134

arereleasing help wanted prioritbacklog

Most helpful comment

FWIW, the following script configure "everything" (I think so) that is needed to use kubeadm on CoreOS:

#!/bin/bash
set -o nounset -o errexit

RELEASE="$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)"
CNI_VERSION="v0.6.0"

mkdir -p /opt/bin
cd /opt/bin
curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
chmod +x {kubeadm,kubelet,kubectl}

mkdir -p /opt/cni/bin
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-amd64-${CNI_VERSION}.tgz" | tar -C /opt/cni/bin -xz

BRANCH="release-$(cut -f1-2 -d .<<< "${RELEASE##v}")"
cd "/etc/systemd/system/"
curl -L "https://raw.githubusercontent.com/kubernetes/kubernetes/${BRANCH}/build/debs/kubelet.service" | sed 's:/usr/bin:/opt/bin:g' > kubelet.service
mkdir -p "/etc/systemd/system/kubelet.service.d"
cd "/etc/systemd/system/kubelet.service.d"
curl -L "https://raw.githubusercontent.com/kubernetes/kubernetes/${BRANCH}/build/debs/10-kubeadm.conf" | sed 's:/usr/bin:/opt/bin:g' > 10-kubeadm.conf

Save it on disk and run with sudo.

I tested kubeadm with:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16
sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
sudo systemctl enable docker kubelet
core@kubeadm ~ $ sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf -n kube-system get pod
NAME                              READY     STATUS    RESTARTS   AGE
etcd-kubeadm                      1/1       Running   0          7m
kube-apiserver-kubeadm            1/1       Running   0          7m
kube-controller-manager-kubeadm   1/1       Running   0          7m
kube-dns-6f4fd4bdf-sljgk          3/3       Running   0          8m
kube-flannel-ds-8dfvn             1/1       Running   0          7m
kube-proxy-pvltl                  1/1       Running   0          8m
kube-scheduler-kubeadm            1/1       Running   0          7m
core@kubeadm ~ $ sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf -n kube-system get node
NAME      STATUS    ROLES     AGE       VERSION
kubeadm   Ready     master    8m        v1.9.0

All 17 comments

CoreOS is the most appealing option to me for Kubernetes due to it's simplified security/update model. Previously a viable option may have been the setup scripts provided by CoreOS, but it doesn't look like they have any desire to maintain these outside of Tectonic. kubeadm seems like a good, de facto home for this alongside the other distros.

Is there a way to make this work unofficially right now?

@lucasyvas yes, maybe something like this? https://github.com/xakraz/kubeadm-installer
Don't know the status of it currently though

cc @xakraz

@luxas I'm using that one! Thanks for kicking it off. I ran into other CoreOS install issues but was able to get kubeadm on the box with this no problem.

Maybe we can close that issue then ?

@luxas Is there anything we can do for this issue, or should we close? This work could also be tracked by #17.

I'm confused on the state of this issue... sounds like it almost works but no one is actively working on making it fully supported?

@pswenson This is a packaging effort that someone might want to do.
Basically repackaging the debs/rpms into an installer container for CoreOS.
Nobody is working on this though in favor for higher-priority tasks.

Is this covered by #503? More specifically, what is required here _beyond_ just getting the kubeadm binary on disk?

FWIW, the following script configure "everything" (I think so) that is needed to use kubeadm on CoreOS:

#!/bin/bash
set -o nounset -o errexit

RELEASE="$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)"
CNI_VERSION="v0.6.0"

mkdir -p /opt/bin
cd /opt/bin
curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
chmod +x {kubeadm,kubelet,kubectl}

mkdir -p /opt/cni/bin
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-amd64-${CNI_VERSION}.tgz" | tar -C /opt/cni/bin -xz

BRANCH="release-$(cut -f1-2 -d .<<< "${RELEASE##v}")"
cd "/etc/systemd/system/"
curl -L "https://raw.githubusercontent.com/kubernetes/kubernetes/${BRANCH}/build/debs/kubelet.service" | sed 's:/usr/bin:/opt/bin:g' > kubelet.service
mkdir -p "/etc/systemd/system/kubelet.service.d"
cd "/etc/systemd/system/kubelet.service.d"
curl -L "https://raw.githubusercontent.com/kubernetes/kubernetes/${BRANCH}/build/debs/10-kubeadm.conf" | sed 's:/usr/bin:/opt/bin:g' > 10-kubeadm.conf

Save it on disk and run with sudo.

I tested kubeadm with:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16
sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
sudo systemctl enable docker kubelet
core@kubeadm ~ $ sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf -n kube-system get pod
NAME                              READY     STATUS    RESTARTS   AGE
etcd-kubeadm                      1/1       Running   0          7m
kube-apiserver-kubeadm            1/1       Running   0          7m
kube-controller-manager-kubeadm   1/1       Running   0          7m
kube-dns-6f4fd4bdf-sljgk          3/3       Running   0          8m
kube-flannel-ds-8dfvn             1/1       Running   0          7m
kube-proxy-pvltl                  1/1       Running   0          8m
kube-scheduler-kubeadm            1/1       Running   0          7m
core@kubeadm ~ $ sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf -n kube-system get node
NAME      STATUS    ROLES     AGE       VERSION
kubeadm   Ready     master    8m        v1.9.0

Thanks @klausenbusk! Personally I'd be okay with having these install instructions under a CoreOS tab in https://kubernetes.io/docs/setup/independent/install-kubeadm/...

@klausenbusk thanks! it does set up the cluster, but my master can't seem to communicate with a node. I can't curl the node's ip ("no route to host"), but curling a service's clusterIP which route to that node does work. So I think there's something missing.

@klausenbusk thanks! it does set up the cluster, but my master can't seem to communicate with a node. I can't curl the node's ip ("no route to host"), but curling a service's clusterIP which route to that node does work. So I think there's something missing.

That sounds more like a network issue than a k8s/CoreOS issue. Is it correctly understood that "basically" you can't ping the node from the master node? If that the case, I'm not sure it related to k8s/CoreOS.

I can ping the node's private network ip address (that I got from the cloud provider, digital ocean), but not the cluster InternalIP assigned to the node.

Thanks @klausenbusk! Personally I'd be okay with having these install instructions under a CoreOS tab in https://kubernetes.io/docs/setup/independent/install-kubeadm/...

I have opened a PR: https://github.com/kubernetes/website/pull/6768

I can ping the node's private network ip address (that I got from the cloud provider, digital ocean), but not the cluster InternalIP assigned to the node.

After a bit of digging, it sounds like this issue: https://github.com/kubernetes/kubeadm/issues/203

@klausenbusk That did it, thanks!

Can we close this issue now that https://github.com/kubernetes/website/pull/6768 has been merged?

Yes, thank you @klausenbusk for taking care of this :tada:!

Was this page helpful?
0 / 5 - 0 ratings