Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Python, Kubernetes & friends
Search
Alexandre González
May 13, 2016
Technology
0
440
Python, Kubernetes & friends
This is the presentation I made for PyGrunn 2016.
Thanks to Jobandtalent for sponsoring my trip! :)
Alexandre González
May 13, 2016
Tweet
Share
More Decks by Alexandre González
See All by Alexandre González
Building an Enterprise-Ready Lambda Experience
agonzalezro
0
78
Fragmentación, el virus que puede acabar con tu alta disponibilidad (con ejemplos para kubernetes)
agonzalezro
0
380
From source code to Kubernetes, a Continuous Deployment tale
agonzalezro
0
91
From pets to cattle, the way of Kubernetes
agonzalezro
2
560
Kubernetes 101
agonzalezro
0
600
Custom Volume Plugins
agonzalezro
1
1.2k
Docker 101
agonzalezro
4
170
Go 101 updated
agonzalezro
0
710
Kubernetes Volume Plugins: Flocker
agonzalezro
2
740
Other Decks in Technology
See All in Technology
re:Invent 2024のふりかえり
beli68
0
110
2025年に挑戦したいこと
molmolken
0
160
Amazon Route 53, 待ちに待った TLSAレコードのサポート開始
kenichinakamura
0
170
技術に触れたり、顔を出そう
maruto
1
150
メールヘッダーを見てみよう
hinono
0
110
[IBM TechXchange Dojo]Watson Discoveryとwatsonx.aiでRAGを実現!事例のご紹介+座学②
siyuanzh09
0
110
あなたの知らないクラフトビールの世界
miura55
0
130
今年一年で頑張ること / What I will do my best this year
pauli
1
220
#TRG24 / David Cuartielles / Post Open Source
tarugoconf
0
580
【JAWS-UG大阪 reInvent reCap LT大会 サンバが始まったら強制終了】“1分”で初めてのソロ参戦reInventを数字で振り返りながら反省する
ttelltte
0
140
KMP with Crashlytics
sansantech
PRO
0
240
re:Invent2024 KeynoteのAmazon Q Developer考察
yusukeshimizu
1
150
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
It's Worth the Effort
3n
183
28k
Building an army of robots
kneath
302
45k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
BBQ
matthewcrist
85
9.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
Designing Experiences People Love
moore
139
23k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
570
Designing for humans not robots
tammielis
250
25k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
3
180
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
Transcript
PYTHON, Kubernetes & FRIENDS @AGONZALEZRO
WHAT IS Kubernetes?
Framework for building distributed systems. (Kelsey's dixit)
None
OUR FIRST APP! $ kubectl run pygrunn \ --image=python:2.7 \
--command -- python -m SimpleHTTPServer
WHAT DO WE GET HERE?
A POD $ kubectl get pods NAME READY STATUS RESTARTS
AGE pygrunn-1906403705-dckh7 1/1 Running 0 1m
A REPLICA SET $ kubectl get replicasets NAME DESIRED CURRENT
AGE pygrunn-1552838933 1 1 11s
AND A DEPLOYMENT $ kubectl get deployments NAME DESIRED CURRENT
UP-TO-DATE AVAILABLE AGE pygrunn 1 1 1 1 2m
SHOW IT TO THE WORLD $ kubectl expose deployment pygrunn
\ --port=80 --target-port=8000 --type=LoadBalancer
LET'S USE THE WAITING TIME $ kubectl exec -it pygrunn-1906403705-dckh7
bash
HERE IT IS $ kubectl get services NAME CLUSTER-IP EXTERNAL-IP
PORT(S) AGE pygrunn 10.3.255.124 130.211.52.23 80/TCP 57s
HN FRONT PAGE! $ kubectl scale deployment pygrunn --replicas=3
THE END (FOR NOW)
None
WHAT WE DID THERE? ▸ Pods ▸ Replica Set ▸
Service ▸ Deployment
A "REAL" DEPLOYMENT
MAIN.PY from flask import Flask, url_for app = Flask(__name__) @app.route('/')
def index(): return '<img width="100%" src="{}" />'.format( url_for('static', filename='grumpy.gif') ) if __name__ == '__main__': app.run(host='0.0.0.0')
DOCKERFILE FROM python:2.7.11-onbuild EXPOSE 5000 CMD ["uwsgi", "-http 5000", "-w
main"]
$ docker build -t agonzalezro/pygrunn:grumpy . $ docker push agonzalezro/pygrunn
DEPLOYMENT.YAML (1/3) apiVersion: extensions/v1beta1 kind: Deployment metadata: name: pygrunn-deploy labels:
name: pygrunn-deploy ...
DEPLOYMENT.YAML (2/3) ... spec: replicas: 3 selector: matchLabels: name: flask-app
template: metadata: labels: name: flask-app ...
DEPLOYMENT.YAML (3/3) ... spec: containers: - name: app image: agonzalezro/pygrunn:grumpy
ports: - containerPort: 5000 - name: nginx image: agonzalezro/pygrunn-nginx ports: - containerPort: 80 readinessProbe: httpGet: path: / port: 80
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: pygrunn-deploy labels: name: pygrunn-deploy
spec: replicas: 3 selector: matchLabels: name: flask-app template: metadata: labels: name: flask-app spec: containers: - name: app image: agonzalezro/pygrunn:happy ports: - containerPort: 5000 - name: nginx image: agonzalezro/pygrunn-nginx ports: - containerPort: 80 readinessProbe: httpGet: path: / port: 80
SERVICE.YAML apiVersion: v1 kind: Service metadata: name: flask-service spec: type:
LoadBalancer ports: - port: 80 targetPort: 5000 selector: name: flask-app
$ kubectl create -f deployment.yaml -f service.yaml
$ sed -i "s/replicas: 3/replicas: 5/" deployment.yaml $ kubectl apply
-f deployment.yaml
$ sed -i "s/grumpy/happy/" deployment.yaml $ kubectl apply -f deployment.yaml
HOMEWORK ▸ Add a nginx in top ▸ Add a
DB ▸ Use a private registry
THE END (AGAIN)
None
None
None
Thanks! @AGONZALEZRO