All Projects → dennyzhang → Challenges Kubernetes

dennyzhang / Challenges Kubernetes

Licence: apache-2.0
☁️ Challenges Your Kubernetes Skills And Knowledge

Programming Languages

shell
77523 projects
  • Deep Dive Into Kubernetes ** Kubernetes Topics github tag [[https://github.com/topics/denny-kubernetes][#denny-kubernetes]]

[[https://github.com/topics/denny-kubernetes][https://cdn.dennyzhang.com/images/github/k8s_github_repo.png]]

** Kubernetes BootCamp #+BEGIN_HTML linkedin github slack



PRs Welcome #+END_HTML

File me [[https://github.com/DennyZhang/challenges-kubernetes/issues][Issues]] or star [[https://github.com/DennyZhang/challenges-kubernetes][this repo]].

See more Kubernetes from Denny: [[https://github.com/topics/denny-kubernetes][#denny-kubernetes]] *** Scenario-101: 1-Node K8S Deployment I

  • Objective: Get familiar with K8S concept. Here K8S stands for Kubernetes.
  • Requirements: #+BEGIN_EXAMPLE
  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. #+END_EXAMPLE
  • Main Tech: minikube, nginx, dashboard
  • See more: [[bootcamp/Scenario-101][bootcamp/Scenario-101]]

*** Scenario-102: 1-Node K8S Deployment II

  • Objective: Single node deployment for stateful service
  • Requirements: #+BEGIN_EXAMPLE
  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. #+END_EXAMPLE
  • Main Tech: minikube, mysql, volume
  • See more: [[bootcamp/Scenario-102][bootcamp/Scenario-102]]

#+BEGIN_HTML #+END_HTML

*** Scenario-103: 1-Node K8S Deployment III

  • Objective: Advanced k8s deployment for one single db service
  • Requirements: #+BEGIN_EXAMPLE
  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) #+END_EXAMPLE
  • Main Tech: minikube, mysql, volume, Job
  • See more: [[bootcamp/Scenario-103][bootcamp/Scenario-103]]

*** Scenario-201: 3-Nodes K8S Deployment I

  • Objective: Know how to deployment k8s cluster env
  • Requirements: #+BEGIN_EXAMPLE
  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. #+END_EXAMPLE
  • Main Tech:
  • See more: [[bootcamp/Scenario-201][bootcamp/Scenario-201]] #+BEGIN_HTML #+END_HTML

*** Scenario-202: 3-Nodes K8S Deployment II

  • Objective: Improve service availability by choosing service type wisely.
  • Requirements: #+BEGIN_EXAMPLE
  1. Deploy 3 nodes k8s. One controller, others as workers
  2. Create a nginx service with 6 instances.
  3. Make sure nginx requests will be balanced across 6 instances. (Hint: ClusterIP + Ingress, or External Loadbalancer) #+END_EXAMPLE
  • Main Tech:
  • See more: [[bootcamp/Scenario-202][bootcamp/Scenario-202]]
  • TODO

*** Scenario-203: 3-Nodes K8S Deployment II

  • Objective: k8s cluster env with stateful service
  • Requirements: #+BEGIN_EXAMPLE
  1. Deploy 3 nodes k8s. One controller, others as workers
  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. #+END_EXAMPLE
  • Main Tech:
  • See more: [[https://github.com/dennyzhang/challenges-kubernetes/tree/master/bootcamp/Scenario-203][bootcamp/Scenario-203]]
  • TODO

*** Scenario-301: Use helm To Deploy Service I

  • Objective: Know the basic usage of helm
  • Requirements: #+BEGIN_EXAMPLE
  1. Use helm to deploy a mysql service with single instance
  2. Customize the deployment #+END_EXAMPLE
  • Main Tech: minikube, helm, volume
  • See more: [[bootcamp/Scenario-301][bootcamp/Scenario-301]]

#+BEGIN_HTML #+END_HTML

*** Scenario-302: Use helm To Deploy Service II

  • Objective: Advanced usage of helm
  • Requirements: #+BEGIN_EXAMPLE
  1. Deploy a single instance wordpress service with helm
  2. Scale frontend to 2 instance (Hint: kubectl scale)
  3. Enforce daily db backup (Hint: CronJob) #+END_EXAMPLE
  • Main Tech: minikube, helm, volume
  • See more: [[https://github.com/dennyzhang/challenges-kubernetes/tree/master/bootcamp/Scenario-302][bootcamp/Scenario-302]]

*** Scenario-303: Use helm To Deploy Service III

  • Objective: HA deployemnt with helm
  • Requirements: #+BEGIN_EXAMPLE
  1. Create a wordpress Chart by yourself
  2. Deploy a HA wordpress service with your helm chart #+END_EXAMPLE
  • Main Tech: helm, volume
  • See more: [[bootcamp/Scenario-303][bootcamp/Scenario-303]]
  • TODO

*** Scenario-304: Use helm To Deploy Service IV

  • Objective: Deploy elasticsearch cluster with 5 instances
  • Requirements: #+BEGIN_EXAMPLE
  1. Create an elasticsearch cluster
  2. Scale the env to 5 instances #+END_EXAMPLE
  • Main Tech: helm, volume
  • See more: [[https://github.com/dennyzhang/challenges-kubernetes/tree/master/bootcamp/Scenario-304][bootcamp/Scenario-304]]
  • TODO

#+BEGIN_HTML #+END_HTML

*** Scenario-401: Deploy a stateful service I

  • Objective: Deploy Jenkins in k8s
  • Requirements: #+BEGIN_EXAMPLE
  1. Deploy Jenkins service by helm.
  2. Make sure JENKINS_HOME directory persist
  3. Install slack and git Jenkins plugins during helm install
  4. Enable Jenkins slave agents during helm install
  5. Start 2 Jenkins masters. #+END_EXAMPLE
  • Main Tech:
  • See more: [[https://github.com/dennyzhang/challenges-kubernetes/tree/master/bootcamp/Scenario-401][bootcamp/Scenario-401]]
  • TODO

#+BEGIN_HTML #+END_HTML

*** Scenario-402: Deploy a stateful service II

  • Objective: Deploy Jenkins in k8s
  • Requirements: #+BEGIN_EXAMPLE
  1. Deploy Jenkins service by helm. 2 Jenkins master and 2 Jenkins agents
  2. Add health check for Jenkins agents (Hint: livenessProbe)
  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 #+END_EXAMPLE
  • Main Tech:
  • See more: [[https://github.com/dennyzhang/challenges-kubernetes/tree/master/bootcamp/Scenario-402][bootcamp/Scenario-402]]
  • TODO

*** Scenario-501: Day2 Mission: Setup Prometheus monitoring

  • Objective: Setup k8s monitoring
  • Requirements: #+BEGIN_EXAMPLE
  1. Setup prometheus monitoring for infra level
  2. Setup prometheus monitoring for application level #+END_EXAMPLE
  • Main Tech:
  • See more: [[bootcamp/Scenario-501][bootcamp/Scenario-501]]
  • TODO

*** Scenario-502: Day2 Mission: Prometheus Operator

  • Objective: Learn more about k8s operator concept
  • Requirements: #+BEGIN_EXAMPLE
  1. Enable prometheus operator
  2. AIOps: Use operator to respond to repetitive issues from monitoring system #+END_EXAMPLE
  • Main Tech:

  • See more: [[https://github.com/dennyzhang/challenges-kubernetes/tree/master/bootcamp/Scenario-502][bootcamp/Scenario-502]]

  • TODO #+BEGIN_HTML #+END_HTML ** More Resources License: Code is licensed under [[https://www.dennyzhang.com/wp-content/mit_license.txt][MIT License]].

  • More resources: run services on k8s cluster #+BEGIN_EXAMPLE 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 #+END_EXAMPLE

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

#+BEGIN_HTML

#+END_HTML

  • org-mode configuration :noexport: #+STARTUP: overview customtime noalign logdone showall #+DESCRIPTION: #+KEYWORDS: #+AUTHOR: Denny Zhang #+EMAIL: [email protected] #+TAGS: noexport(n) #+PRIORITIES: A D C #+OPTIONS: H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t #+OPTIONS: TeX:t LaTeX:nil skip:nil d:nil todo:t pri:nil tags:not-in-toc #+EXPORT_EXCLUDE_TAGS: exclude noexport #+SEQ_TODO: TODO HALF ASSIGN | DONE BYPASS DELEGATE CANCELED DEFERRED #+LINK_UP:
    #+LINK_HOME:
  • TODO export folder to github repo :noexport: ** TODO export challenges-k8s-networking to github :noexport: ** TODO export challenges-k8s-sourcecode to github :noexport:
  • --8<-------------------------- separator ------------------------>8-- :noexport:

  • Blog: 10 Kubenetes Depcreated Features, But I still miss them :noexport: ** gitRepo https://github.com/kubernetes/kubernetes/issues/17676#issuecomment-228650586 ** heapster
  • TODO How I can easily list all questions for k8s sub-domains :noexport:
  • TODO manage sns bottom: /Users/zdenny/Dropbox/git_code/quiz.dennyzhang.com/posts/kubernetes-concept :noexport:
  • TODO Adsense page view count is so so wrong :noexport:
  • TODO less indentation: https://kubernetes.dennyzhang.com/challenges-k8s-federation :noexport:
  • TODO Put adsense to lower position: https://kubernetes.dennyzhang.com/challenges-k8s-monitoring :noexport:
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].