Professional Documents
Culture Documents
Kubernetes II Deep Dive
Kubernetes II Deep Dive
Homework dn.dev/kube-tutorial
dn.dev/kubemaster2
1
Upcoming DevNation Schedule
Master Italy (Italian) France (French) Brazil (Portuguese) USA (English) Mexico (Spanish)
Course UTC: 8:00 UTC 11:00 UTC 15:00 UTC 16:00 UTC 18:00
Series Local 10:00 Local 13:00 Local 12:00 Local 12:00 Eastern Local 13:00
Central Standard
Apr 27-28 2021 Red Hat Summit Red Hat Summit Red Hat Summit Red Hat Summit Red Hat Summit
dn.dev/master
@burrsutter
burr@redhat.com
dn.dev/kubemaster2
dn.dev/kubemaster2
https://www.surveymonkey.com/r/Y
HFRFC7
Edson’s Survey
https://www.surveymonkey.com/r/2V727GL
dn.dev/kubemaster2
@kamesh_sampath
● Email: kameshs@redhat.com
● OpenSource Contributor for more than a decade
○ Minikube
○ Eclipse Che
○ Camel-K
dn.dev/kubemaster2
Survey Link
https://www.surveymonkey.com/r/MYWRGZW
dn.dev/kubemaster2
Alex Soto (lordofthejars.com)
● @alexsotob
● asotobue@redhat.com
● Currently Red Hat’s Director of Developer Experience
● Featured speaker at technology events around the globe
● A Java Champion since 2017
● Writer, University Professor, Radio collaborator
● A big fan of testing and continuous delivery in 21st century
dn.dev/kubemaster1
Alex Survey
https://www.surveymonkey.com/r/2LGVLGM
dn.dev/kubemaster2
Sebastien Blanc
● @sebi2706
● sblanc@redhat.com
● Currently Red Hat’s Director of Developer Experience
● Featured speaker at technology events around the globe
● Java Champion
● Co-organizer of Riviera DEV
● Passion-Driven-Developer with one goal : share his passion
by giving talks that are pragmatic, fun and focused on live
coding
dn.dev/kubemaster2
@elderjava
● Developer Advocate at Red Hat
● Java Champion
● Board Member at SouJava
● Featured speaker at developers conferences around the
world
● Helps Java developers to build and deliver awesome
applications
dn.dev/kubemaster2
Elder Moraes
instagram.com/eldermoraes ● Developer Advocate at Red Hat
● Java Champion
● Board Member at SouJava
● Featured speaker at developers conferences around the
world
● Helps Java developers to build and deliver awesome
applications
dn.dev/kubemaster2
Elder Survey
https://www.surveymonkey.com/r/2L5NSVF
dn.dev/kubemaster2
Ana Mihalceanu
● @ammbra1508
● Currently Developer Advocate at Red Hat
● Java Champion and Certified Architect
● Co-founder of Bucharest Software Craftmanship Community
● Featured speaker at technology events around the globe
● Loving to solve challenging technical scenarios that involve
Java-based frameworks and multiple cloud providers
dn.dev/kubemaster2
Natale Vinto
$ oc whoami
@natalevinto
Formerly CoreOS
Kubernetes Operators, O’Reilly 2020
OpenShift for Developers, O’Reilly 2021 (link at end!)
joshix@redhat.com
dn.dev/kubemaster2
Agenda
Part I Part II Part III
• Why Kubernetes • Building Images • Volumes
• What is Kubernetes • Resource Limits • Secrets
• Installation • Rolling Updates • Operators
• kubectl • Liveness & Readiness • Taints & Affinity
• Pod • Env & ConfigMap • Jobs & CronJobs
• ReplicaSet • DaemonSet
• Deployment • StatefulSets
• logs, stern
• Apps as a Service
dn.dev/kubemaster2
Agenda
Part I Part II
• Why Kubernetes • Building Images
• What is Kubernetes • Resource Limits
• Installation • Rolling Updates
• kubectl • Liveness & Readiness
• Pod • Env & ConfigMap
• ReplicaSet
• Deployment
• logs, stern
• Apps as a Service
dn.dev/kubemaster2
What’s your experience level?
https://www.menti.com/oqdkxdw5ru
dn.dev/kubemaster2
Developer
DeveloperSandbox!
Sandbox!
https://developers.redhat.com/developer-sandbox
dn.dev/kubemaster2
Quick Recap
Kubernetes Deep Dive I
dn.dev/kubemaster2
DevOps Challenges for Multiple Containers
▪ How to scale?
▪ How to avoid port conflicts? Node Node Node
▪ How to manage them on multiple
hosts?
▪ What happens if a host has trouble?
▪ How to keep them running? Node Node Node
▪ How to update them?
▪ Rebuild Container Images?
Logger
dn.dev/kubemaster2
Kubernetes Terms
Pod Replicaset/ Service Persistent Label
Deployment Volume
dn.dev/kubemaster2
Building Images
dn.dev/kubemaster2
Recap: Dockerfile
dn.dev/kubemaster2
Running an image on Kubernetes
dn.dev/kubemaster2
Image Builders
Options Include:
A. docker build then kubectl run or kubectl create -f deploy.yml
B. Fabric8 maven plugin (fabric8.io) (Eclipse JKube)
C. Jib - Maven/Gradle plugin
D. s2i - source to image
E. Knative Build - source to image, source to url (Tekton.dev)
F. Instead of docker...
a. Red Hat's podman/buildah, Google's kaniko, Uber's makisu
G. Buildpacks - similar to Heroku & Cloud Foundry
dn.dev/kubemaster2
Managing Yaml
Options Include:
A. Helm Charts - but for Tiller (Tiller going away in 3)
B. Kompose - converts docker-compose.yml to kubernetes yaml
C. jsonnet - https://jsonnet.org/articles/kubernetes.html
D. Ksonnet - templating for Kubernetes manifests (archived)
E. Kapitan - templating for Kubernetes manifests (helm, kapitan, kustomize)
F. Kustomize - templating for Kubernetes manifests (Helm vs Kustomize)
dn.dev/kubemaster2
Do NOT Java + Docker == FAIL
Slides: bit.ly/javadockerfail
Recording: JBCNConf 2017
docker run -m 100MB openjdk:8u121 java
-XshowSettings:vm -version
dn.dev/kubemaster2
Building Exercises
View exercises
dn.dev/kubemaster2
Resource Limits
dn.dev/kubemaster2
The hidden truth of containers
Containers are about sharing and deployment density
costs memory
dn.dev/kubemaster2
Resource Requests/Limits
resources:
requests:
memory: "300Mi"
cpu: "250m" # 1/4 core
limits:
memory: "400Mi"
cpu: "1000m" # 1 core
dn.dev/kubemaster2
Resource Limits Exercises
View exercises
dn.dev/kubemaster2
Rolling Updates
dn.dev/kubemaster2
“Rolling updates allow
Deployments' update to take
place with zero downtime by
incrementally updating Pods
instances with new ones.”
https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/
dn.dev/kubemaster2
Rolling Update Exercises
View exercises
dn.dev/kubemaster2
Liveness & Readiness
dn.dev/kubemaster2
“The kubelet uses liveness probes to
know when to restart a container.”
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
dn.dev/kubemaster2
Example
resources:
requests:
memory: "300Mi"
cpu: "250m" # 1/4 core
limits:
memory: "400Mi"
cpu: "1000m" # 1 core
livenessProbe:
kubectl create -f Deployment.yml httpGet:
port: 8080
path: /
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 2
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
dn.dev/kubemaster2 periodSeconds: 3
Live & Ready Exercises
View exercises
dn.dev/kubemaster2
Environment & ConfigMap
dn.dev/kubemaster2
env vars & configmaps
An app’s config is everything that is likely to vary between deploys (staging, production,
developer environments, etc). 12 Factor Apps
kubectl set env deployment/myboot DBCONN="jdbc:sqlserver://45.91.12.123:1443;user=MyUserName;password=*****;"
dn.dev/kubemaster2
ConfigMaps
kubectl create cm my-config --from-env-file=config/some.properties
dn.dev/kubemaster2
Exercises
External Configuration Secrets exercise
dn.dev/kubemaster2
What’s Next?
dn.dev/kubemaster2
DevNation Summer Labs! 🏖
dn.dev/kubemaster2
Free Resources
dn.dev/kubemaster2
Download
bit.ly/istiobook
dn.dev/kubemaster2
Download
bit.ly/javamicroservicesbook
dn.dev/kubemaster2
Download
dn.dev/k8spatterns1
dn.dev/kubemaster2
Download
dn.dev/knative-cookbook
dn.dev/kubemaster2
Download
bit.ly/mono2microdb
dn.dev/kubemaster2
Download
https://red.ht/modernize-enterprise-java
dn.dev/kubemaster2
Download
https://red.ht/3IxJCzY
dn.dev/kubemaster2
The End
dn.dev/kubemaster2
Backup Content
dn.dev/kubemaster2
Blue/Green
Deployment
dn.dev/kubemaster2
Blue/Green Deployment
BUILD
SCM
dn.dev/kubemaster2
Blue/Green Deployment
BUILD
SCM
dn.dev/kubemaster2
Blue/Green Deployment
BUILD
SCM
dn.dev/kubemaster2
Blue/Green Deployment
BUILD
SCM
dn.dev/kubemaster2
Blue/Green Deployment
SCM BUILD
dn.dev/kubemaster2
Blue/Green Deployment
SCM
dn.dev/kubemaster2
Blue/Green Deployment
SCM
x
dn.dev/kubemaster2
Blue/Green Deployment
SCM
dn.dev/kubemaster2
Blue/Green Exercises
View exercises
dn.dev/kubemaster2
Custom Resource Definitions
dn.dev/kubemaster2
Pizzas or Kafkas
apiVersion: kafka.strimzi.io/v1alpha1
kind: Kafka
metadata:
name: mycluster
spec:
kafka: apiVersion: mykubernetes.burrsutter.com/v1beta2
replicas: 3 kind: Pizza
listeners: metadata:
external: name: themeats
type: route spec:
storage: toppings:
type: ephemeral - mozzarella
zookeeper: - pepperoni
replicas: 3 - sausage
storage: - bacon
type: ephemeral sauce: extra
entityOperator:
topicOperator: {}
userOperator: {}
dn.dev/kubemaster2
http://strimzi.io/
Apache Kafka on
Kubernetes & OpenShift
dn.dev/kubemaster2
Beyond Managing Yaml - Operators
Helm
Ansible
Go
Operator SDK
https://github.com/operator-framework/operator-sdk
dn.dev/kubemaster2
Operatorhub.io
dn.dev/kubemaster2
CRD Exercises
View exercises
dn.dev/kubemaster2
dn.dev/kubemaster2