{"id":7872,"date":"2019-06-20T09:09:38","date_gmt":"2019-06-20T01:09:38","guid":{"rendered":"http:\/\/rmohan.com\/?p=7872"},"modified":"2019-06-20T09:09:40","modified_gmt":"2019-06-20T01:09:40","slug":"installing-kubernetes-on-centos7","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=7872","title":{"rendered":"INSTALLING KUBERNETES ON CENTOS7"},"content":{"rendered":"\n<p>[RUN ALL BELOW COMMADS on ALL NODES]<\/p>\n\n\n\n<p>yum update<br>\nyum install -y epel-release<\/p>\n\n\n\n<p>yum install docker [v1.11 or 1.12 or 1.13]<\/p>\n\n\n\n<p>setup kubernates respos<\/p>\n\n\n\n<p>kubeadm  kubectl  kubelet<br>\n<\/p>\n\n\n<p>[root@kubmaster yum.repos.d]<\/p>\n\n\n\n<p># cat kubernetes.repo<br><\/p>\n\n\n<p>[kubernetes]<\/p>\n\n\n\n<p>\nname=Kubernetes<br>\nbaseurl=https:\/\/packages.cloud.google.com\/yum\/repos\/kubernetes-el7-x86_64<br>\nenabled=1<br>\ngpgcheck=1<br>\nrepo_gpgcheck=1<br>\ngpgkey=https:\/\/packages.cloud.google.com\/yum\/doc\/yum-key.gpg https:\/\/packages.cloud.google.com\/yum\/doc\/rpm-package-key.gpg\n<\/p>\n\n\n\n<p>setenforce 0<\/p>\n\n\n\n<p>yum install -y kubelet kubeadm kubectl<\/p>\n\n\n\n<ul><li>Add host entry in \/etc\/hosts<\/li><\/ul>\n\n\n\n<p>systemctl start Docker<br>\nswapoff \/dev\/centos\/swap<br>\nsystemctl enable kubelet.service<br>\nsystemctl enable docker<\/p>\n\n\n\n<p>echo 1 &gt; \/proc\/sys\/net\/bridge\/bridge-nf-call-iptables<\/p>\n\n\n\n<p>useradd kubeadmin<br>\nifdown enp0s3<\/p>\n\n\n\n<p>NOTE: On Virtual BOX disable NAT network interface before hitting init<br>\nor else port 6443 will get bound to NAT IP<br>\ndisconnect N\/A from console and reboot<\/p>\n\n\n\n<p>kubeadm init &#8211;pod-network-cidr=10.244.0.0\/16<\/p>\n\n\n\n<p>Note: If you have  multiple IPs \/ Hostname to bind ; run following to add name\/ip in certificate<\/p>\n\n\n\n<p>kubeadm init &#8211;pod-network-cidr=10.244.0.0\/16 &#8211;apiserver-advertise-address 192.168.56.240 &#8211;apiserver-cert-extra-sans kubemaster.mhn.com<\/p>\n\n\n\n<p>Create User<\/p>\n\n\n\n<p>su &#8211; kubeadmin<\/p>\n\n\n\n<p>mkdir -p $HOME\/.kube<\/p>\n\n\n\n<p>sudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config<br>\nsudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Your Kubernetes master has initialized successfully!<\/p>\n\n\n\n<p>To start using your cluster, you need to run the following as a regular user:<\/p>\n\n\n\n<p>mkdir -p $HOME\/.kube<br>\n  sudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config<br>\n  sudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/p>\n\n\n\n<p>You should now deploy a pod network to the cluster.<br>\nRun &#8220;kubectl apply -f [podnetwork].yaml&#8221; with one of the options listed at:<br>\n  https:\/\/kubernetes.io\/docs\/concepts\/cluster-administration\/addons\/<\/p>\n\n\n\n<p>You can now join any number of machines by running the following on each node<br>\nas root:<\/p>\n\n\n\n<p>kubeadm join 192.168.56.240:6443 &#8211;token wxf3y9.ci2txlf7ja04svyg &#8211;discovery-token-ca-cert-hash sha256:ea3eeb5de0ffd9efe6d0f304f4fd9853c005ee98902ad7a7c110425c23eeab04<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>In order for your pods to communicate with one another, you&#8217;ll need to install pod networking.  We are going to use Flannel for our Container Network Interface (CNI) because it&#8217;s easy to install and reliable.  Enter this command:<\/p>\n\n\n\n<p>kubectl apply -f https:\/\/raw.githubusercontent.com\/coreos\/flannel\/master\/Documentation\/kube-flannel.yml<\/p>\n\n\n\n<p>If you see error like beow<\/p>\n\n\n\n<p>The connection to the server localhost:8080 was refused &#8211; did you specify the right host or port?<\/p>\n\n\n\n<p>Do the following as normal user<\/p>\n\n\n\n<p>su &#8211; kubeadmin<\/p>\n\n\n\n<p>sudo cp \/etc\/kubernetes\/admin.conf $HOME\/<\/p>\n\n\n\n<p>sudo chown $(id -u):$(id -g) $HOME\/admin.conf<\/p>\n\n\n\n<p>export KUBECONFIG=$HOME\/admin.conf<\/p>\n\n\n<p>[root@kubmaster ~]<\/p>\n\n\n\n<p># kubectl apply -f https:\/\/raw.githubusercontent.com\/coreos\/flannel\/master\/Documentation\/kube-flannel.yml<br>\nclusterrole.rbac.authorization.k8s.io &#8220;flannel&#8221; created<br>\nclusterrolebinding.rbac.authorization.k8s.io &#8220;flannel&#8221; created<br>\nserviceaccount &#8220;flannel&#8221; created<br>\nconfigmap &#8220;kube-flannel-cfg&#8221; created<br>\ndaemonset.extensions &#8220;kube-flannel-ds&#8221; created\n<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<p>[kubeadmin@kubmaster ~]<\/p>\n\n\n\n<p>$ kubectl get pods<br>\nNo resources found.<br><\/p>\n\n\n<p>[kubeadmin@kubmaster ~]<\/p>\n\n\n\n<p>$ kubectl get pods &#8211;all-namespaces<br>\nNAMESPACE     NAME                                READY     STATUS    RESTARTS   AGE<br>\nkube-system   etcd-kubmaster                      1\/1       Running   0          47m<br>\nkube-system   kube-apiserver-kubmaster            1\/1       Running   0          47m<br>\nkube-system   kube-controller-manager-kubmaster   1\/1       Running   0          47m<br>\nkube-system   kube-dns-86f4d74b45-mrq4d           3\/3       Running   0          1h<br>\nkube-system   kube-flannel-ds-854ns               1\/1       Running   0          47m<br>\nkube-system   kube-proxy-rlpbc                    1\/1       Running   0          1h<br>\nkube-system   kube-scheduler-kubmaster            1\/1       Running   0          47m<br><\/p>\n\n\n<p>[kubeadmin@kubmaster ~]<\/p>\n\n\n\n<p>$<\/p>\n","protected":false},"excerpt":{"rendered":"\n<p>[RUN ALL BELOW COMMADS on ALL NODES]<\/p>\n<p>yum update yum install -y epel-release<\/p>\n<p>yum install docker [v1.11 or 1.12 or 1.13]<\/p>\n<p>setup kubernates respos<\/p>\n<p>kubeadm kubectl kubelet <\/p>\n<p>[root@kubmaster yum.repos.d]<\/p>\n<p># cat kubernetes.repo<\/p>\n<p>[kubernetes]<\/p>\n<p> name=Kubernetes baseurl=https:\/\/packages.cloud.google.com\/yum\/repos\/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https:\/\/packages.cloud.google.com\/yum\/doc\/yum-key.gpg https:\/\/packages.cloud.google.com\/yum\/doc\/rpm-package-key.gpg <\/p>\n<p>setenforce 0<\/p>\n<p>yum install -y kubelet kubeadm kubectl<\/p>\n<p> Add host entry [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7872"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7872"}],"version-history":[{"count":1,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7872\/revisions"}],"predecessor-version":[{"id":7873,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7872\/revisions\/7873"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}