shudarshon / challenges-kubernetes

:cloud: Challenges Your Kubernetes Skills And Knowledge

Home Page:https://www.dennyzhang.com/battle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

challenges-kubernetes

Build Status PRs Welcome

LinkedIn slack Github

File me tickets or star the repo.

Similar Challenges: https://www.dennyzhang.com/battle

Table of Contents

Challenges Your Kubernetes Skills And Knowledge

Scenarios

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.

Scenario-102: 1-Node K8S Deployment II

  • Objective: Single node deployment for stateful service
  • Requirements:
1. Use yaml to start one mysql server service with 1 instance.
2. Use yaml to start one mysql client service with 2 instances.
3. Delete the db server instance, make sure a new one will be created automatically.
4. When db server is recreated, make sure no data loss.

Scenario-103: 1-Node K8S Deployment III

  • Objective: Advanced k8s deployment for one single db service
  • Requirements:
1. Suppose your k8s/minikube have multiple cluster, how you can segrate them? (Hint: namespace)
2. When we initialize mysql via yaml, avoid store mysql root password in plain text. (Hint: secrets)
3. Make sure we can create no more than 1 pods for DB server. (Hint: ResourceQuota)

Scenario-201: 3-Nodes K8S Deployment I

  • Objective: Know how to deployment k8s cluster env
  • Requirements:
1. Deploy 3 nodes k8s env in your virtualbox.
   One as controller, the other two as worker
2. Deploy k8s web UI, which is missing by default.
3. Create a nginx service with 6 instances.
   They should be balanced across worker nodes.
4. Visit nginx service by loadbalancer. (Hint: Ingress)

Scenario-202: 3-Nodes K8S Deployment II

  • Objective: k8s cluster env with stateful service
  • Requirements:
1. Deploy 3 nodes k8s. One controller, others as worker
2. Create an elasticsearch service with 4 instances.
   2 as master, 2 as data.
3. Create a nightly job to backup elasticsearch cluster. (Hint: Cron Jobs)
4. If any es instance has crashed, get alerts.

Scenario-301: 3-Nodes Jenkins Deployment I

  • Objective: Real service deployment
  • Requirements:
1. Deploy 3 nodes k8s. One controller, others as worker
1. Deploy jenkins service with 1 master 2 agents
2. When Jenkins crash, get alerts

Scenario-302: 3-Nodes Jenkins Deployment II

  • Objective: Real service deployment
  • Requirements:
1. Deploy 3 nodes k8s. One controller, others as worker
2. Deploy Jenkins service by helm
3. Use nginx as an ingress for Jenkins master
4. Simulate Jenkins slave crash events, and confirm service is fine
5. Simulate Jenkins master crash events, and confirm service is fine

Highlights

  • More resources: run services on k8s cluster
http://containertutorials.com/get_started_kubernetes/k8s_example.html
Kubernetes Example

https://kubernetes.io/docs/tutorials/
kubernetes kubernetes

https://kubernetes.io/docs/getting-started-guides/scratch/
Creating a Custom Cluster from Scratch

https://github.com/kubernetes/examples
kubernetes examples in GitHub From Google

https://kubernetes.io/docs/concepts/configuration/overview/
Configuration Best Practices

  • More resources: k8s cluster itself
https://github.com/kelseyhightower/kubernetes-the-hard-way
Bootstrap Kubernetes the hard way on Google Cloud Platform. No scripts.

https://github.com/davidkbainbridge/k8s-playground
Simple VM based Kubernetes cluster setup

Contributors: Give People Credits

Below are folks who have contributed via GitHub!

License

About

:cloud: Challenges Your Kubernetes Skills And Knowledge

https://www.dennyzhang.com/battle


Languages

Language:Shell 47.6%Language:Ruby 23.9%Language:Go 16.7%Language:Makefile 11.7%