For the last six months, the Acme Anvil Corporation has been migrating their bare metal infrastructure to Docker containers. A schism has developed between the members of your team on whether to use Docker Swarm or Kubernetes. To settle the dispute, your manager has decided to create a series of challenges. You have been tasked with setting up a Kubernetes cluster with 3 nodes: 1 master and 2 workers. First, you will create a deployment with 3 replicas using the `httpd` image. Next, you will create a service that will make the pod publicly accessible. Finally, you will scale the pod up to 5 replicas and then down to 2.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Complete the Kubernetes Install
Initialize the cluster:
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.11.3 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
Install Flannel on the master:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
- Create the Deployment
vi deployment.yml
Add the following to
deployment.yml
:apiVersion: apps/v1 kind: Deployment metadata: name: httpd-deployment labels: app: httpd spec: replicas: 3 selector: matchLabels: app: httpd template: metadata: labels: app: httpd spec: containers: - name: httpd image: httpd:latest ports: - containerPort: 80
Spin up the deployment:
kubectl create -f deployment.yml
- Create the Service
vi service.yml
Add the following to
service.yml
:kind: Service apiVersion: v1 metadata: name: service-deployment spec: selector: app: httpd ports: - protocol: TCP port: 80 targetPort: 80 type: NodePort
Create the service:
kubectl create -f service.yml
- Scale the Deployment Up to 5 Replicas
vi deployment.yml
Change the number of replicas to 5:
spec: replicas: 5
Apply the changes:
kubectl apply -f deployment.yml
- Scale the Deployment Down to 2 Replicas
vi deployment.yml
Change the number of replicas to 2:
spec: replicas: 2
Apply the changes:
kubectl apply -f deployment.yml