From 6d94cbcd7caec0750fabafbce63c5fb8e9eef820 Mon Sep 17 00:00:00 2001 From: Swapnil Kulkarni Date: Tue, 17 Feb 2015 22:26:45 +0530 Subject: [PATCH] Added getting started guide for CentOS Added getting started guide to setup one minion setup using CentOS --- docs/getting-started-guides/README.md | 2 +- .../centos/centos_manual_config.md | 148 ++++++++++++++++++ 2 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 docs/getting-started-guides/centos/centos_manual_config.md diff --git a/docs/getting-started-guides/README.md b/docs/getting-started-guides/README.md index 99d24d97e33d9..aae2fe5b48071 100644 --- a/docs/getting-started-guides/README.md +++ b/docs/getting-started-guides/README.md @@ -17,7 +17,7 @@ Bare-metal | custom | Ubuntu | [docs](../../docs/getting-started-guide Local | | | [docs](../../docs/getting-started-guides/locally.md) | Inactive | Ovirt | | | [docs](../../docs/getting-started-guides/ovirt.md) | Inactive | Rackspace | CoreOS | CoreOS | [docs](../../docs/getting-started-guides/rackspace.md) | Inactive | - +Bare-metal | custom | CentOS | [docs](../../docs/getting-started-guides/centos/centos_manual_config.md) | Community(@coolsvap) | Uses K8s v0.9.1 Definition of columns: - **IaaS Provider** is who/what provides the virtual or physical machines (nodes) that Kubernetes runs on. - **OS** is the base operating system of the nodes. diff --git a/docs/getting-started-guides/centos/centos_manual_config.md b/docs/getting-started-guides/centos/centos_manual_config.md new file mode 100644 index 0000000000000..0f3e609170924 --- /dev/null +++ b/docs/getting-started-guides/centos/centos_manual_config.md @@ -0,0 +1,148 @@ + +##Getting started on [CentOS](http://centos.org) + +This is a getting started guide for CentOS. It is a manual configuration so you understand all the underlying packages / services / ports, etc... + +This guide will only get ONE minion working. Multiple minions requires a functional [networking configuration](https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/networking.md) done outside of kubernetes. Although the additional kubernetes configuration requirements should be obvious. + +The kubernetes package provides a few services: kube-apiserver, kube-scheduler, kube-controller-manager, kubelet, kube-proxy. These services are managed by systemd and the configuration resides in a central location: /etc/kubernetes. We will break the services up between the hosts. The first host, centos-master, will be the kubernetes master. This host will run the kube-apiserver, kube-controller-manager, and kube-scheduler. In addition, the master will also run _etcd_. The remaining host, centos-minion will be the minion and run kubelet, proxy, cadvisor and docker. + +**System Information:** + +Hosts: +``` +centos-master = 192.168.121.9 +centos-minion = 192.168.121.65 +``` + +**Prepare the hosts:** + +* Create virt7-testing repo on all hosts - centos-{master,minion} with following information. + +``` +[virt7-testing] +name=virt7-testing +baseurl=http://cbs.centos.org/repos/virt7-testing/x86_64/os/ +gpgcheck=0 +``` + + +* Install kubernetes on all hosts - centos-{master,minion}. This will also pull in etcd, docker, and cadvisor. + +``` +yum -y install --enablerepo=virt7-testing kubernetes +``` + +* Add master and minion to /etc/hosts on all machines (not needed if hostnames already in DNS) + +``` +echo "192.168.121.9 centos-master +192.168.121.65 centos-minion" >> /etc/hosts +``` + +* Edit /etc/kubernetes/config which will be the same on all hosts to contain: + +``` +# Comma seperated list of nodes in the etcd cluster +KUBE_ETCD_SERVERS="--etcd_servers=http://centos-master:4001" + +# logging to stderr means we get it in the systemd journal +KUBE_LOGTOSTDERR="--logtostderr=true" + +# journal message level, 0 is debug +KUBE_LOG_LEVEL="--v=0" + +# Should this cluster be allowed to run privleged docker containers +KUBE_ALLOW_PRIV="--allow_privileged=false" +``` + +* Disable the firewall on both the master and minon, as docker does not play well with other firewall rule managers + +``` +systemctl disable iptables-services firewalld +systemctl stop iptables-services firewalld +``` + +**Configure the kubernetes services on the master.** + +* Edit /etc/kubernetes/apiserver to appear as such: + +``` +# The address on the local server to listen to. +KUBE_API_ADDRESS="--address=0.0.0.0" + +# The port on the local server to listen on. +KUBE_API_PORT="--port=8080" + +# How the replication controller and scheduler find the kube-apiserver +KUBE_MASTER="--master=http://centos-master:8080" + +# Port minions listen on +KUBELET_PORT="--kubelet_port=10250" + +# Address range to use for services +KUBE_SERVICE_ADDRESSES="--portal_net=10.254.0.0/16" + +# Add you own! +KUBE_API_ARGS="" +``` + +* Edit /etc/kubernetes/controller-manager to appear as such: +``` +# Comma seperated list of minions +KUBELET_ADDRESSES="--machines=centos-minion" +``` + +* Start the appropriate services on master: + +``` +for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do + systemctl restart $SERVICES + systemctl enable $SERVICES + systemctl status $SERVICES +done +``` + +**Configure the kubernetes services on the minion.** + +***We need to configure the kubelet and start the kubelet and proxy*** + +* Edit /etc/kubernetes/kubelet to appear as such: + +``` +# The address for the info server to serve on +KUBELET_ADDRESS="--address=0.0.0.0" + +# The port for the info server to serve on +KUBELET_PORT="--port=10250" + +# You may leave this blank to use the actual hostname +KUBELET_HOSTNAME="--hostname_override=centos-minion" + +# Add your own! +KUBELET_ARGS="" +``` + +* Start the appropriate services on minion (centos-minion). + +``` +for SERVICES in kube-proxy kubelet docker; do + systemctl restart $SERVICES + systemctl enable $SERVICES + systemctl status $SERVICES +done +``` + +*You should be finished!* + +* Check to make sure the cluster can see the minion (on centos-master) + +``` +kubectl get minions +NAME LABELS +centos-minion +``` + +**The cluster should be running! Launch a test pod.** + +You should have a functional cluster, check out [101](https://github.com/GoogleCloudPlatform/kubernetes/blob/master/examples/walkthrough/README.md)! \ No newline at end of file