SlideShare uma empresa Scribd logo
1 de 123
Baixar para ler 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?
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!
Helios
Apache
Helios
Apache
Helios
Apache
Helios
Apache
Helios
Apache
Helios
ECS
Apache
Helios
ECS
Apache
Helios
ECS
…
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
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
• …
Fehlende Features
Fehlende Features
• kubectl wait
Fehlende Features
• kubectl wait
• Variablen-Expansion
Fehlende Features
• kubectl wait
• Variablen-Expansion
• …
Fazit
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!

Mais conteúdo relacionado

Mais procurados

Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparison
Hiroshi Nakamura
 

Mais procurados (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
 

Destaque

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
Cirrus Insight
 

Destaque (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
 

Semelhante a Kubernetes: Wie Chefkoch.de mit Containern arbeitet

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
 
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
Srinivasa Rao
 

Semelhante a 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
 

Mais de Per Bernhardt

Mais de 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
 

Último

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 

Último (20)

%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 

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
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. A LT
  • 18. N EU
  • 25.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 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!
  • 102.
  • 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 • …
  • 109.
  • 110.
  • 111.
  • 114. Fehlende Features • kubectl wait • Variablen-Expansion
  • 115. Fehlende Features • kubectl wait • Variablen-Expansion • …
  • 116. Fazit
  • 117.
  • 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!