Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Wprowadzenie do Kubernetesa. K8S jako nowy Linux.

37 views

Published on


Wprowadzenie do Kubernetesa oraz omówieni korzyści K8S w kontekście mojego doświadczenia z dwóch startupów, jeden z branży mobile ecommerce i jeden FinTech.

Published in: Technology
  • Be the first to like this

Wprowadzenie do Kubernetesa. K8S jako nowy Linux.

  1. 1. WOJCIECH BARCZYŃSKI Lead So ware Engineer & System Engineer Interests: working so ware Hobby: teaching so ware engineering
  2. 2. O MNIE Machine Learning FinTech - SaaS i produkt API Before: 1 z 10 Indonesian mobile e-commerce (Rocket Internet) 3.5 roku Openstack (1000+ nodes, 21 DC) Before SAP R&D I do not like INFRA :D
  3. 3. PROBLEM Z INFRASTRUKTURĄ Admistracja jest trudna i kosztowna Virtualne Maszyny, ansible, salt, etc. Za dużo ruchomych części Nie kończąca się standaryzacja
  4. 4. MIKROSERWISY AAA!
  5. 5. PROBLEM Z INFRASTRUKTURĄ Chmura nie taka tania - $$$
  6. 6. KUBERNETES
  7. 7. WYOBRAŹ SOBIE nie musisz myśleć o IaaS nigdy nie musisz konfigurować maszyny mnie dyskusji o CI / CD ... DC jako czarna skrzynka
  8. 8. CO TO JEST KUBERNETES? Container management Zorientowany na serwisy i aplikacje Prosty w użyciu* Uniezaleźnia nas od IaaS
  9. 9. KUBERNETES Wszystko dla 12factory apps Service discovery i meta-data support
  10. 10. KUBERNETES Kubernetes Node Node Node Node App Ingress Controller Repository make docker_push; kubectl create -f app-srv-dpl.yaml
  11. 11. SKALOWNIE! Kubernetes Node Node Node Node App Ingress Controller App Appscale 3x kubectl --replicas=3 -f app-srv-dpl.yaml
  12. 12. SKALOWANIE! Kubernetes Node Node Node Node Ingress Controller scale 1x App kubectl --replicas=1 -f app-srv-dpl.yaml
  13. 13. ROLLING UPDATES! Kubernetes Node Node Node Node App Ingress Controller App App kubectl set image deployment/app app=app:v2.0.0
  14. 14. ROLLING UPDATES! Kubernetes Node Node Node Node App Ingress Controller App App
  15. 15. ROLLING UPDATES! Kubernetes Node Node Node Node App Ingress Controller App App
  16. 16. ODPORNOŚĆ Kubernetes Node Node Node Node App Ingress Controller App App
  17. 17. ODPORNOŚĆ Kubernetes Node Node Node Node App Ingress Controller App App
  18. 18. ODPORNOŚĆ Kubernetes Node Node Node Node App Ingress Controller App App
  19. 19. HOW GET USER REQUESTS? API BACKOFFICE 1 DATA WEB ADMIN BACKOFFICE 2 BACKOFFICE 3 API.DOMAIN.COM DOMAIN.COM/WEB BACKOFFICE.DOMAIN.COM ORCHESTRATOR PRIVATE NETWORKINTERNET API LISTEN (DOCKER, SWARM, MESOS...) Ingress Controller
  20. 20. INGRESS Pattern Target App Service api.smacc.io/v1/users users-v1 api.smacc.io/v2/users users-v2 smacc.io web
  21. 21. LOAD BALANCING Kubernetes Worker Kubernetes Worker Kubernetes Worker Node Port 30000 Node Node Kubernetes Worker Node user-232 <<Requests>> B users Port 30000 Port 30000 Port 30000 Load Balancer user-12F user-32F
  22. 22. SERVICE DISCOVERY nazwy wstrzykiwane w DNS: curl etykiety: name=value annotacje: prometheus.io/scrape: "true" http://users/list
  23. 23. SERVICE DISCOVERY lużno powiązane komponenty auto-wiring z logigem i monitoringiem
  24. 24. PLUG-AND-PLAY traefik / Nginx / Haproxy / Envoy monitoring: prometheus logging audit checks ...
  25. 25. NAJLEPSZE Wszystko w GIT: pliki k8s yaml integracja z monitoring, alarming, ... - anotacje integracja z ingress-controller ... Devs mogą, prawie zapomnieć o infrastrukturze DevOps Culture Dream!
  26. 26. LYKE 50k+ użytk 2M downloads Top 10 Fashion Apps w Google Play Store Wszystko testowane A/B Szybki rosnący i data-driven http://www.news.getlyke.com/single- post/2016/12/02/Introducing-the- New-Beautiful-LYKE
  27. 27. LYKE 50+ VMs - Amazon, 1 VM - 1 App, bezczynne Puppet, semi-manualny proces deploymentu Strach Zapomniene komponenty Problemy z wydajnością
  28. 28. ROZWIĄZANIE 1. Uprościć infrastruktue 2. Wprowadzić Continous Deployment 3. Zmienić organizację pracy patrz: Conway's law
  29. 29. UPROŚCIĆ 1. Kubernetes z Google Kubernetes Engine 2. Terraform dla wszystkiego innego i AWSa
  30. 30. PLUG-AND-PLAY 1. Prometheus, AlertManager i Grafana 2. Elasticsearch-Fluentd-Kibana 3. Google Identity-Aware-Proxy do ochrony paneli narzędzi 4. 3rd party: statuscake i opsgenie W krótkim czasie mamy już działający system! Skraca czas nauki nowej technologii.
  31. 31. TRAVISCI 1. Tests 2. Zbudowanie docker 3. Deploy docker do Google Container Registry 4. Deploy docker to k8s 5. No other config applied 6. Repo independent
  32. 32. GIT REPO |- tools | |- kube-service.yaml | - kube-deployment.yaml | |- Dockerfile |- VERSION - Makefile
  33. 33. Makefile Copy&Paste from the project to project SERVICE_NAME=v-connector GCP_DOCKER_REGISTRY=eu.gcr.io test: test_short test_integration run_local: # !!!! docker_build: docker_push kube_create_config: kube_apply: kube_deploy:
  34. 34. SMACC Komponenty na VM w AWS, próby z AWS ECS :/ Self-hosted K8S na ProfitBricks Microso ScaleUp, welcome Azure Luckily - AKS
  35. 35. KUBERNETES Z AKS Niezależność od Azure Nasz OnPrem = Nasz OnCloud Konsolidacja naszych micro-servicesów Plug and play, np., monitoring z prometheusem
  36. 36. UPROŚCIĆ az aks CLI do k8s - README.rst Terraform dla wszystkiego innego 1Password i gopass.pw Terraform też do AWSa
  37. 37. NOWE DOŚWIADCZENIE deweloperzy nie lubią wszystkiego poza kodowaniem migracja z PB do AKS była trudna
  38. 38. ROZWIĄZANIE uproszczenie procesu dla dev wszystko do CD jako c&p ukryć generacje plików k8s deployment na tag Similar to the Kelsey Hightower approach
  39. 39. Makefile |- tools | |- Makefile | |- kube-service.yaml | - kube-deployment.yaml | |- Dockerfile - Makefile
  40. 40. CONTINUOUS DEPLOYMENT Github TravisCI hub.docker.com AKS
  41. 41. PROCESS 1. git tag and push
  42. 42. PROCESS 2. tag ➡ deployment do stagingu 3. tag ➡ Pull-Request do brancha produkcji 4. merge Pull-Request ➡ deployment do produkcji
  43. 43. KUBERNETES Pure, generated, kubernetes config 2x kubernetes operators
  44. 44. NASTĘPNE KROKI Acceptance tests na każdy deployment Skalowanie trenowania naszych modeli ML Budowa toola do deploymentu w oparciu o Evaluacja Istio missy
  45. 45. K8S - Linux Kubernetes nie jest "srebną kulą" ale dość blisko Wspólne środowisko dla onPrem i onCloud Upraszcza procesy, uwalnia zasoby Plug-and-play
  46. 46. K8S - Linux The biggest asset - the API Z service discovery, doskonała platforma do integracji Z kubevirt - alternatywa dla Openstacka
  47. 47. DZIĘKUJĘ. PYTANIA? ps. We are hiring.
  48. 48. HIRING Senior Polyglot So ware Engineers Experienced System Engineers Front-end Engineers 1 Data-Driven Product Manager Apply: hello-warsaw@smacc.io, Questions? wojciech.barczynski@smacc.io, or We will teach you Go if needed. No k8s or ML, we will take care of that. FB LI
  49. 49. BACKUP SLIDES
  50. 50. KUBERNETES CONCEPTS
  51. 51. Node Master Deployment Docker containers Node Docker Containers Pod Schedule Schedule
  52. 52. Node Deployment Pod Node Pod services Fixed virtual address Fixed DNS entry
  53. 53. BASIC CONCEPTS Name Purpose Service Interface Entry point (Service Name) Deployment Factory How many pods, which pods Pod Implementation 1+ docker running
  54. 54. PODS See each other on localhost Live and die together Can expose multiple ports Pod nginx WebFiles ENV: HOSTNAME=0.0.0.0 LISTENPORT=8080
  55. 55. SIDE-CARS Pod memcached prometheus exporter Pod app swagger-ui 8080 80 9150 11211
  56. 56. ROLLING RELEASE WITH DEPLOYMENTS Service Pods Labels Deployment Deployment << Creates >> << Creates >> Also possible

×