💥 PICK mentoring session #VAIIIIII

This commit is contained in:
Jérôme Petazzoni
2024-10-03 08:34:25 +02:00
parent 543204b905
commit 03430102b1
6 changed files with 71 additions and 167 deletions

View File

@@ -2,6 +2,7 @@
#/ /kube-halfday.yml.html 200!
#/ /kube-fullday.yml.html 200!
#/ /kube-twodays.yml.html 200!
/ /pick.yml.html 200!
# And this allows to do "git clone https://container.training".
/info/refs service=git-upload-pack https://github.com/jpetazzo/container.training/info/refs?service=git-upload-pack

View File

@@ -1,4 +1,6 @@
## 19,000 words
# kubectl create deployment
... in 19,000 words!
They say, "a picture is worth one thousand words."

View File

@@ -1,10 +1,6 @@
# Building our own cluster (hard)
# Adding nodes to the cluster
- This section assumes that you already went through
*“Building our own cluster (medium)”*
- In that previous section, we built a cluster with a single node
- In the previous section, we built a cluster with a single node
- In this new section, we're going to add more nodes to the cluster

View File

@@ -1,95 +1,17 @@
# Building our own cluster (medium)
# Building a 1-node cluster
- This section assumes that you already went through
- Ingredients: a Linux machine with...
*“Building our own cluster (easy)”*
- Ubuntu LTS
- In that section, we saw how to run each control plane component manually...
- Kubernetes, etcd, and CNI binaries installed
...but with an older version of Kubernetes (1.19)
- In this section, we're going to do something similar...
...but with recent versions of Kubernetes!
- Note: we won't need the lab environment of that previous section
(we're going to build a new cluster from scratch)
---
## What remains the same
- We'll use machines with Kubernetes binaries pre-downloaded
- We'll run individual components by hand
(etcd, API server, controller manager, scheduler, kubelet)
- We'll run on a single node
(but we'll be laying the groundwork to add more nodes)
- We'll get the cluster to the point where we can run and expose pods
---
## What's different
- We'll need to generate TLS keys and certificates
(because it's mandatory with recent versions of Kubernetes)
- Things will be *a little bit more* secure
(but still not 100% secure, far from it!)
- We'll use containerd instead of Docker
(you could probably try with CRI-O or another CRI engine, too)
- We'll need to set up CNI for networking
- *And we won't do everything as root this time (but we might use `sudo` a lot)*
---
## Our environment
- We will use the machine indicated as `polykube1`
- This machine:
- runs Ubuntu LTS
- has Kubernetes, etcd, and CNI binaries installed
- but nothing is running
---
## Checking our environment
- Let's make sure we have everything we need first
.lab[
- Log into the `polykube1` machine
- Check available versions:
```bash
etcd -version
kube-apiserver --version
```
]
- nothing is running
---
## The plan
We'll follow the same methodology as for the "easy" section
1. Start API server
2. Interact with it (create Deployment and Service)
@@ -100,21 +22,6 @@ We'll follow the same methodology as for the "easy" section
---
## Dealing with multiple processes
- Again, we are going to start many processes
- Depending on what you're comfortable with, you can:
- open multiple windows and multiple SSH connections
- use a terminal multiplexer like screen or tmux
- put processes in the background with `&`
<br/>(warning: log output might get confusing to read!)
---
## Starting API server
.lab[
@@ -133,7 +40,7 @@ We'll follow the same methodology as for the "easy" section
]
Just like before, we'll need to start etcd.
We'll need to start etcd.
But we'll also need some TLS keys!

View File

@@ -1,63 +1,11 @@
## Introductions
⚠️ This slide should be customized by the tutorial instructor(s).
- Hello! I'm Jérôme Petazzoni
<!--
- Hello! We are:
- 👷🏻‍♀️ AJ ([@s0ulshake], [EphemeraSearch], [Quantgene])
- 🚁 Alexandre ([@alexbuisine], Enix SAS)
- 🐳 Jérôme ([@jpetazzo], [@jpetazzo@hachyderm.io], Ardan Labs)
- 🐳 Jérôme ([@jpetazzo], [@jpetazzo@hachyderm.io], Enix SAS)
- 🐳 Jérôme ([@jpetazzo], [@jpetazzo@hachyderm.io], Tiny Shell Script LLC)
-->
<!--
- The training will run for 4 hours, with a 10 minutes break every hour
(the middle break will be a bit longer)
-->
<!--
- The workshop will run from XXX to YYY
- There will be a lunch break at ZZZ
(And coffee breaks!)
-->
<!--
([@jpetazzo@hachyderm.io], Tiny Shell Script LLC)
- Feel free to interrupt for questions at any time
- *Especially when you see full screen container pictures!*
- Live feedback, questions, help: @@CHAT@@
-->
<!--
- You ~~should~~ must ask questions! Lots of questions!
(especially when you see full screen container pictures)
- Use @@CHAT@@ to ask questions, get help, etc.
-->
<!-- -->
[@alexbuisine]: https://twitter.com/alexbuisine
[EphemeraSearch]: https://ephemerasearch.com/
[@jpetazzo]: https://twitter.com/jpetazzo
@@ -67,16 +15,36 @@
---
## Exercises
## Goals today
- At the end of each day, there is a series of exercises
Prepare for the CKA exam!
- To make the most out of the training, please try the exercises!
--
(it will help to practice and memorize the content of the day)
*How?*
- We recommend to take at least one hour to work on the exercises
--
(if you understood the content of the day, it will be much faster)
Acquire deep understanding of Kubernetes internals!
- Each day will start with a quick review of the exercises of the previous day
--
*How?*
--
Build a Kubernetes cluster by hand!
---
## History of this talk
- [2018 CKA preparation](https://github.com/jpetazzo/dessine-moi-un-cluster)
- [2019 LISA talk by Jérôme Petazzoni](https://www.youtube.com/watch?v=3KtEAa7_duA)
- Kubernetes admin/ops training classes
- [2023 Devoxx talk by Denis Germain](https://www.youtube.com/watch?v=OCMNA0dSAzc)
- More Kubernetes admin/ops training classes

30
slides/pick.yml Normal file
View File

@@ -0,0 +1,30 @@
title: |
Building a Kubernetes Cluster
one piece at a time
#chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)"
#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)"
chat: "(In Google Meet!)"
gitrepo: github.com/jpetazzo/container.training
slides: https://2024-10-pick.container.training/
#slidenumberprefix: "#SomeHashTag &mdash; "
exclude:
- self-paced
content:
- shared/title.md
- logistics.md
- shared/toc.md
-
- k8s/deploymentslideshow.md
- k8s/dmuc-medium.md
- k8s/dmuc-hard.md
- k8s/cni-internals.md
- k8s/apilb.md
- k8s/control-plane-auth.md
- shared/thankyou.md