- Lab
- A Cloud Guru
Creating a Kubernetes Cluster
In this hands-on lab, we will install and configure a Kubernetes cluster consisting of 1 master and 2 nodes. Once the installation and configuration are complete, we will have a 3-node Kubernetes cluster that uses Flannel as the network overlay.
Path Info
Table of Contents
-
Challenge
Install Docker and Kubernetes on All Servers
Most of these commands need to be run on each of the nodes. Pay attention though. Down at Step 10, we are going to do a little bit on just the master, and down at Step 15 we'll run something on just the nodes. There are notes down there, just be watching for them.
1 - Once we have logged in, we need to elevate privileges using
sudo:sudo su2 - Disable SELinux:
setenforce 0 sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux3 - Enable the
br_netfiltermodule for cluster communication:modprobe br_netfilter echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables4 - Ensure that the Docker dependencies are satisfied:
yum install -y yum-utils device-mapper-persistent-data lvm25 - Add the Docker repo and install Docker:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce6 - Set the cgroup driver for Docker to systemd, reload systemd, then enable and start Docker:
sed -i '/^ExecStart/ s/$/ --exec-opt native.cgroupdriver=systemd/' /usr/lib/systemd/system/docker.service systemctl daemon-reload systemctl enable docker --now7 - Add the Kubernetes repo:
cat << EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF8 - Install Kubernetes
v1.14.0:yum install -y kubelet-1.14.0-0 kubeadm-1.14.0-0 kubectl-1.14.0-0 kubernetes-cni-0.7.59 - Enable the
kubeletservice. Thekubeletservice will fail to start until the cluster is initialized, this is expected:systemctl enable kubeletNote: Complete the following section on the MASTER ONLY!
10 - Initialize the cluster using the IP range for Flannel:
kubeadm init --pod-network-cidr=10.244.0.0/1611 - Copy the
kubeadmn joincommand that is in the output. We will need this later.12 - Exit
sudo, copy theadmin.confto your home directory, and take ownership.mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config13 - Deploy Flannel:
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel-old.yaml14 - Check the cluster state:
kubectl get pods --all-namespacesNote: Complete the following steps on the NODES ONLY!
15 - Run the
joincommand that you copied earlier, this requires running the command prefaced withsudoon the nodes (if we hadn't runsudo suto begin with). Then we'll check the nodes from the master.kubectl get nodes -
Challenge
Create and Scale a Deployment Using kubectl
Note: These commands will only be run on the master node.
1 - Create a simple deployment:
kubectl create deployment nginx --image=nginx2 - Inspect the pod:
kubectl get pods3 - Scale the deployment:
kubectl scale deployment nginx --replicas=44 - Inspect the pods. We should have four now:
kubectl get pods
What's a lab?
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.
