# Training: Kubernetes and ECP
---
## Plat du jour
12:30 - Containers & Kubernetes
13:45 - Helm
14:15 - 15 minutes break/discussion
14:30 - Installation ECP on Kubernetes
15:30 - Questions/discussion
16:00 - The End
---
## A little bit of history
https://www.youtube.com/watch?v=BE77h7dmoQU
---
## The year 2013
- Cloud gained traction ("every company was an internet company")
- Movement from pure virtualization to IaaS/Cloud: Automation!
- AWS was No. 1 - Google had to catch up
- Docker came out: Accessible containers, bridging the gap between dev and ops
---
## 2013 & 2014
- Fun fact: The tech used by Docker has been there for the last 10 years.
- Google Borg: internal container orchestration at Google
- Kubernetes started as a collection of shells scripts
- Joe Beda, Brendan Burns, Craig McLuckie
- "κυβερνήτης": helmsman/pilot
---
## Another fun fact
- OpenShift was this close to build on Mesos but they changed their minds in the last minute to use Kubernetes.
---
## Hardware, Virtual Machines, Containers
- capacity planning/economic viability
- reliability
- reliable performance with varying load
[
The Ideal Versus the Real: Revisiting the History of Virtual Machines and Containers
](https://dl.acm.org/doi/fullHtml/10.1145/3365199)
---

---

---

---



---
## What is a container?
---
## So what do we need Kubernetes for?
---
- Automatic container management (start, stop, restart, move between nodes)
- CPU & memory management
- Storage/volume management
- Configuration data management
- Networking/Network isolation
- Access management
---
## What makes Kubernetes special?
### API-centric
### Declarative
### Open Source
---
## API-centric
- Only interaction with cluster is through API
- HTTPS as standard protocol
- JSON as standard data format
---
## API-centric
"Show me all applications running in the cluster!"
[https://api.cluster.example.org/apis/apps/v1/deployments](http://localhost:8001/apis/apps/v1/deployments)
---
## API-centric
"Show me all the cluster nodes!"
[https://api.cluster.example.org/api/v1/nodes](http://localhost:8001/api/v1/nodes)
---
## API-centric: API Discovery
"Show me all the APIs"
[https://api.cluster.example.org/apis](http://localhost:8001/apis)
---
## Declarative
Kubernetes objects as "record of intent"
---
## Declarative
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
```
---
## Open Source
- over 5000 individuals per quarter
- ~1000 contributing companies per quarter
- Google, Red Hat, Microsoft, VMWare, IBM, Amazon, Intel, ...
- German contributors among top 5
- Market size: 1.8B USD 2022 => 7.8B USD 2030
---
## Furthermore?
Semi-automatic scaling (Replicas)
Fully-automatic scaling (HPA)
Support for Windows workers
Kubernetes as managed service at all Cloud providers (incl. German ones)
Pod and Cluster Networking
---
## What's a cluster made of?
---
<!-- .slide: data-background="https://hackmd.io/_uploads/SyGxfTL1a.png" data-background-size="contain" -->
---
## Native Microservices
- **Tenant**: Namespace
- **Container**: Deployment/DaemonSet/StatefulSet
- **Configuration**: ConfigMap/Secret
- **Storage**: PersistentVolumeClaim/PersistentVolume
- **Networking**: Service/Ingress
- **Access Control**: ServiceAccount/Role/RoleBinding
---
## Basic Objects
Namespace
Deployment
Secret
ConfigMap
Service
---
## Demo: Kubernetes Dashboard
```
kubectl apply -f dashboard.yaml
```
---
## Application Management
- Packaging
- Versioning
- Provisioning
- Installation
- Configuration
- Upgrades
- Downgrades/Rollbacks
---
## Helm
- Software packaging and management
- Provisioning
---
<!-- .slide: data-background="https://hackmd.io/_uploads/SJivRZwJ6.png" data-background-size="contain" -->
---
## ECP with Helm
---
## Links
- [Kubernetes In Docker (kind)](https://kind.sigs.k8s.io/)
- [Kubernetes Documentary](https://www.youtube.com/watch?v=BE77h7dmoQU)
- [Kubernetes The Hard Way](https://github.com/kelseyhightower/kubernetes-the-hard-way)
- [Kubernetes Tutorials](https://kubernetes.io/docs/tutorials/)
- [Understanding Core Kubernetes Concepts & Components](https://www.weave.works/blog/understanding-kubernetes-components)
- [Checklist: How do you know when you’re ready to run your Kubernetes cluster in production?](https://www.weave.works/blog/production-ready-checklist-kubernetes)
- [Running Kubernetes on bare-metal](https://makk.es/blog/k8s-at-home/)
- [An Introduction to Helm](https://www.youtube.com/watch?v=Zzwq9FmZdsU)
{"title":"Kubernetes & ECP","slideOptions":"{\"theme\":\"league\",\"slideNumber\":false,\"transition\":\"slide\",\"hash\":true,\"controls\":false}","contributors":"[{\"id\":\"cf762212-f60b-4262-b7b4-bbc298ae97a0\",\"add\":7392,\"del\":2317}]","description":"12:30 - Containers & Kubernetes13:45 - Helm14:15 - 15 minutes break/discussion14:30 - Installation ECP on Kubernetes15:30 - Questions/discussion16:00 - The End"}