{"id":163,"date":"2017-04-12T22:08:01","date_gmt":"2017-04-12T14:08:01","guid":{"rendered":"http:\/\/www.jsjs.org\/?p=163"},"modified":"2017-04-12T22:08:01","modified_gmt":"2017-04-12T14:08:01","slug":"installing-kubernetes-cluster-with-3-minions-on-centos-7-to-manage-pods-and-services","status":"publish","type":"post","link":"https:\/\/blog.jsjs.org\/?p=163","title":{"rendered":"Installing Kubernetes Cluster with 3 minions on CentOS 7 to manage pods and services"},"content":{"rendered":"<p><em><strong>Note: This post updated on 28th April 2015 with updated installation steps.<\/strong><\/em><\/p>\n<p>Kubernetes is a system for managing containerized applications in a clustered environment. It provides basic mechanisms for deployment, maintenance and scaling of applications on public, private or hybrid setups. It also comes with self-healing features where containers can be auto provisioned, restarted or even replicated.<\/p>\n<p class=\"rtecenter\"><img decoding=\"async\" class=\"media-element file-default\" src=\"https:\/\/severalnines.com\/sites\/default\/files\/kube7-logo.png\" alt=\"\" data-fid=\"3791\" data-media-element=\"1\" \/><\/p>\n<p>Kubernetes is still at an early stage, please expect design and API changes over the coming year. In this blog post, we\u2019ll show you how to install a Kubernetes cluster with three minions on CentOS 7, with an example on how to manage pods and services.<\/p>\n<p><strong>Kubernetes Components<\/strong><\/p>\n<p>Kubernetes works in server-client setup, where it has a master providing centralized control for a number of minions. We will be deploying a Kubernetes master with three minions, as illustrated in the diagram further below.<\/p>\n<p>Kubernetes has several components:<\/p>\n<ul>\n<li>etcd &#8211; A highly available key-value store for shared configuration and service discovery.<\/li>\n<li>flannel &#8211; An etcd backed network fabric for containers.<\/li>\n<li>kube-apiserver &#8211; Provides the API for Kubernetes orchestration.<\/li>\n<li>kube-controller-manager &#8211; Enforces Kubernetes services.<\/li>\n<li>kube-scheduler &#8211; Schedules containers on hosts.<\/li>\n<li>kubelet &#8211; Processes a container manifest so the containers are launched according to how they are described.<\/li>\n<li>kube-proxy &#8211; Provides network proxy services.<\/li>\n<\/ul>\n<p><strong>Deployment on CentOS 7<\/strong><\/p>\n<p>We will need 4 servers, running on CentOS 7.1 64 bit with minimal install. All components are available directly from the CentOS extras repository which is enabled by default. The following architecture diagram illustrates where the Kubernetes components should reside:<\/p>\n<p class=\"rtecenter\"><a href=\"http:\/\/severalnines.com\/sites\/default\/files\/kube7-arch.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"media-element file-default\" src=\"https:\/\/severalnines.com\/sites\/default\/files\/kube7-arch.png\" alt=\"\" data-fid=\"3792\" data-media-element=\"1\" \/><\/a><\/p>\n<p><strong>Prerequisites<\/strong><\/p>\n<p>1. Disable iptables on each node to avoid conflicts with Docker iptables rules:<\/p>\n<div>\n<div id=\"highlighter_337908\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ systemctl stop firewalld<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">$ systemctl disable firewalld<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>2. Install NTP and make sure it is enabled and running:<\/p>\n<div>\n<div id=\"highlighter_317989\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ yum -y <\/code><code class=\"bash functions\">install<\/code> <code class=\"bash plain\">ntp<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">$ systemctl start ntpd<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">$ systemctl <\/code><code class=\"bash functions\">enable<\/code> <code class=\"bash plain\">ntpd<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>Setting up the Kubernetes Master<\/strong><\/p>\n<p>The following steps should be performed on the master.<\/p>\n<p>1. Install etcd and Kubernetes through yum:<\/p>\n<div>\n<div id=\"highlighter_166342\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ yum -y <\/code><code class=\"bash functions\">install<\/code> <code class=\"bash plain\">etcd kubernetes<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>2. Configure etcd to listen to all IP addresses inside \/etc\/etcd\/etcd.conf. Ensure the following lines are uncommented, and assign the following values:<\/p>\n<div>\n<div id=\"highlighter_603204\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">ETCD_NAME=default<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">ETCD_DATA_DIR=<\/code><code class=\"bash string\">\"\/var\/lib\/etcd\/default.etcd\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">ETCD_LISTEN_CLIENT_URLS=<\/code><code class=\"bash string\">\"<a href=\"http:\/\/0.0.0.0:2379\/\">http:\/\/0.0.0.0:2379<\/a>\"<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">ETCD_ADVERTISE_CLIENT_URLS=<\/code><code class=\"bash string\">\"<a href=\"http:\/\/localhost:2379\/\">http:\/\/localhost:2379<\/a>\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>3. Configure Kubernetes API server inside \/etc\/kubernetes\/apiserver. Ensure the following lines are uncommented, and assign the following values:<\/p>\n<div>\n<div id=\"highlighter_176133\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">KUBE_API_ADDRESS=<\/code><code class=\"bash string\">\"--address=0.0.0.0\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">KUBE_API_PORT=<\/code><code class=\"bash string\">\"--port=8080\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">KUBELET_PORT=<\/code><code class=\"bash string\">\"--kubelet_port=10250\"<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">KUBE_ETCD_SERVERS=<\/code><code class=\"bash string\">\"--etcd_servers=<a href=\"http:\/\/127.0.0.1:2379\/\">http:\/\/127.0.0.1:2379<\/a>\"<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">KUBE_SERVICE_ADDRESSES=<\/code><code class=\"bash string\">\"--service-cluster-ip-range=10.254.0.0\/16\"<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">KUBE_ADMISSION_CONTROL=<\/code><code class=\"bash string\">\"--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota\"<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">KUBE_API_ARGS=<\/code><code class=\"bash string\">\"\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>4. Start and enable etcd, kube-apiserver, kube-controller-manager and kube-scheduler:<\/p>\n<div>\n<div id=\"highlighter_370993\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">SERVICES <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash plain\">etcd kube-apiserver kube-controller-manager kube-scheduler; <\/code><code class=\"bash keyword\">do<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">systemctl restart $SERVICES<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">systemctl <\/code><code class=\"bash functions\">enable<\/code> <code class=\"bash plain\">$SERVICES<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">systemctl status $SERVICES <\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash keyword\">done<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>5. Define flannel network configuration in etcd. This configuration will be pulled by flannel service on minions:<\/p>\n<div>\n<div id=\"highlighter_433717\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ etcdctl mk <\/code><code class=\"bash plain\">\/atomic<\/code><code class=\"bash plain\">.io<\/code><code class=\"bash plain\">\/network\/config<\/code> <code class=\"bash string\">'{\"Network\":\"172.17.0.0\/16\"}'<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>6. At this point, we should notice that nodes&#8217; status returns nothing because we haven\u2019t started any of them yet:<\/p>\n<div>\n<div id=\"highlighter_875532\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ kubectl get nodes<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">NAME\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LABELS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>Setting up Kubernetes Minions (Nodes)<\/strong><\/p>\n<p>The following steps should be performed on minion1, minion2 and minion3 unless specified otherwise.<\/p>\n<p>1. Install flannel and Kubernetes using yum:<\/p>\n<div>\n<div id=\"highlighter_275911\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ yum -y <\/code><code class=\"bash functions\">install<\/code> <code class=\"bash plain\">flannel kubernetes<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>2. Configure etcd server for flannel service. Update the following line inside \/etc\/sysconfig\/flanneld to connect to the respective master:<\/p>\n<div>\n<div id=\"highlighter_265793\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">FLANNEL_ETCD=<\/code><code class=\"bash string\">\"<a href=\"http:\/\/192.168.50.130:2379\/\">http:\/\/192.168.50.130:2379<\/a>\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>3. Configure Kubernetes default config at \/etc\/kubernetes\/config, ensure you update the KUBE_MASTER value to connect to the Kubernetes master API server:<\/p>\n<div>\n<div id=\"highlighter_632793\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">KUBE_MASTER=<\/code><code class=\"bash string\">\"--master=<a href=\"http:\/\/192.168.50.130:8080\/\">http:\/\/192.168.50.130:8080<\/a>\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>4. Configure kubelet service inside \/etc\/kubernetes\/kubelet as below:<br \/>\n<em>minion1<\/em>:<\/p>\n<div>\n<div id=\"highlighter_979999\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">KUBELET_ADDRESS=<\/code><code class=\"bash string\">\"--address=0.0.0.0\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">KUBELET_PORT=<\/code><code class=\"bash string\">\"--port=10250\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash comments\"># change the hostname to this host\u2019s IP address<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">KUBELET_HOSTNAME=<\/code><code class=\"bash string\">\"--hostname_override=192.168.50.131\"<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">KUBELET_API_SERVER=<\/code><code class=\"bash string\">\"--api_servers=<a href=\"http:\/\/192.168.50.130:8080\/\">http:\/\/192.168.50.130:8080<\/a>\"<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">KUBELET_ARGS=<\/code><code class=\"bash string\">\"\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>minion2<\/em>:<\/p>\n<div>\n<div id=\"highlighter_90685\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">KUBELET_ADDRESS=<\/code><code class=\"bash string\">\"--address=0.0.0.0\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">KUBELET_PORT=<\/code><code class=\"bash string\">\"--port=10250\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash comments\"># change the hostname to this host\u2019s IP address<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">KUBELET_HOSTNAME=<\/code><code class=\"bash string\">\"--hostname_override=192.168.50.132\"<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">KUBELET_API_SERVER=<\/code><code class=\"bash string\">\"--api_servers=<a href=\"http:\/\/192.168.50.130:8080\/\">http:\/\/192.168.50.130:8080<\/a>\"<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">KUBELET_ARGS=<\/code><code class=\"bash string\">\"\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>minion3<\/em>:<\/p>\n<div>\n<div id=\"highlighter_500053\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">KUBELET_ADDRESS=<\/code><code class=\"bash string\">\"--address=0.0.0.0\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">KUBELET_PORT=<\/code><code class=\"bash string\">\"--port=10250\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash comments\"># change the hostname to this host\u2019s IP address<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">KUBELET_HOSTNAME=<\/code><code class=\"bash string\">\"--hostname_override=192.168.50.133\"<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">KUBELET_API_SERVER=<\/code><code class=\"bash string\">\"--api_servers=<a href=\"http:\/\/192.168.50.130:8080\/\">http:\/\/192.168.50.130:8080<\/a>\"<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">KUBELET_ARGS=<\/code><code class=\"bash string\">\"\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>5. Start and enable kube-proxy, kubelet, docker and flanneld services:<\/p>\n<div>\n<div id=\"highlighter_951251\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">SERVICES <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash plain\">kube-proxy kubelet docker flanneld; <\/code><code class=\"bash keyword\">do<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">systemctl restart $SERVICES<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">systemctl <\/code><code class=\"bash functions\">enable<\/code> <code class=\"bash plain\">$SERVICES<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">systemctl status $SERVICES <\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash keyword\">done<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>6. On each minion, you should notice that you will have two new interfaces added, docker0 and flannel0. You should get different range of IP addresses on flannel0 interface on each minion, similar to below:<br \/>\n<em>minion1<\/em>:<\/p>\n<div>\n<div id=\"highlighter_618227\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ ip a | <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">flannel | <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">inet<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">inet 172.17.45.0<\/code><code class=\"bash plain\">\/16<\/code> <code class=\"bash plain\">scope global flannel0<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>minion2<\/em>:<\/p>\n<div>\n<div id=\"highlighter_394115\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ ip a | <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">flannel | <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">inet<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">inet 172.17.38.0<\/code><code class=\"bash plain\">\/16<\/code> <code class=\"bash plain\">scope global flannel0<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>minion3<\/em>:<\/p>\n<div>\n<div id=\"highlighter_721671\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ ip a | <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">flannel | <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">inet<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">inet 172.17.93.0<\/code><code class=\"bash plain\">\/16<\/code> <code class=\"bash plain\">scope global flannel0<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>6. Now login to Kubernetes master node and verify the minions\u2019 status:<\/p>\n<div>\n<div id=\"highlighter_582600\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ kubectl get nodes<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">NAME\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LABELS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">192.168.50.131\u00a0\u00a0 kubernetes.io<\/code><code class=\"bash plain\">\/hostname<\/code><code class=\"bash plain\">=192.168.50.131\u00a0\u00a0 Ready<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">192.168.50.132\u00a0\u00a0 kubernetes.io<\/code><code class=\"bash plain\">\/hostname<\/code><code class=\"bash plain\">=192.168.50.132\u00a0\u00a0 Ready<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">192.168.50.133\u00a0\u00a0 kubernetes.io<\/code><code class=\"bash plain\">\/hostname<\/code><code class=\"bash plain\">=192.168.50.133\u00a0\u00a0 Ready<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>You are now set. The Kubernetes cluster is now configured and running. We can start to play around with pods.<\/p>\n<p><strong>Creating Pods (Containers)<\/strong><\/p>\n<p>To create a pod, we need to define a yaml file in the Kubernetes master, and use the kubectl command to create it based on the definition. Create a mysql.yaml file:<\/p>\n<div>\n<div id=\"highlighter_747007\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ <\/code><code class=\"bash functions\">mkdir<\/code> <code class=\"bash plain\">pods<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">$ <\/code><code class=\"bash functions\">cd<\/code> <code class=\"bash plain\">pods<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">$ vim mysql.yaml<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And add the following lines:<\/p>\n<div>\n<div id=\"highlighter_568501\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">apiVersion: v1<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">kind: Pod<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">metadata:<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">name: mysql<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">labels:<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">name: mysql<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">spec:<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">containers:<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">- resources:<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">limits :<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">cpu: 1<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">image: mysql<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">name: mysql<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">env<\/code><code class=\"bash plain\">:<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">- name: MYSQL_ROOT_PASSWORD<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash comments\"># change this<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">value: yourpassword<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">ports:<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">- containerPort: 3306<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">name: mysql<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Create the pod:<\/p>\n<div>\n<div id=\"highlighter_287364\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ kubectl create -f mysql.yaml<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>It may take a short period before the new pod reaches the Running state. Verify the pod is created and running:<\/p>\n<div>\n<div id=\"highlighter_69823\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ kubectl get pods<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">POD\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IP\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CONTAINER(S)\u00a0\u00a0 IMAGE(S)\u00a0\u00a0 HOST\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LABELS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS\u00a0\u00a0\u00a0 CREATED<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">mysql\u00a0\u00a0\u00a0\u00a0 172.17.38.2\u00a0\u00a0 mysql\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 mysql\u00a0\u00a0\u00a0\u00a0\u00a0 192.168.50.132<\/code><code class=\"bash plain\">\/192<\/code><code class=\"bash plain\">.168.50.132\u00a0\u00a0 name=mysql\u00a0\u00a0 Running\u00a0\u00a0 3 hours<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>So, Kubernetes just created a Docker container on 192.168.50.132. We now need to create a Service that lets other pods access the mysql database on a known port and host.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Creating Service<\/strong><\/p>\n<p>At this point, we have a MySQL pod inside 192.168.50.132. Define a mysql-service.yaml as below:<\/p>\n<pre><code class=\"language-xhtml\">apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    name: mysql\n  name: mysql\nspec:\n  externalIPs:\n    - 192.168.50.132\n  ports:\n    # the port that this service should serve on\n    - port: 3306\n  # label keys and values that must match in order to receive traffic for this service\n  selector:\n    name: mysql<\/code><\/pre>\n<p>Start the service:<\/p>\n<div>\n<div id=\"highlighter_513895\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ kubectl create -f mysql-service.yaml<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>You should get a 10.254.x.x IP range assigned to the mysql service. This is the Kubernetes internal IP address defined in \/etc\/kubernetes\/apiserver. This IP is not routable outside, so we defined the public IP instead (the interface that connected to external network for that minion):<\/p>\n<div>\n<div id=\"highlighter_797702\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ kubectl get services<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">NAME\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LABELS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SELECTOR\u00a0\u00a0\u00a0\u00a0 IP\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PORT(S)<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">kubernetes\u00a0\u00a0\u00a0\u00a0\u00a0 component=apiserver,provider=kubernetes\u00a0\u00a0 &lt;none&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10.254.0.2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 443<\/code><code class=\"bash plain\">\/TCP<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">kubernetes-ro\u00a0\u00a0 component=apiserver,provider=kubernetes\u00a0\u00a0 &lt;none&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10.254.0.1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 80<\/code><code class=\"bash plain\">\/TCP<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">mysql\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name=mysql\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name=mysql\u00a0\u00a0 10.254.13.156\u00a0\u00a0\u00a0 3306<\/code><code class=\"bash plain\">\/TCP<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">192.168.50.132<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Let\u2019s connect to our database server from outside (we used MariaDB client on CentOS 7):<\/p>\n<div>\n<div id=\"highlighter_875549\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ mysql -uroot -p -h192.168.50.132<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Welcome to the MariaDB monitor.\u00a0 Commands end with ; or \\g.<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">Your MySQL connection <\/code><code class=\"bash functions\">id<\/code> <code class=\"bash plain\">is 4<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">Server version: 5.6.24 MySQL Community Server (GPL)<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">Type <\/code><code class=\"bash string\">'help;'<\/code> <code class=\"bash plain\">or <\/code><code class=\"bash string\">'\\h'<\/code> <code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">help. Type <\/code><code class=\"bash string\">'\\c'<\/code> <code class=\"bash plain\">to <\/code><code class=\"bash functions\">clear<\/code> <code class=\"bash plain\">the current input statement.<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">MySQL [(none)]&gt; show variables like <\/code><code class=\"bash string\">'%version%'<\/code><code class=\"bash plain\">;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">+-------------------------+------------------------------+<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">| Variable_name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Value\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">+-------------------------+------------------------------+<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">| innodb_version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 5.6.24\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash plain\">| protocol_version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 10\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash plain\">| slave_type_conversions\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash plain\">| version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 5.6.24\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash plain\">| version_comment\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | MySQL Community Server (GPL) |<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">| version_compile_machine | x86_64\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash plain\">| version_compile_os\u00a0\u00a0\u00a0\u00a0\u00a0 | Linux\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">+-------------------------+------------------------------+<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash plain\">7 rows <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash functions\">set<\/code> <code class=\"bash plain\">(0.01 sec)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>That\u2019s it! You should now be able to connect to the MySQL container that resides on minion2.<\/p>\n<p>Check out the <a href=\"https:\/\/github.com\/GoogleCloudPlatform\/kubernetes\/tree\/master\/examples\/guestbook\" target=\"_blank\" rel=\"noopener\">Kubernetes guestbook example<\/a> on how to build a simple, multi-tier web application with Redis in master-slave setup. In a follow-up blog post, we are going to play around with Galera cluster containers on Kubernetes. Stay tuned!<\/p>\n<p>&nbsp;<\/p>\n<p><strong>References<\/strong><\/p>\n<ul>\n<li>Creating a Kubernetes Cluster to Run Docker Formatted Container Images &#8211; <a href=\"https:\/\/access.redhat.com\/articles\/1353773\" target=\"_blank\" rel=\"noopener\">https:\/\/access.redhat.com\/articles\/1353773<\/a><\/li>\n<li>Kubernetes Github &#8211; <a href=\"https:\/\/github.com\/googlecloudplatform\/kubernetes\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/googlecloudplatform\/kubernetes<\/a><\/li>\n<li>Persistent Installation of MySQL and WordPress on Kubernetes &#8211; <a href=\"https:\/\/github.com\/GoogleCloudPlatform\/kubernetes\/tree\/master\/examples\/mysql-wordpress-pd\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/GoogleCloudPlatform\/kubernetes\/tree\/master\/examples\/mysql-wordpress-pd<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Note: This post updated on 28th April 2015 with updated installation steps. Kubernetes is a system for managing containerized applications [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-163","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=163"}],"version-history":[{"count":0,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}