Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dennyzhang/challenges-kubernetes

:cloud: Challenges Your Kubernetes Skills And Knowledge
https://github.com/dennyzhang/challenges-kubernetes

denny-challenges denny-kubernetes kubernetes

Last synced: about 2 months ago
JSON representation

:cloud: Challenges Your Kubernetes Skills And Knowledge

Awesome Lists containing this project

README

        

* 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

- More resources: k8s cluster itself
#+BEGIN_EXAMPLE
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
#+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: