Kubernetes: Wie Chefkoch.de mit Containern arbeitet

Per Bernhardt
Per BernhardtSoftwareentwickler um chefkoch.de
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!
1 von 123

Recomendados

Microservice Teststrategie mit Symfony2 von
Microservice Teststrategie mit Symfony2Microservice Teststrategie mit Symfony2
Microservice Teststrategie mit Symfony2Per Bernhardt
4.1K views75 Folien
What mom never told you about bundle configurations - Symfony Live Paris 2012 von
What mom never told you about bundle configurations - Symfony Live Paris 2012What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012D
18.1K views61 Folien
Application Layer in PHP von
Application Layer in PHPApplication Layer in PHP
Application Layer in PHPPer Bernhardt
3.4K views32 Folien
[PHP 也有 Day] 垃圾留言守城記 - 用 Laravel 阻擋 SPAM 留言的奮鬥史 von
[PHP 也有 Day] 垃圾留言守城記 - 用 Laravel 阻擋 SPAM 留言的奮鬥史[PHP 也有 Day] 垃圾留言守城記 - 用 Laravel 阻擋 SPAM 留言的奮鬥史
[PHP 也有 Day] 垃圾留言守城記 - 用 Laravel 阻擋 SPAM 留言的奮鬥史Shengyou Fan
1.1K views63 Folien
AnyMQ, Hippie, and the real-time web von
AnyMQ, Hippie, and the real-time webAnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webclkao
2.7K views41 Folien
V2 and beyond von
V2 and beyondV2 and beyond
V2 and beyondjimi-c
13.9K views30 Folien

Más contenido relacionado

Was ist angesagt?

Datagrids with Symfony 2, Backbone and Backgrid von
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and Backgrideugenio pombi
684 views36 Folien
A Gentle Introduction to Event Loops von
A Gentle Introduction to Event LoopsA Gentle Introduction to Event Loops
A Gentle Introduction to Event Loopsdeepfountainconsulting
533 views27 Folien
Practical Chef and Capistrano for Your Rails App von
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppSmartLogic
10.7K views40 Folien
How to build a High Performance PSGI/Plack Server von
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
18.6K views134 Folien
Continuous deployment of puppet modules von
Continuous deployment of puppet modulesContinuous deployment of puppet modules
Continuous deployment of puppet modulesWilliam O'Neill
272 views44 Folien
Quality Use Of Plugin von
Quality Use Of PluginQuality Use Of Plugin
Quality Use Of PluginYasuo Harada
1.2K views31 Folien

Was ist angesagt?(20)

Datagrids with Symfony 2, Backbone and Backgrid von eugenio pombi
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and Backgrid
eugenio pombi684 views
Practical Chef and Capistrano for Your Rails App von SmartLogic
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails App
SmartLogic10.7K views
How to build a High Performance PSGI/Plack Server von Masahiro Nagano
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 Nagano18.6K views
Continuous deployment of puppet modules von William O'Neill
Continuous deployment of puppet modulesContinuous deployment of puppet modules
Continuous deployment of puppet modules
William O'Neill272 views
Quality Use Of Plugin von Yasuo Harada
Quality Use Of PluginQuality Use Of Plugin
Quality Use Of Plugin
Yasuo Harada1.2K views
Puppet at janrain von Puppet
Puppet at janrainPuppet at janrain
Puppet at janrain
Puppet750 views
Cloud Automation with Opscode Chef von Sri Ram
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
Sri Ram351 views
Node.js Express von Eyal Vardi
Node.js  ExpressNode.js  Express
Node.js Express
Eyal Vardi4.8K views
Nodejs first class von Fin Chen
Nodejs first classNodejs first class
Nodejs first class
Fin Chen1.7K views
Lights, Camera, Docker: Streaming Video at DramaFever von bridgetkromhout
Lights, Camera, Docker: Streaming Video at DramaFeverLights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFever
bridgetkromhout3.1K views
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet von Marcelo Andrade
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
Marcelo Andrade951 views
Deploying Rails Apps with Chef and Capistrano von SmartLogic
 Deploying Rails Apps with Chef and Capistrano Deploying Rails Apps with Chef and Capistrano
Deploying Rails Apps with Chef and Capistrano
SmartLogic8.1K views
"Swoole: double troubles in c", Alexandr Vronskiy von Fwdays
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy
Fwdays872 views

Destacado

Cirrus Insight + Nuvem Consulting: Create a Winning Salesforce Roadmap von
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
989 views34 Folien
Docker orchestration with Kubernetes von
Docker orchestration with KubernetesDocker orchestration with Kubernetes
Docker orchestration with KubernetesSamuel ROZE
1.1K views22 Folien
Introduction to Kubernetes von
Introduction to KubernetesIntroduction to Kubernetes
Introduction to KubernetesRoss Kukulinski
2.7K views20 Folien
Prometheus Monitoring von
Prometheus MonitoringPrometheus Monitoring
Prometheus Monitoringinovex GmbH
1.1K views30 Folien
Agile.2013.effecting.a.dev ops.transformation.at.salesforce von
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
9.9K views65 Folien
Magazin-Relaunch bei Chefkoch von
Magazin-Relaunch bei ChefkochMagazin-Relaunch bei Chefkoch
Magazin-Relaunch bei ChefkochPer Bernhardt
512 views19 Folien

Destacado(13)

Cirrus Insight + Nuvem Consulting: Create a Winning Salesforce Roadmap von Cirrus Insight
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
Cirrus Insight989 views
Docker orchestration with Kubernetes von Samuel ROZE
Docker orchestration with KubernetesDocker orchestration with Kubernetes
Docker orchestration with Kubernetes
Samuel ROZE1.1K views
Prometheus Monitoring von inovex GmbH
Prometheus MonitoringPrometheus Monitoring
Prometheus Monitoring
inovex GmbH1.1K views
Agile.2013.effecting.a.dev ops.transformation.at.salesforce von Dave Mangot
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
Dave Mangot9.9K views
Magazin-Relaunch bei Chefkoch von Per Bernhardt
Magazin-Relaunch bei ChefkochMagazin-Relaunch bei Chefkoch
Magazin-Relaunch bei Chefkoch
Per Bernhardt512 views
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ... von OpenShift Origin
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 Origin5.1K views
DevOps Kaizen: Find and Fix What is Really Behind Your Problems von dev2ops
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
dev2ops13.5K views
DevOps Kaizen: Practical Steps to Start & Sustain a Transformation von dev2ops
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
dev2ops33.1K views
OpenShift Enterprise 3.1 vs kubernetes von Samuel Terburg
OpenShift Enterprise 3.1 vs kubernetesOpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetes
Samuel Terburg42.1K views
An Introduction to Kubernetes von Imesh Gunaratne
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
Imesh Gunaratne54.5K views
Der Cloud Native Stack in a Nutshell. #CloudExpoEurope von Mario-Leander Reimer
Der Cloud Native Stack in a Nutshell. #CloudExpoEuropeDer Cloud Native Stack in a Nutshell. #CloudExpoEurope
Der Cloud Native Stack in a Nutshell. #CloudExpoEurope

Similar a Kubernetes: Wie Chefkoch.de mit Containern arbeitet

k8s practice 2023.pptx von
k8s practice 2023.pptxk8s practice 2023.pptx
k8s practice 2023.pptxwonyong hwang
57 views69 Folien
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet von
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
365 views33 Folien
kubernetes practice von
kubernetes practicekubernetes practice
kubernetes practicewonyong hwang
459 views53 Folien
Kubernetes Networking von
Kubernetes NetworkingKubernetes Networking
Kubernetes NetworkingCJ Cullen
26.7K views91 Folien
Spring Into Kubernetes DFW von
Spring Into Kubernetes DFWSpring Into Kubernetes DFW
Spring Into Kubernetes DFWVMware Tanzu
159 views102 Folien
Infrastructure as code von
Infrastructure as codeInfrastructure as code
Infrastructure as codedaisuke awaji
1.1K views69 Folien

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

How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet von DevOpsDaysJKT
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
DevOpsDaysJKT365 views
Kubernetes Networking von CJ Cullen
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
CJ Cullen26.7K views
Spring Into Kubernetes DFW von VMware Tanzu
Spring Into Kubernetes DFWSpring Into Kubernetes DFW
Spring Into Kubernetes DFW
VMware Tanzu159 views
Deploying Symfony | symfony.cat von Pablo Godel
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
Pablo Godel2.8K views
Shakr - Container CI/CD with Google Cloud Platform von Minku Lee
Shakr - Container CI/CD with Google Cloud PlatformShakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud Platform
Minku Lee2.2K views
Kubernetes Basic Operation von Simon Su
Kubernetes Basic OperationKubernetes Basic Operation
Kubernetes Basic Operation
Simon Su514 views
Deep dive in container service discovery von Docker, Inc.
Deep dive in container service discoveryDeep dive in container service discovery
Deep dive in container service discovery
Docker, Inc.1.5K views
Multinode kubernetes-cluster von Ram Nath
Multinode kubernetes-clusterMultinode kubernetes-cluster
Multinode kubernetes-cluster
Ram Nath993 views
Prometheus on NKS von Jo Hoon
Prometheus on NKSPrometheus on NKS
Prometheus on NKS
Jo Hoon517 views
Kube Your Enthusiasm - Tyler Britten von VMware Tanzu
Kube Your Enthusiasm - Tyler BrittenKube Your Enthusiasm - Tyler Britten
Kube Your Enthusiasm - Tyler Britten
VMware Tanzu218 views
Build Your Own CaaS (Container as a Service) von HungWei Chiu
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 Chiu726 views
Composer for busy developers - DPC13 von Rafael Dohms
Composer for busy developers - DPC13Composer for busy developers - DPC13
Composer for busy developers - DPC13
Rafael Dohms5.4K views
Monitoring kubernetes with prometheus von Brice Fernandes
Monitoring kubernetes with prometheusMonitoring kubernetes with prometheus
Monitoring kubernetes with prometheus
Brice Fernandes1.2K views
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski von VMware Tanzu
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul CzarkowskiUsing Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski
VMware Tanzu422 views
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup von Stefan Schimanski
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Stefan Schimanski5.5K views

Más de Per Bernhardt

Die Rolle des CTO von
Die Rolle des CTODie Rolle des CTO
Die Rolle des CTOPer Bernhardt
11 views37 Folien
Event Carried State Transfer @ LeanIX von
Event Carried State Transfer @ LeanIXEvent Carried State Transfer @ LeanIX
Event Carried State Transfer @ LeanIXPer Bernhardt
183 views25 Folien
Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021) von
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
71 views32 Folien
Microservice Test Strategy (@Bonn Code Meetup) von
Microservice Test Strategy (@Bonn Code Meetup)Microservice Test Strategy (@Bonn Code Meetup)
Microservice Test Strategy (@Bonn Code Meetup)Per Bernhardt
103 views24 Folien
Communication in a Microservice Architecture von
Communication in a Microservice ArchitectureCommunication in a Microservice Architecture
Communication in a Microservice ArchitecturePer Bernhardt
366 views41 Folien
Contract Tests mit Pact von
Contract Tests mit PactContract Tests mit Pact
Contract Tests mit PactPer Bernhardt
445 views10 Folien

Más de Per Bernhardt(11)

Event Carried State Transfer @ LeanIX von Per Bernhardt
Event Carried State Transfer @ LeanIXEvent Carried State Transfer @ LeanIX
Event Carried State Transfer @ LeanIX
Per Bernhardt183 views
Communication in a Microservice Architecture (Ljubljana Backend Meetup 2021) von Per 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)
Per Bernhardt71 views
Microservice Test Strategy (@Bonn Code Meetup) von Per Bernhardt
Microservice Test Strategy (@Bonn Code Meetup)Microservice Test Strategy (@Bonn Code Meetup)
Microservice Test Strategy (@Bonn Code Meetup)
Per Bernhardt103 views
Communication in a Microservice Architecture von Per Bernhardt
Communication in a Microservice ArchitectureCommunication in a Microservice Architecture
Communication in a Microservice Architecture
Per Bernhardt366 views
Umzug eines Hochlast-Dienstes von Per Bernhardt
Umzug eines Hochlast-DienstesUmzug eines Hochlast-Dienstes
Umzug eines Hochlast-Dienstes
Per Bernhardt382 views
kubernetes @ chefkoch.de - Kubernetes Meetup Cologne von Per Bernhardt
kubernetes @ chefkoch.de - Kubernetes Meetup Colognekubernetes @ chefkoch.de - Kubernetes Meetup Cologne
kubernetes @ chefkoch.de - Kubernetes Meetup Cologne
Per Bernhardt1.8K views
Continiuous Integration and Delivery with Bamboo von Per Bernhardt
Continiuous Integration and Delivery with BambooContiniuous Integration and Delivery with Bamboo
Continiuous Integration and Delivery with Bamboo
Per Bernhardt1.4K views
Anwendungsintegration mit Edge Side Includes von Per Bernhardt
Anwendungsintegration mit Edge Side IncludesAnwendungsintegration mit Edge Side Includes
Anwendungsintegration mit Edge Side Includes
Per Bernhardt1.7K views

Último

Unleash The Monkeys von
Unleash The MonkeysUnleash The Monkeys
Unleash The MonkeysJacob Duijzer
7 views28 Folien
SUGCON ANZ Presentation V2.1 Final.pptx von
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptxJack Spektor
22 views34 Folien
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema von
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - GeertsemaDSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - GeertsemaDeltares
17 views13 Folien
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme... von
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...Deltares
5 views28 Folien
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with... von
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...sparkfabrik
5 views46 Folien
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium... von
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...Lisi Hocke
28 views124 Folien

Último(20)

SUGCON ANZ Presentation V2.1 Final.pptx von Jack Spektor
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptx
Jack Spektor22 views
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema von Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - GeertsemaDSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema
Deltares17 views
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme... von Deltares
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...
Deltares5 views
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with... von sparkfabrik
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
sparkfabrik5 views
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium... von Lisi Hocke
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Lisi Hocke28 views
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action von Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok5 views
A first look at MariaDB 11.x features and ideas on how to use them von Federico Razzoli
A first look at MariaDB 11.x features and ideas on how to use themA first look at MariaDB 11.x features and ideas on how to use them
A first look at MariaDB 11.x features and ideas on how to use them
Federico Razzoli45 views
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx von animuscrm
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
animuscrm14 views
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge... von Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
Deltares17 views
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols von Deltares
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - DolsDSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols
Deltares7 views
Software testing company in India.pptx von SakshiPatel82
Software testing company in India.pptxSoftware testing company in India.pptx
Software testing company in India.pptx
SakshiPatel827 views
AI and Ml presentation .pptx von FayazAli87
AI and Ml presentation .pptxAI and Ml presentation .pptx
AI and Ml presentation .pptx
FayazAli8711 views
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI... von Marc Müller
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Marc Müller37 views
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h... von Deltares
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
Deltares5 views
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... von TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin95 views

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!