SlideShare a Scribd company logo
1 of 123
Download to read offline
Wie Chefkoch.de
mit Containern
arbeitet
ein Vortrag von Per Bernhardt
Mein Name ist Per
http://perprogramming.de
Ich bin ein Chefkoch
http://www.chefkoch.de
Agenda
Agenda
1. Container? WTF?
Agenda
1. Container? WTF?
2. Kubernetes
Agenda
1. Container? WTF?
2. Kubernetes
3. Herausforderungen
Agenda
1. Container? WTF?
2. Kubernetes
3. Herausforderungen
4. Fazit
Agenda
1. Container? WTF?
2. Kubernetes
3. Herausforderungen
5. Fragen??
4. Fazit
Container? WTF?
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
A
LT
N
EU
A
LT
Deploy Deploy DeployDeploy
Deploy Deploy DeployDeploy
N
EU
A
LT
Ops Dev
N
EU
Ops Dev
N
EU
Ops Dev
?
Orchestrierung!
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Helios
Apache
Helios
Apache
Helios
Apache
Helios
Apache
Helios
Apache
Helios
ECS
Apache
Helios
ECS
Apache
Helios
ECS
…
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes
Cluster
core@core-01 ~ $ kubectl --server=https://core01.fra.chefkoch.net:6443 get nodes
NAME LABELS STATUS
10.10.0.100 kubernetes.io/hostname=10.10.0.100,name=core01.cgn Ready
10.10.0.101 kubernetes.io/hostname=10.10.0.101,name=core01.fra Ready
10.10.0.102 kubernetes.io/hostname=10.10.0.102,name=core02.fra Ready
10.10.0.104 kubernetes.io/hostname=10.10.0.104,name=core03.fra Ready
10.10.0.105 kubernetes.io/hostname=10.10.0.105,name=bigdata02.fra Ready
10.10.0.106 kubernetes.io/hostname=10.10.0.106,name=bigdata01.cgn Ready
10.10.0.107 kubernetes.io/hostname=10.10.0.107,name=bigdata01.fra Ready
10.10.0.108 kubernetes.io/hostname=10.10.0.108,name=core06.fra Ready
10.10.0.109 kubernetes.io/hostname=10.10.0.109,name=core05.fra Ready
10.10.0.110 kubernetes.io/hostname=10.10.0.110,name=core04.fra Ready
Namespaces
core@core-01 ~ $ kubectl get namespaces
NAME LABELS STATUS
default <none> Active
core@core-01 ~ $ kubectl get namespaces
NAME LABELS STATUS
default <none> Active
core@core-01 ~ $ kubectl --namespace=default get all
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
NAME LABELS SELECTOR IP(S) PORT(S)
NAME READY STATUS RESTARTS AGE
NAME LABELS STATUS VOLUME
core@core-01 ~ $ kubectl config view
apiVersion: v1
kind: Config
clusters:
- name: production

cluster:
server: https://core01.fra.chefkoch.net:6443
contexts:
- name: foobar.production 

context:
cluster: production
namespace: foobar
user: john.doe
users:
- name: john.doe
user:
username: john.doe
password: p4ssw0rd
current-context: ""
core@core-01 ~ $ kubectl config view
apiVersion: v1
kind: Config
clusters:
- name: production

cluster:
server: https://core01.fra.chefkoch.net:6443
contexts:
- name: foobar.production 

context:
cluster: production
namespace: foobar
user: john.doe
users:
- name: john.doe
user:
username: john.doe
password: p4ssw0rd
current-context: ""
core@core-01 ~ $ kubectl --context=foobar.production get all
core@core-01 ~ $ kubectl config view
apiVersion: v1
kind: Config
clusters:
- name: production

cluster:
server: https://core01.fra.chefkoch.net:6443
contexts:
- name: foobar.production 

context:
cluster: production
namespace: foobar
user: john.doe
users:
- name: john.doe
user:
username: john.doe
password: p4ssw0rd
current-context: ""
core@core-01 ~ $ kubectl --context=foobar.production get all
core@core-01 ~ $ kubectl --cluster=production get all
core@core-01 ~ $ kubectl config view
apiVersion: v1
kind: Config
clusters:
- name: production

cluster:
server: https://core01.fra.chefkoch.net:6443
contexts:
- name: foobar.production 

context:
cluster: production
namespace: foobar
user: john.doe
users:
- name: john.doe
user:
username: john.doe
password: p4ssw0rd
current-context: ""
core@core-01 ~ $ kubectl --context=foobar.production get all
core@core-01 ~ $ kubectl --cluster=production get all
core@core-01 ~ $ kubectl --username=john.doe --password=p4ssw0rd get all
core@core-01 ~ $ kubectl config view
apiVersion: v1
kind: Config
clusters:
- name: production

cluster:
server: https://core01.fra.chefkoch.net:6443
contexts:
- name: foobar.production 

context:
cluster: production
namespace: foobar
user: john.doe
users:
- name: john.doe
user:
username: john.doe
password: p4ssw0rd
current-context: ""
core@core-01 ~ $ kubectl config use-context foobar.production
core@core-01 ~ $ kubectl --context=foobar.production get all
core@core-01 ~ $ kubectl --cluster=production get all
core@core-01 ~ $ kubectl --username=john.doe --password=p4ssw0rd get all
Pods
apiVersion: v1
kind: Pod
metadata:
name: my-symfony-app
labels:
name: my-symfony-app
spec:
containers:
- name: nginx
image: my-symfony-app
command: [nginx]
volumeMounts:
- {name: socket, mountPath: /run}
- name: php-fpm
image: my-symfony-app
command: [php5-fpm]
volumeMounts:
- {name: socket, mountPath: /run}
volumes:
- {name: socket, emptyDir: {medium: Memory}}
my-symfony-app.yml
core@core-01 ~ $ kubectl create -f my-symfony-app.yml
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app.yml
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app.yml
core@core-01 ~ $ kubectl logs my-symfony-app -c php-fpm
[15-Oct-2015 15:29:45] NOTICE: fpm is running, pid 1
[15-Oct-2015 15:29:45] NOTICE: ready to handle connections
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app.yml
core@core-01 ~ $ kubectl delete pod my-symfony-app
core@core-01 ~ $ kubectl logs my-symfony-app -c php-fpm
[15-Oct-2015 15:29:45] NOTICE: fpm is running, pid 1
[15-Oct-2015 15:29:45] NOTICE: ready to handle connections
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app.yml
core@core-01 ~ $ kubectl delete pod my-symfony-app
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
core@core-01 ~ $ kubectl logs my-symfony-app -c php-fpm
[15-Oct-2015 15:29:45] NOTICE: fpm is running, pid 1
[15-Oct-2015 15:29:45] NOTICE: ready to handle connections
Features, Features, Features!
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
• Ressourcen-Limits
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
• Ressourcen-Limits
• Verschiedene Mounts
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
• Ressourcen-Limits
• Verschiedene Mounts
• GCE
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
• Ressourcen-Limits
• Verschiedene Mounts
• GCE
• AWS EBS
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
• Ressourcen-Limits
• Verschiedene Mounts
• GCE
• AWS EBS
• iSCSI
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
• Ressourcen-Limits
• Verschiedene Mounts
• GCE
• AWS EBS
• iSCSI
• NFS
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
• Ressourcen-Limits
• Verschiedene Mounts
• GCE
• AWS EBS
• iSCSI
• NFS
• Glusterfs
Features, Features, Features!
• Readiness-Probe, Liveness-Probe
• Livecycle-Hooks
• ImagePull-Policy
• Ressourcen-Limits
• Verschiedene Mounts
• GCE
• AWS EBS
• iSCSI
• NFS
• Glusterfs
• Git-Repo
ReplicationController
apiVersion: v1
kind: ReplicationController
metadata:
name: my-symfony-app
spec:
selector:
name: my-symfony-app
replicas: 5
template:
// Inhalt von my-symfony-app.yml
my-symfony-app-rc.yml
core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-jzd97 2/2 Running 0 2s
my-symfony-app-193aw 2/2 Running 0 2s
my-symfony-app-bicex 2/2 Running 0 2s
my-symfony-app-r2in0 2/2 Running 0 2s
my-symfony-app-lbo54 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-jzd97 2/2 Running 0 2s
my-symfony-app-193aw 2/2 Running 0 2s
my-symfony-app-bicex 2/2 Running 0 2s
my-symfony-app-r2in0 2/2 Running 0 2s
my-symfony-app-lbo54 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml
core@core-01 ~ $ kubectl delete pods --all
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-jzd97 2/2 Running 0 2s
my-symfony-app-193aw 2/2 Running 0 2s
my-symfony-app-bicex 2/2 Running 0 2s
my-symfony-app-r2in0 2/2 Running 0 2s
my-symfony-app-lbo54 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml
core@core-01 ~ $ kubectl delete pods --all
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-9tbfb 2/2 Running 0 2s
my-symfony-app-ui6yv 2/2 Running 0 2s
my-symfony-app-cx9te 2/2 Running 0 2s
my-symfony-app-ui6yv 2/2 Running 0 2s
my-symfony-app-tgquh 2/2 Running 0 2s
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-jzd97 2/2 Running 0 2s
my-symfony-app-193aw 2/2 Running 0 2s
my-symfony-app-bicex 2/2 Running 0 2s
my-symfony-app-r2in0 2/2 Running 0 2s
my-symfony-app-lbo54 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml
core@core-01 ~ $ kubectl delete pods --all
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-9tbfb 2/2 Running 0 2s
my-symfony-app-ui6yv 2/2 Running 0 2s
my-symfony-app-cx9te 2/2 Running 0 2s
my-symfony-app-ui6yv 2/2 Running 0 2s
my-symfony-app-tgquh 2/2 Running 0 2s
core@core-01 ~ $ kubectl scale --replicas=2 rc my-symfony-app
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-jzd97 2/2 Running 0 2s
my-symfony-app-193aw 2/2 Running 0 2s
my-symfony-app-bicex 2/2 Running 0 2s
my-symfony-app-r2in0 2/2 Running 0 2s
my-symfony-app-lbo54 2/2 Running 0 2s
core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml
core@core-01 ~ $ kubectl delete pods --all
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-9tbfb 2/2 Running 0 2s
my-symfony-app-ui6yv 2/2 Running 0 2s
my-symfony-app-cx9te 2/2 Running 0 2s
my-symfony-app-ui6yv 2/2 Running 0 2s
my-symfony-app-tgquh 2/2 Running 0 2s
core@core-01 ~ $ kubectl scale --replicas=2 rc my-symfony-app
core@core-01 ~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-symfony-app-9tbfb 2/2 Running 0 10s
my-symfony-app-ui6yv 2/2 Running 0 10s
Features, Features, Features!
Features, Features, Features!
• Rescheduling
Features, Features, Features!
• Rescheduling
• Rolling Updates
Features, Features, Features!
• Rescheduling
• Rolling Updates
• Multiple Release Tracks
Services
apiVersion: v1
kind: Service
metadata:
name: my-symfony-app
spec:
selector:
name: my-symfony-app
ports:
- port: 80
my-symfony-app-svc.yml
core@core-01 ~ $ kubectl create -f my-symfony-app-svc.yml
core@core-01 ~ $ kubectl get services
NAME LABELS SELECTOR IP(S) PORT(S)
my-symfony-app name=my-symfony-app name=my-symfony-app 80/TCP
core@core-01 ~ $ kubectl create -f my-symfony-app-svc.yml
core@core-01 ~ $ kubectl get services
NAME LABELS SELECTOR IP(S) PORT(S)
my-symfony-app name=my-symfony-app name=my-symfony-app 80/TCP
core@core-01 ~ $ kubectl create -f my-symfony-app-svc.yml
core@core-01 ~ $ kubectl exec -ti my-symfony-app -c nginx bash
root@my-symfony-app:/# curl -I my-symfony-app
HTTP/1.1 200 OK
Server: nginx/1.9.3 (Ubuntu)
Date: Fri, 16 Oct 2015 06:46:35 GMT
Content-Type: text/html
Content-Length: 177
Connection: keep-alive
Features, Features, Features!
Features, Features, Features!
• Renaming
Features, Features, Features!
• Renaming
• Load-Balancing
Features, Features, Features!
• Renaming
• Load-Balancing
• Node-Port
Features, Features, Features!
• Renaming
• Load-Balancing
• Node-Port
• Static Endpoints
Features, Features, Features!
• Renaming
• Load-Balancing
• Node-Port
• Static Endpoints
• Bidirektionale Verbindungen
Features, Features, Features!
• Renaming
• Load-Balancing
• Node-Port
• Static Endpoints
• Bidirektionale Verbindungen
• Das alles in Echtzeit!
Alles zusammen
Development (Vagrant Cluster)
NodePort
Service
RC
Pod
Namespace
Cluster
Testcluster
NodePort
Service
RC
Pod
Namespace
Cluster
Prodcluster
NodePort
Service
RC
Pod
Namespace
Cluster
Herausforderungen
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Bugs, Bugs, Bugs…
Bugs, Bugs, Bugs…
• Namespace-Isolation
Bugs, Bugs, Bugs…
• Namespace-Isolation
• Concurrent-Pull
Bugs, Bugs, Bugs…
• Namespace-Isolation
• Concurrent-Pull
• Orphan-Pull
Bugs, Bugs, Bugs…
• Namespace-Isolation
• Concurrent-Pull
• Orphan-Pull
• Exec-Timeout
Bugs, Bugs, Bugs…
• Namespace-Isolation
• Concurrent-Pull
• Orphan-Pull
• Exec-Timeout
• …
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Fehlende Features
Fehlende Features
• kubectl wait
Fehlende Features
• kubectl wait
• Variablen-Expansion
Fehlende Features
• kubectl wait
• Variablen-Expansion
• …
Fazit
Kubernetes: Wie Chefkoch.de mit Containern arbeitet
Container forcieren DevOps!
Container forcieren DevOps!
Container forcieren CD!
Container forcieren DevOps!
Container forcieren CD!
Orchestrierung ist komplex
Container forcieren DevOps!
Container forcieren CD!
Tooling ist Bleeding Edge
Orchestrierung ist komplex
Container forcieren DevOps!
Container forcieren CD!
Tooling ist Bleeding Edge
Orchestrierung ist komplex
Wir vertrauen auf Kubernetes!
?Fragen
http://chefkoch.jobs - We are hiring ;)
http://perprogramming.de
info@perprogramming.de
Danke!

More Related Content

What's hot

Datagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and Backgrideugenio pombi
 
Practical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppSmartLogic
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server Masahiro Nagano
 
Continuous deployment of puppet modules
Continuous deployment of puppet modulesContinuous deployment of puppet modules
Continuous deployment of puppet modulesWilliam O'Neill
 
Quality Use Of Plugin
Quality Use Of PluginQuality Use Of Plugin
Quality Use Of PluginYasuo Harada
 
Puppet at janrain
Puppet at janrainPuppet at janrain
Puppet at janrainPuppet
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode ChefSri Ram
 
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Zend by Rogue Wave Software
 
Selenium sandwich-3: Being where you aren't.
Selenium sandwich-3: Being where you aren't.Selenium sandwich-3: Being where you aren't.
Selenium sandwich-3: Being where you aren't.Workhorse Computing
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js ExpressEyal Vardi
 
Nodejs first class
Nodejs first classNodejs first class
Nodejs first classFin Chen
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparisonHiroshi Nakamura
 
Puppet and the HashiStack
Puppet and the HashiStackPuppet and the HashiStack
Puppet and the HashiStackBram Vogelaar
 
Lights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFeverLights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFeverbridgetkromhout
 
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com PuppetDevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com PuppetMarcelo Andrade
 
Deploying Rails Apps with Chef and Capistrano
 Deploying Rails Apps with Chef and Capistrano Deploying Rails Apps with Chef and Capistrano
Deploying Rails Apps with Chef and CapistranoSmartLogic
 
"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr VronskiyFwdays
 

What's hot (20)

Datagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and Backgrid
 
A Gentle Introduction to Event Loops
A Gentle Introduction to Event LoopsA Gentle Introduction to Event Loops
A Gentle Introduction to Event Loops
 
Practical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails App
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server
 
Continuous deployment of puppet modules
Continuous deployment of puppet modulesContinuous deployment of puppet modules
Continuous deployment of puppet modules
 
Quality Use Of Plugin
Quality Use Of PluginQuality Use Of Plugin
Quality Use Of Plugin
 
Puppet at janrain
Puppet at janrainPuppet at janrain
Puppet at janrain
 
Lies, Damn Lies, and Benchmarks
Lies, Damn Lies, and BenchmarksLies, Damn Lies, and Benchmarks
Lies, Damn Lies, and Benchmarks
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
 
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
 
Selenium sandwich-3: Being where you aren't.
Selenium sandwich-3: Being where you aren't.Selenium sandwich-3: Being where you aren't.
Selenium sandwich-3: Being where you aren't.
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js Express
 
Nodejs first class
Nodejs first classNodejs first class
Nodejs first class
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparison
 
Puppet and the HashiStack
Puppet and the HashiStackPuppet and the HashiStack
Puppet and the HashiStack
 
Plack - LPW 2009
Plack - LPW 2009Plack - LPW 2009
Plack - LPW 2009
 
Lights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFeverLights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFever
 
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com PuppetDevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
 
Deploying Rails Apps with Chef and Capistrano
 Deploying Rails Apps with Chef and Capistrano Deploying Rails Apps with Chef and Capistrano
Deploying Rails Apps with Chef and Capistrano
 
"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy
 

Viewers also liked

Cirrus Insight + Nuvem Consulting: Create a Winning Salesforce Roadmap
Cirrus Insight + Nuvem Consulting: Create a Winning Salesforce RoadmapCirrus Insight + Nuvem Consulting: Create a Winning Salesforce Roadmap
Cirrus Insight + Nuvem Consulting: Create a Winning Salesforce RoadmapCirrus Insight
 
Docker orchestration with Kubernetes
Docker orchestration with KubernetesDocker orchestration with Kubernetes
Docker orchestration with KubernetesSamuel ROZE
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to KubernetesRoss Kukulinski
 
Prometheus Monitoring
Prometheus MonitoringPrometheus Monitoring
Prometheus Monitoringinovex GmbH
 
Agile.2013.effecting.a.dev ops.transformation.at.salesforce
Agile.2013.effecting.a.dev ops.transformation.at.salesforceAgile.2013.effecting.a.dev ops.transformation.at.salesforce
Agile.2013.effecting.a.dev ops.transformation.at.salesforceDave Mangot
 
Magazin-Relaunch bei Chefkoch
Magazin-Relaunch bei ChefkochMagazin-Relaunch bei Chefkoch
Magazin-Relaunch bei ChefkochPer Bernhardt
 
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...OpenShift Origin
 
DevOps Kaizen: Find and Fix What is Really Behind Your Problems
DevOps Kaizen: Find and Fix What is Really Behind Your ProblemsDevOps Kaizen: Find and Fix What is Really Behind Your Problems
DevOps Kaizen: Find and Fix What is Really Behind Your Problemsdev2ops
 
DevOps Kaizen: Practical Steps to Start & Sustain a Transformation
DevOps Kaizen: Practical Steps to Start & Sustain a TransformationDevOps Kaizen: Practical Steps to Start & Sustain a Transformation
DevOps Kaizen: Practical Steps to Start & Sustain a Transformationdev2ops
 
OpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetesOpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetesSamuel Terburg
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to KubernetesImesh Gunaratne
 
Der Cloud Native Stack in a Nutshell. #CloudExpoEurope
Der Cloud Native Stack in a Nutshell. #CloudExpoEuropeDer Cloud Native Stack in a Nutshell. #CloudExpoEurope
Der Cloud Native Stack in a Nutshell. #CloudExpoEuropeMario-Leander Reimer
 

Viewers also liked (13)

Cirrus Insight + Nuvem Consulting: Create a Winning Salesforce Roadmap
Cirrus Insight + Nuvem Consulting: Create a Winning Salesforce RoadmapCirrus Insight + Nuvem Consulting: Create a Winning Salesforce Roadmap
Cirrus Insight + Nuvem Consulting: Create a Winning Salesforce Roadmap
 
Docker orchestration with Kubernetes
Docker orchestration with KubernetesDocker orchestration with Kubernetes
Docker orchestration with Kubernetes
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
Prometheus Monitoring
Prometheus MonitoringPrometheus Monitoring
Prometheus Monitoring
 
Agile.2013.effecting.a.dev ops.transformation.at.salesforce
Agile.2013.effecting.a.dev ops.transformation.at.salesforceAgile.2013.effecting.a.dev ops.transformation.at.salesforce
Agile.2013.effecting.a.dev ops.transformation.at.salesforce
 
Magazin-Relaunch bei Chefkoch
Magazin-Relaunch bei ChefkochMagazin-Relaunch bei Chefkoch
Magazin-Relaunch bei Chefkoch
 
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...
 
DevOps Kaizen: Find and Fix What is Really Behind Your Problems
DevOps Kaizen: Find and Fix What is Really Behind Your ProblemsDevOps Kaizen: Find and Fix What is Really Behind Your Problems
DevOps Kaizen: Find and Fix What is Really Behind Your Problems
 
DevOps Kaizen: Practical Steps to Start & Sustain a Transformation
DevOps Kaizen: Practical Steps to Start & Sustain a TransformationDevOps Kaizen: Practical Steps to Start & Sustain a Transformation
DevOps Kaizen: Practical Steps to Start & Sustain a Transformation
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
OpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetesOpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetes
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
Der Cloud Native Stack in a Nutshell. #CloudExpoEurope
Der Cloud Native Stack in a Nutshell. #CloudExpoEuropeDer Cloud Native Stack in a Nutshell. #CloudExpoEurope
Der Cloud Native Stack in a Nutshell. #CloudExpoEurope
 

Similar to Kubernetes: Wie Chefkoch.de mit Containern arbeitet

k8s practice 2023.pptx
k8s practice 2023.pptxk8s practice 2023.pptx
k8s practice 2023.pptxwonyong hwang
 
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmetHow Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmetDevOpsDaysJKT
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes NetworkingCJ Cullen
 
5 Kubernetes.pdf 5 Kubernetes.pdf 5 Kubernetes.pdf
5 Kubernetes.pdf 5 Kubernetes.pdf 5 Kubernetes.pdf5 Kubernetes.pdf 5 Kubernetes.pdf 5 Kubernetes.pdf
5 Kubernetes.pdf 5 Kubernetes.pdf 5 Kubernetes.pdfNuttavutThongjor1
 
Spring Into Kubernetes DFW
Spring Into Kubernetes DFWSpring Into Kubernetes DFW
Spring Into Kubernetes DFWVMware Tanzu
 
Kubernetes and its Infrastructure - a walkthrough from the paths of container...
Kubernetes and its Infrastructure - a walkthrough from the paths of container...Kubernetes and its Infrastructure - a walkthrough from the paths of container...
Kubernetes and its Infrastructure - a walkthrough from the paths of container...niharikadhanik
 
Infrastructure as code
Infrastructure as codeInfrastructure as code
Infrastructure as codedaisuke awaji
 
Kubernetes+-CKA-+0400+-+Application+Lifecycle+Management.pdf
Kubernetes+-CKA-+0400+-+Application+Lifecycle+Management.pdfKubernetes+-CKA-+0400+-+Application+Lifecycle+Management.pdf
Kubernetes+-CKA-+0400+-+Application+Lifecycle+Management.pdfSrinivasa Rao
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
Shakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud PlatformShakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud PlatformMinku Lee
 
Kubernetes Basic Operation
Kubernetes Basic OperationKubernetes Basic Operation
Kubernetes Basic OperationSimon Su
 
Deep dive in container service discovery
Deep dive in container service discoveryDeep dive in container service discovery
Deep dive in container service discoveryDocker, Inc.
 
Multinode kubernetes-cluster
Multinode kubernetes-clusterMultinode kubernetes-cluster
Multinode kubernetes-clusterRam Nath
 
Prometheus on NKS
Prometheus on NKSPrometheus on NKS
Prometheus on NKSJo Hoon
 
Kube Your Enthusiasm - Tyler Britten
Kube Your Enthusiasm - Tyler BrittenKube Your Enthusiasm - Tyler Britten
Kube Your Enthusiasm - Tyler BrittenVMware Tanzu
 
An Introduction to the Kubernetes API
An Introduction to the Kubernetes APIAn Introduction to the Kubernetes API
An Introduction to the Kubernetes APIStefan Schimanski
 
Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)HungWei Chiu
 
Composer for busy developers - DPC13
Composer for busy developers - DPC13Composer for busy developers - DPC13
Composer for busy developers - DPC13Rafael Dohms
 

Similar to Kubernetes: Wie Chefkoch.de mit Containern arbeitet (20)

k8s practice 2023.pptx
k8s practice 2023.pptxk8s practice 2023.pptx
k8s practice 2023.pptx
 
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmetHow Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
 
kubernetes practice
kubernetes practicekubernetes practice
kubernetes practice
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
 
5 Kubernetes.pdf 5 Kubernetes.pdf 5 Kubernetes.pdf
5 Kubernetes.pdf 5 Kubernetes.pdf 5 Kubernetes.pdf5 Kubernetes.pdf 5 Kubernetes.pdf 5 Kubernetes.pdf
5 Kubernetes.pdf 5 Kubernetes.pdf 5 Kubernetes.pdf
 
Spring Into Kubernetes DFW
Spring Into Kubernetes DFWSpring Into Kubernetes DFW
Spring Into Kubernetes DFW
 
Kubernetes and its Infrastructure - a walkthrough from the paths of container...
Kubernetes and its Infrastructure - a walkthrough from the paths of container...Kubernetes and its Infrastructure - a walkthrough from the paths of container...
Kubernetes and its Infrastructure - a walkthrough from the paths of container...
 
Infrastructure as code
Infrastructure as codeInfrastructure as code
Infrastructure as code
 
Kubernetes+-CKA-+0400+-+Application+Lifecycle+Management.pdf
Kubernetes+-CKA-+0400+-+Application+Lifecycle+Management.pdfKubernetes+-CKA-+0400+-+Application+Lifecycle+Management.pdf
Kubernetes+-CKA-+0400+-+Application+Lifecycle+Management.pdf
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Shakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud PlatformShakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud Platform
 
Kubernetes Basic Operation
Kubernetes Basic OperationKubernetes Basic Operation
Kubernetes Basic Operation
 
Deep dive in container service discovery
Deep dive in container service discoveryDeep dive in container service discovery
Deep dive in container service discovery
 
Multinode kubernetes-cluster
Multinode kubernetes-clusterMultinode kubernetes-cluster
Multinode kubernetes-cluster
 
Prometheus on NKS
Prometheus on NKSPrometheus on NKS
Prometheus on NKS
 
Learning kubernetes
Learning kubernetesLearning kubernetes
Learning kubernetes
 
Kube Your Enthusiasm - Tyler Britten
Kube Your Enthusiasm - Tyler BrittenKube Your Enthusiasm - Tyler Britten
Kube Your Enthusiasm - Tyler Britten
 
An Introduction to the Kubernetes API
An Introduction to the Kubernetes APIAn Introduction to the Kubernetes API
An Introduction to the Kubernetes API
 
Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)
 
Composer for busy developers - DPC13
Composer for busy developers - DPC13Composer for busy developers - DPC13
Composer for busy developers - DPC13
 

More from Per Bernhardt

Event Carried State Transfer @ LeanIX
Event Carried State Transfer @ LeanIXEvent Carried State Transfer @ LeanIX
Event Carried State Transfer @ LeanIXPer Bernhardt
 
Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021)
Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021)Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021)
Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021)Per Bernhardt
 
Microservice Test Strategy (@Bonn Code Meetup)
Microservice Test Strategy (@Bonn Code Meetup)Microservice Test Strategy (@Bonn Code Meetup)
Microservice Test Strategy (@Bonn Code Meetup)Per Bernhardt
 
Communication in a Microservice Architecture
Communication in a Microservice ArchitectureCommunication in a Microservice Architecture
Communication in a Microservice ArchitecturePer Bernhardt
 
Contract Tests mit Pact
Contract Tests mit PactContract Tests mit Pact
Contract Tests mit PactPer Bernhardt
 
Chefkoch goes Drupal8
Chefkoch goes Drupal8Chefkoch goes Drupal8
Chefkoch goes Drupal8Per Bernhardt
 
Umzug eines Hochlast-Dienstes
Umzug eines Hochlast-DienstesUmzug eines Hochlast-Dienstes
Umzug eines Hochlast-DienstesPer Bernhardt
 
kubernetes @ chefkoch.de - Kubernetes Meetup Cologne
kubernetes @ chefkoch.de - Kubernetes Meetup Colognekubernetes @ chefkoch.de - Kubernetes Meetup Cologne
kubernetes @ chefkoch.de - Kubernetes Meetup ColognePer Bernhardt
 
Continiuous Integration and Delivery with Bamboo
Continiuous Integration and Delivery with BambooContiniuous Integration and Delivery with Bamboo
Continiuous Integration and Delivery with BambooPer Bernhardt
 
Anwendungsintegration mit Edge Side Includes
Anwendungsintegration mit Edge Side IncludesAnwendungsintegration mit Edge Side Includes
Anwendungsintegration mit Edge Side IncludesPer Bernhardt
 

More from Per Bernhardt (11)

Die Rolle des CTO
Die Rolle des CTODie Rolle des CTO
Die Rolle des CTO
 
Event Carried State Transfer @ LeanIX
Event Carried State Transfer @ LeanIXEvent Carried State Transfer @ LeanIX
Event Carried State Transfer @ LeanIX
 
Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021)
Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021)Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021)
Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021)
 
Microservice Test Strategy (@Bonn Code Meetup)
Microservice Test Strategy (@Bonn Code Meetup)Microservice Test Strategy (@Bonn Code Meetup)
Microservice Test Strategy (@Bonn Code Meetup)
 
Communication in a Microservice Architecture
Communication in a Microservice ArchitectureCommunication in a Microservice Architecture
Communication in a Microservice Architecture
 
Contract Tests mit Pact
Contract Tests mit PactContract Tests mit Pact
Contract Tests mit Pact
 
Chefkoch goes Drupal8
Chefkoch goes Drupal8Chefkoch goes Drupal8
Chefkoch goes Drupal8
 
Umzug eines Hochlast-Dienstes
Umzug eines Hochlast-DienstesUmzug eines Hochlast-Dienstes
Umzug eines Hochlast-Dienstes
 
kubernetes @ chefkoch.de - Kubernetes Meetup Cologne
kubernetes @ chefkoch.de - Kubernetes Meetup Colognekubernetes @ chefkoch.de - Kubernetes Meetup Cologne
kubernetes @ chefkoch.de - Kubernetes Meetup Cologne
 
Continiuous Integration and Delivery with Bamboo
Continiuous Integration and Delivery with BambooContiniuous Integration and Delivery with Bamboo
Continiuous Integration and Delivery with Bamboo
 
Anwendungsintegration mit Edge Side Includes
Anwendungsintegration mit Edge Side IncludesAnwendungsintegration mit Edge Side Includes
Anwendungsintegration mit Edge Side Includes
 

Recently uploaded

Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLAlluxio, Inc.
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesShyamsundar Das
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기Chiwon Song
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxPrakarsh -
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 

Recently uploaded (20)

Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
Sustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire ThornewillSustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire Thornewill
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
 
Program with GUTs
Program with GUTsProgram with GUTs
Program with GUTs
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security Challenges
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptx
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 

Kubernetes: Wie Chefkoch.de mit Containern arbeitet

  • 2. Mein Name ist Per http://perprogramming.de Ich bin ein Chefkoch http://www.chefkoch.de
  • 6. Agenda 1. Container? WTF? 2. Kubernetes 3. Herausforderungen
  • 7. Agenda 1. Container? WTF? 2. Kubernetes 3. Herausforderungen 4. Fazit
  • 8. Agenda 1. Container? WTF? 2. Kubernetes 3. Herausforderungen 5. Fragen?? 4. Fazit
  • 17. A LT
  • 18. N EU
  • 45. core@core-01 ~ $ kubectl --server=https://core01.fra.chefkoch.net:6443 get nodes NAME LABELS STATUS 10.10.0.100 kubernetes.io/hostname=10.10.0.100,name=core01.cgn Ready 10.10.0.101 kubernetes.io/hostname=10.10.0.101,name=core01.fra Ready 10.10.0.102 kubernetes.io/hostname=10.10.0.102,name=core02.fra Ready 10.10.0.104 kubernetes.io/hostname=10.10.0.104,name=core03.fra Ready 10.10.0.105 kubernetes.io/hostname=10.10.0.105,name=bigdata02.fra Ready 10.10.0.106 kubernetes.io/hostname=10.10.0.106,name=bigdata01.cgn Ready 10.10.0.107 kubernetes.io/hostname=10.10.0.107,name=bigdata01.fra Ready 10.10.0.108 kubernetes.io/hostname=10.10.0.108,name=core06.fra Ready 10.10.0.109 kubernetes.io/hostname=10.10.0.109,name=core05.fra Ready 10.10.0.110 kubernetes.io/hostname=10.10.0.110,name=core04.fra Ready
  • 47. core@core-01 ~ $ kubectl get namespaces NAME LABELS STATUS default <none> Active
  • 48. core@core-01 ~ $ kubectl get namespaces NAME LABELS STATUS default <none> Active core@core-01 ~ $ kubectl --namespace=default get all CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS NAME LABELS SELECTOR IP(S) PORT(S) NAME READY STATUS RESTARTS AGE NAME LABELS STATUS VOLUME
  • 49. core@core-01 ~ $ kubectl config view apiVersion: v1 kind: Config clusters: - name: production
 cluster: server: https://core01.fra.chefkoch.net:6443 contexts: - name: foobar.production 
 context: cluster: production namespace: foobar user: john.doe users: - name: john.doe user: username: john.doe password: p4ssw0rd current-context: ""
  • 50. core@core-01 ~ $ kubectl config view apiVersion: v1 kind: Config clusters: - name: production
 cluster: server: https://core01.fra.chefkoch.net:6443 contexts: - name: foobar.production 
 context: cluster: production namespace: foobar user: john.doe users: - name: john.doe user: username: john.doe password: p4ssw0rd current-context: "" core@core-01 ~ $ kubectl --context=foobar.production get all
  • 51. core@core-01 ~ $ kubectl config view apiVersion: v1 kind: Config clusters: - name: production
 cluster: server: https://core01.fra.chefkoch.net:6443 contexts: - name: foobar.production 
 context: cluster: production namespace: foobar user: john.doe users: - name: john.doe user: username: john.doe password: p4ssw0rd current-context: "" core@core-01 ~ $ kubectl --context=foobar.production get all core@core-01 ~ $ kubectl --cluster=production get all
  • 52. core@core-01 ~ $ kubectl config view apiVersion: v1 kind: Config clusters: - name: production
 cluster: server: https://core01.fra.chefkoch.net:6443 contexts: - name: foobar.production 
 context: cluster: production namespace: foobar user: john.doe users: - name: john.doe user: username: john.doe password: p4ssw0rd current-context: "" core@core-01 ~ $ kubectl --context=foobar.production get all core@core-01 ~ $ kubectl --cluster=production get all core@core-01 ~ $ kubectl --username=john.doe --password=p4ssw0rd get all
  • 53. core@core-01 ~ $ kubectl config view apiVersion: v1 kind: Config clusters: - name: production
 cluster: server: https://core01.fra.chefkoch.net:6443 contexts: - name: foobar.production 
 context: cluster: production namespace: foobar user: john.doe users: - name: john.doe user: username: john.doe password: p4ssw0rd current-context: "" core@core-01 ~ $ kubectl config use-context foobar.production core@core-01 ~ $ kubectl --context=foobar.production get all core@core-01 ~ $ kubectl --cluster=production get all core@core-01 ~ $ kubectl --username=john.doe --password=p4ssw0rd get all
  • 54. Pods
  • 55. apiVersion: v1 kind: Pod metadata: name: my-symfony-app labels: name: my-symfony-app spec: containers: - name: nginx image: my-symfony-app command: [nginx] volumeMounts: - {name: socket, mountPath: /run} - name: php-fpm image: my-symfony-app command: [php5-fpm] volumeMounts: - {name: socket, mountPath: /run} volumes: - {name: socket, emptyDir: {medium: Memory}} my-symfony-app.yml
  • 56. core@core-01 ~ $ kubectl create -f my-symfony-app.yml
  • 57. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app.yml
  • 58. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app.yml core@core-01 ~ $ kubectl logs my-symfony-app -c php-fpm [15-Oct-2015 15:29:45] NOTICE: fpm is running, pid 1 [15-Oct-2015 15:29:45] NOTICE: ready to handle connections
  • 59. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app.yml core@core-01 ~ $ kubectl delete pod my-symfony-app core@core-01 ~ $ kubectl logs my-symfony-app -c php-fpm [15-Oct-2015 15:29:45] NOTICE: fpm is running, pid 1 [15-Oct-2015 15:29:45] NOTICE: ready to handle connections
  • 60. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app.yml core@core-01 ~ $ kubectl delete pod my-symfony-app core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE core@core-01 ~ $ kubectl logs my-symfony-app -c php-fpm [15-Oct-2015 15:29:45] NOTICE: fpm is running, pid 1 [15-Oct-2015 15:29:45] NOTICE: ready to handle connections
  • 62. Features, Features, Features! • Readiness-Probe, Liveness-Probe
  • 63. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks
  • 64. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy
  • 65. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy • Ressourcen-Limits
  • 66. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy • Ressourcen-Limits • Verschiedene Mounts
  • 67. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy • Ressourcen-Limits • Verschiedene Mounts • GCE
  • 68. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy • Ressourcen-Limits • Verschiedene Mounts • GCE • AWS EBS
  • 69. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy • Ressourcen-Limits • Verschiedene Mounts • GCE • AWS EBS • iSCSI
  • 70. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy • Ressourcen-Limits • Verschiedene Mounts • GCE • AWS EBS • iSCSI • NFS
  • 71. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy • Ressourcen-Limits • Verschiedene Mounts • GCE • AWS EBS • iSCSI • NFS • Glusterfs
  • 72. Features, Features, Features! • Readiness-Probe, Liveness-Probe • Livecycle-Hooks • ImagePull-Policy • Ressourcen-Limits • Verschiedene Mounts • GCE • AWS EBS • iSCSI • NFS • Glusterfs • Git-Repo
  • 74. apiVersion: v1 kind: ReplicationController metadata: name: my-symfony-app spec: selector: name: my-symfony-app replicas: 5 template: // Inhalt von my-symfony-app.yml my-symfony-app-rc.yml
  • 75. core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml
  • 76. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-jzd97 2/2 Running 0 2s my-symfony-app-193aw 2/2 Running 0 2s my-symfony-app-bicex 2/2 Running 0 2s my-symfony-app-r2in0 2/2 Running 0 2s my-symfony-app-lbo54 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml
  • 77. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-jzd97 2/2 Running 0 2s my-symfony-app-193aw 2/2 Running 0 2s my-symfony-app-bicex 2/2 Running 0 2s my-symfony-app-r2in0 2/2 Running 0 2s my-symfony-app-lbo54 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml core@core-01 ~ $ kubectl delete pods --all
  • 78. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-jzd97 2/2 Running 0 2s my-symfony-app-193aw 2/2 Running 0 2s my-symfony-app-bicex 2/2 Running 0 2s my-symfony-app-r2in0 2/2 Running 0 2s my-symfony-app-lbo54 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml core@core-01 ~ $ kubectl delete pods --all core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-9tbfb 2/2 Running 0 2s my-symfony-app-ui6yv 2/2 Running 0 2s my-symfony-app-cx9te 2/2 Running 0 2s my-symfony-app-ui6yv 2/2 Running 0 2s my-symfony-app-tgquh 2/2 Running 0 2s
  • 79. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-jzd97 2/2 Running 0 2s my-symfony-app-193aw 2/2 Running 0 2s my-symfony-app-bicex 2/2 Running 0 2s my-symfony-app-r2in0 2/2 Running 0 2s my-symfony-app-lbo54 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml core@core-01 ~ $ kubectl delete pods --all core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-9tbfb 2/2 Running 0 2s my-symfony-app-ui6yv 2/2 Running 0 2s my-symfony-app-cx9te 2/2 Running 0 2s my-symfony-app-ui6yv 2/2 Running 0 2s my-symfony-app-tgquh 2/2 Running 0 2s core@core-01 ~ $ kubectl scale --replicas=2 rc my-symfony-app
  • 80. core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-jzd97 2/2 Running 0 2s my-symfony-app-193aw 2/2 Running 0 2s my-symfony-app-bicex 2/2 Running 0 2s my-symfony-app-r2in0 2/2 Running 0 2s my-symfony-app-lbo54 2/2 Running 0 2s core@core-01 ~ $ kubectl create -f my-symfony-app-rc.yml core@core-01 ~ $ kubectl delete pods --all core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-9tbfb 2/2 Running 0 2s my-symfony-app-ui6yv 2/2 Running 0 2s my-symfony-app-cx9te 2/2 Running 0 2s my-symfony-app-ui6yv 2/2 Running 0 2s my-symfony-app-tgquh 2/2 Running 0 2s core@core-01 ~ $ kubectl scale --replicas=2 rc my-symfony-app core@core-01 ~ $ kubectl get pods NAME READY STATUS RESTARTS AGE my-symfony-app-9tbfb 2/2 Running 0 10s my-symfony-app-ui6yv 2/2 Running 0 10s
  • 83. Features, Features, Features! • Rescheduling • Rolling Updates
  • 84. Features, Features, Features! • Rescheduling • Rolling Updates • Multiple Release Tracks
  • 86. apiVersion: v1 kind: Service metadata: name: my-symfony-app spec: selector: name: my-symfony-app ports: - port: 80 my-symfony-app-svc.yml
  • 87. core@core-01 ~ $ kubectl create -f my-symfony-app-svc.yml
  • 88. core@core-01 ~ $ kubectl get services NAME LABELS SELECTOR IP(S) PORT(S) my-symfony-app name=my-symfony-app name=my-symfony-app 80/TCP core@core-01 ~ $ kubectl create -f my-symfony-app-svc.yml
  • 89. core@core-01 ~ $ kubectl get services NAME LABELS SELECTOR IP(S) PORT(S) my-symfony-app name=my-symfony-app name=my-symfony-app 80/TCP core@core-01 ~ $ kubectl create -f my-symfony-app-svc.yml core@core-01 ~ $ kubectl exec -ti my-symfony-app -c nginx bash root@my-symfony-app:/# curl -I my-symfony-app HTTP/1.1 200 OK Server: nginx/1.9.3 (Ubuntu) Date: Fri, 16 Oct 2015 06:46:35 GMT Content-Type: text/html Content-Length: 177 Connection: keep-alive
  • 92. Features, Features, Features! • Renaming • Load-Balancing
  • 93. Features, Features, Features! • Renaming • Load-Balancing • Node-Port
  • 94. Features, Features, Features! • Renaming • Load-Balancing • Node-Port • Static Endpoints
  • 95. Features, Features, Features! • Renaming • Load-Balancing • Node-Port • Static Endpoints • Bidirektionale Verbindungen
  • 96. Features, Features, Features! • Renaming • Load-Balancing • Node-Port • Static Endpoints • Bidirektionale Verbindungen • Das alles in Echtzeit!
  • 104. Bugs, Bugs, Bugs… • Namespace-Isolation
  • 105. Bugs, Bugs, Bugs… • Namespace-Isolation • Concurrent-Pull
  • 106. Bugs, Bugs, Bugs… • Namespace-Isolation • Concurrent-Pull • Orphan-Pull
  • 107. Bugs, Bugs, Bugs… • Namespace-Isolation • Concurrent-Pull • Orphan-Pull • Exec-Timeout
  • 108. Bugs, Bugs, Bugs… • Namespace-Isolation • Concurrent-Pull • Orphan-Pull • Exec-Timeout • …
  • 114. Fehlende Features • kubectl wait • Variablen-Expansion
  • 115. Fehlende Features • kubectl wait • Variablen-Expansion • …
  • 116. Fazit
  • 120. Container forcieren DevOps! Container forcieren CD! Orchestrierung ist komplex
  • 121. Container forcieren DevOps! Container forcieren CD! Tooling ist Bleeding Edge Orchestrierung ist komplex
  • 122. Container forcieren DevOps! Container forcieren CD! Tooling ist Bleeding Edge Orchestrierung ist komplex Wir vertrauen auf Kubernetes!
  • 123. ?Fragen http://chefkoch.jobs - We are hiring ;) http://perprogramming.de info@perprogramming.de Danke!