diff --git a/docs/getting-started-guides/centos/centos_manual_config.md b/docs/getting-started-guides/centos/centos_manual_config.md index f794f485a4..40325c8985 100644 --- a/docs/getting-started-guides/centos/centos_manual_config.md +++ b/docs/getting-started-guides/centos/centos_manual_config.md @@ -10,15 +10,15 @@ assignees: ## Prerequisites -You need two machines with CentOS installed on them. +You need a machine acting as master and as many CentOS 7 hosts as you would like, that act as cluster nodes. ## Starting a cluster 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 node working. Multiple nodes requires a functional [networking configuration](/docs/admin/networking) 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 hosts, centos-minion-n will be the nodes and run kubelet, proxy, cadvisor and docker. -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 node and run kubelet, proxy, cadvisor and docker. +All of then run flanneld as networking overlay. **System Information:** @@ -28,12 +28,14 @@ Please replace host IP with your environment. ```conf centos-master = 192.168.121.9 -centos-minion = 192.168.121.65 +centos-minion-1 = 192.168.121.65 +centos-minion-2 = 192.168.121.66 +centos-minion-3 = 192.168.121.67 ``` **Prepare the hosts:** -* Create a /etc/yum.repos.d/virt7-docker-common-release.repo on all hosts - centos-{master,minion} with following information. +* Create a /etc/yum.repos.d/virt7-docker-common-release.repo on all hosts - centos-{master,minion-n} with following information. ```conf [virt7-docker-common-release] @@ -42,17 +44,19 @@ baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/ gpgcheck=0 ``` -* Install Kubernetes and etcd on all hosts - centos-{master,minion}. This will also pull in docker and cadvisor. +* Install Kubernetes, etcd and flannel on all hosts - centos-{master,minion-n}. This will also pull in docker and cadvisor. ```shell -yum -y install --enablerepo=virt7-docker-common-release kubernetes etcd +yum -y install --enablerepo=virt7-docker-common-release kubernetes etcd flannel ``` * Add master and node to /etc/hosts on all machines (not needed if hostnames already in DNS) ```shell echo "192.168.121.9 centos-master -192.168.121.65 centos-minion" >> /etc/hosts +192.168.121.65 centos-minion-1 +192.168.121.66 centos-minion-2 +192.168.121.67 centos-minion-3" >> /etc/hosts ``` * Edit /etc/kubernetes/config which will be the same on all hosts to contain: @@ -74,7 +78,7 @@ KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://centos-master:8080" ``` -* Disable the firewall on both the master and node, as docker does not play well with other firewall rule managers +* Disable the firewall on the master and all the nodes, as docker does not play well with other firewall rule managers ```shell systemctl disable iptables-services firewalld @@ -114,17 +118,38 @@ KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_API_ARGS="" ``` +* Configure ETCD to hold the network overlay configuration on master: + +```shell +$ etcdctl mkdir /kube-centos/network +$ etcdclt mk /kube-centos/network/config "{ \"Network\": \"172.40.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }" +``` + +* Configure flannel to overlay Docker network in /etc/sysconfig/flanneld on the master (also in the nodes as we'll see): + +```shell +# etcd url location. Point this to the server where etcd runs +FLANNEL_ETCD="http://centos-master:2379" + +# etcd config key. This is the configuration key that flannel queries +# For address range assignment +FLANNEL_ETCD_KEY="/kube-centos/network" + +# Any additional options that you want to pass +FLANNEL_OPTIONS="" +``` + * Start the appropriate services on master: ```shell -for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do +for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler flanneld; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done ``` -**Configure the Kubernetes services on the node.** +**Configure the Kubernetes services on the nodes.** ***We need to configure the kubelet and start the kubelet and proxy*** @@ -138,7 +163,7 @@ KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_PORT="--port=10250" # You may leave this blank to use the actual hostname -KUBELET_HOSTNAME="--hostname-override=centos-minion" +KUBELET_HOSTNAME="--hostname-override=centos-minion-n" # Check the node number! # Location of the api-server KUBELET_API_SERVER="--api-servers=http://centos-master:8080" @@ -147,10 +172,24 @@ KUBELET_API_SERVER="--api-servers=http://centos-master:8080" KUBELET_ARGS="" ``` -* Start the appropriate services on node (centos-minion). +* Configure flannel to overlay Docker network in /etc/sysconfig/flanneld (in all the nodes) ```shell -for SERVICES in kube-proxy kubelet docker; do +# etcd url location. Point this to the server where etcd runs +FLANNEL_ETCD="http://centos-master:2379" + +# etcd config key. This is the configuration key that flannel queries +# For address range assignment +FLANNEL_ETCD_KEY="/kube-centos/network" + +# Any additional options that you want to pass +FLANNEL_OPTIONS="" +``` + +* Start the appropriate services on node (centos-minion-n). + +```shell +for SERVICES in kube-proxy kubelet flanneld docker; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES @@ -164,7 +203,9 @@ done ```shell $ kubectl get nodes NAME LABELS STATUS -centos-minion Ready +centos-minion-1 Ready +centos-minion-2 Ready +centos-minion-3 Ready ``` **The cluster should be running! Launch a test pod.** @@ -176,7 +217,7 @@ You should have a functional cluster, check out [101](/docs/user-guide/walkthrou IaaS Provider | Config. Mgmt | OS | Networking | Docs | Conforms | Support Level -------------------- | ------------ | ------ | ---------- | --------------------------------------------- | ---------| ---------------------------- -Bare-metal | custom | CentOS | _none_ | [docs](/docs/getting-started-guides/centos/centos_manual_config) | | Community ([@coolsvap](https://github.com/coolsvap)) +Bare-metal | custom | CentOS | flannel | [docs](/docs/getting-started-guides/centos/centos_manual_config) | | Community ([@coolsvap](https://github.com/coolsvap)) For support level information on all solutions, see the [Table of solutions](/docs/getting-started-guides/#table-of-solutions) chart.