Skip to content

Latest commit

 

History

History
 
 

Scenario-101

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Table of Contents

Requirements

Scenario-101: 1-Node K8S Deployment I

  • Objective: Get familiar with K8S concept. Here K8S stands for Kubernetes.
  • Requirements:
1. Start one node of k8s in your laptop. Mac or Linux
2. Start a nginx webserver with one instance
3. Scale nginx service into 2 instances.
4. Get familiar with k8s dashboard. Find pods from GUI, check nginx log.

See kubernetes.yaml

Background & Highlights

  • Q: How to use your own docker image?

  • Q: What does "kubectl expose deployment .." do behind the scene?

Procedures

For single node deployment, we have multiple choices. Here we use minikube.

Deployment

  • Install virtualbox and minikube
which minikube
which kubectl
  • Start env
# start a VM to host our deployment
minikube start

# Create k8s deployment and export service
kubectl create -f ./kubernetes.yaml

See kubernetes.yaml

Verify Deployment

  • Check k8s web UI Dashboard
minikube dashboard
  • List k8s resources
# list deployments
kubectl get deployment

# list service
kubectl get services

# list pods
kubectl get pods
  • Check the first pod
# Get all pods
kubectl get pods -l app="nginx"

# Get the first pod
POD_NAME=$(kubectl get pods -l app="nginx" -o jsonpath="{.items[0].metadata.name}")
echo "POD_NAME: $POD_NAME"

# Login to the first pod
kubectl exec -ti $POD_NAME hostname

# Check log of the first pd
kubectl logs -f $POD_NAME
  • Run functional test
# Get endpoint url of nginx service
kubectl get services

# Send requests
service_url="$(minikube service my-nginx-service --url)"
for((i=0; i< 5; i++)); do { curl -I "$service_url";}; done

Destroy env:

  • Delete k8s resources
kubectl delete -f ./kubernetes.yaml
  • Remove VM
minikube delete

More resources