when to rm rf kubernetes
play

When to rm -rf Kubernetes Paul Steele #IndyCloudConf About Me - PowerPoint PPT Presentation

When to rm -rf Kubernetes Paul Steele #IndyCloudConf About Me Software Engineer at SEP Purdue University https://blog.paul-steele.com/ #IndyCloudConf Kubernetes at home #IndyCloudConf Setting up Clusters #IndyCloudConf


  1. When to rm -rf Kubernetes Paul Steele #IndyCloudConf

  2. About Me ● Software Engineer at SEP ● Purdue University ● https://blog.paul-steele.com/ #IndyCloudConf

  3. Kubernetes at home #IndyCloudConf

  4. Setting up Clusters #IndyCloudConf

  5. Developing for clusters #IndyCloudConf

  6. You can run Docker containers without Kubernetes #IndyCloudConf

  7. Who has used... ● Containers? #IndyCloudConf

  8. Who has used... ● Containers? ● Container Orchestrators? #IndyCloudConf

  9. Who has used... ● Containers? ● Container Orchestrators? ● Kubernetes? #IndyCloudConf

  10. Agenda Containers & Container Orchestration ● Kubernetes ● What does it offer? ○ When it isn’t ideal ○ When it is ideal ○ Do I need Kubernetes? ● alternatives ○ #IndyCloudConf

  11. What are Containers? #IndyCloudConf

  12. Containers ● Packaging for applications Standardized ○ Modular ○ Fast to spin up ○ Portable ○ #IndyCloudConf

  13. Like Virtual Machines but not #IndyCloudConf

  14. Running Containers #IndyCloudConf

  15. Running More Containers #IndyCloudConf

  16. ...and more containers #IndyCloudConf

  17. ...too many containers x 100,000 #IndyCloudConf

  18. What is Container Orchestration? #IndyCloudConf

  19. Container Orchestration ● Abstraction of underlying hardware Machines ○ Storage ○ Networks ○ #IndyCloudConf

  20. Container Orchestration ● Workload scheduling #IndyCloudConf

  21. Container Orchestration ● Horizontal scaling #IndyCloudConf

  22. Container Orchestration ● Self healing Machine failures ○ App hiccups ○ #IndyCloudConf

  23. Container Orchestration ● Rolling Updates #IndyCloudConf

  24. What Orchestrator to Pick? ● Docker Swarm? ● Mesos DC/OS? ● Kubernetes? #IndyCloudConf

  25. Kubernetes ● Open source version of Google’s Borg ○ 1.0 release in July 2015 ● Written in Go ● Greek for “Helmsman” ● “Production-Grade Container Orchestration” ● K8S for short ● Becoming De-facto orchestrator #IndyCloudConf

  26. What does Kubernetes offer? #IndyCloudConf

  27. Nodes https://kubernetesbootcamp.github.io/kubernetes-bootcamp/

  28. Nodes When it makes sense https://kubernetesbootcamp.github.io/kubernetes-bootcamp/

  29. Pods https://kubernetesbootcamp.github.io/kubernetes-bootcamp/

  30. Pods https://kubernetesbootcamp.github.io/kubernetes-bootcamp/

  31. Pods https://kubernetesbootcamp.github.io/kubernetes-bootcamp/

  32. Services https://kubernetesbootcamp.github.io/kubernetes-bootcamp/

  33. Services https://kubernetesbootcamp.github.io/kubernetes-bootcamp/

  34. Distinctive Features ● Role Based Authentication For all actions ○ #IndyCloudConf

  35. Distinctive Features ● Namespaces Isolate resources ○ Share hardware between ○ Test & production #IndyCloudConf

  36. When it isn’t ideal #IndyCloudConf

  37. When it went wrong ● Provisioning Tool Custom built ○ Used for allocating customer resources ○ Not containerized at all ○ #IndyCloudConf

  38. When it went wrong Minikube for local development ● Dependencies included: ● #IndyCloudConf

  39. When it went wrong Minikube for local development ● Dependencies included: ● Mysql ○ #IndyCloudConf

  40. When it went wrong Minikube for local development ● Dependencies included: ● Mysql ○ Mongodb ○ #IndyCloudConf

  41. When it went wrong Minikube for local development ● Dependencies included: ● Mysql ○ Mongodb ○ Redis ○

  42. When it went wrong Minikube for local development ● Dependencies included: ● Mysql ○ Mongodb ○ Redis ○ Jenkins ○

  43. When it went wrong Minikube for local development ● Dependencies included: ● Mysql ○ Mongodb ○ Redis ○ Jenkins ○ Jenkins Connector ○

  44. When it went wrong Minikube for local development ● Dependencies included: ● Mysql ○ Mongodb ○ Redis ○ Jenkins ○ Jenkins Connector ○ Jaeger ○

  45. When it went wrong Minikube for local development ● Dependencies included: ● Mysql ○ Mongodb ○ Redis ○ Jenkins ○ Jenkins Connector ○ Jaeger ○ Elasticsearch ○

  46. When it went wrong Minikube for local development ● Dependencies included: ● Mysql ○ Mongodb ○ Redis ○ Jenkins ○ Jenkins Connector ○ Jaeger ○ Elasticsearch ○ LocalStack ○

  47. When it went wrong ● What didn’t this setup include? #IndyCloudConf

  48. When it went wrong ● What didn’t this setup include? A container for the application itself ○ ● Application is currently 6 months behind No end in sight ○ #IndyCloudConf

  49. Kubernetes is not ● A fix for bad architecture Just because you can, doesn’t mean you should ○ ● Your architecture It is a place for your architecture to run ○ #IndyCloudConf

  50. Kubernetes is not ● A development only environment Unused configuration ○ Wasted time ■ Introduces bugs ■ #IndyCloudConf

  51. Kubernetes is ● A development + production environment Consolidated configurations ○ #IndyCloudConf

  52. Kubernetes is not ● For singular applications overkill ○ Has a high initial cost of setting up ○ Not just for running docker ○ #IndyCloudConf

  53. Where Kubernetes Isn’t Ideal ● Self Hosted Managing K8S is a full time job ○ API server for your infrastructure ■ High recurring cost of maintaining ○ Can get into weird scenarios ■ #IndyCloudConf

  54. Where Kubernetes Isn’t Ideal ● Not taking advantage of the services it offers Service discovery ○ Load balancing ○ Role Based Authentication ○ Configuration management ○ Horizontal scaling ○ #IndyCloudConf

  55. When it is ideal #IndyCloudConf

  56. Where Kubernetes Is Ideal ● Running multiple applications that interact with each other ● When you can take advantage of the services it offers Service discovery ○ Load balancing ○ Role Based Authentication ○ Configuration management ○ Horizontal scaling ○ #IndyCloudConf

  57. Where Kubernetes Is Ideal ● Microservices The 12 Factor App ○ Guidelines for Software as a Service ○ #IndyCloudConf

  58. Codebase ● All code for an application lives in one repo ● Kubernetes configurations live In source control https://12factor.net/ #IndyCloudConf

  59. Configuration ● Configuration for application doesn’t live in code ● Key - Value Pairs configMaps ○ Secrets ○ Env vars ○ Mounted files ○ https://12factor.net/ #IndyCloudConf

  60. Backing Services ● Application doesn’t care if resources are local or not ● Pods ● Services https://12factor.net/ #IndyCloudConf

  61. Processes ● Application itself is stateless ● Data that persists is in backing resource https://12factor.net/ #IndyCloudConf

  62. Concurrency ● Application should be able to scale horizontally ● Horizontal Pod Autoscalers Cpu ○ Memory ○ custom ○ https://12factor.net/ #IndyCloudConf

  63. Disposability ● Application can be stopped and started at any notice https://12factor.net/ #IndyCloudConf

  64. Dev / Prod Parity ● Use the same services in development & production ● Change what orchestrator you’re using not environment https://12factor.net/ #IndyCloudConf

  65. Logs ● App doesn’t concern itself with storage of logs ● K8S handles it https://12factor.net/ #IndyCloudConf

  66. Kubernetes is ● A bridge between Dev & Ops Ops provides K8S as a service ○ Devs are in charge of their deployments ○ #IndyCloudConf

  67. So should I use Kubernetes? #IndyCloudConf

  68. Should I use Kubernetes? ● More than one application? If not, focus on automating its deployment ○ #IndyCloudConf

  69. Should I use Kubernetes? ● Can follow deployment through to production? If not, focus on using docker-compose ○ #IndyCloudConf

  70. Should I use Kubernetes? ● Have the team to support it Or ability to pay someone to (Amazon / Azure) ○ Focus on reducing complexity of application ○ #IndyCloudConf

  71. Should I use Kubernetes? ● Applications follow the 12 factor app? Statelessness ○ Focus on automation / re-architecting application ○ #IndyCloudConf

  72. Should I use Kubernetes? ● Can you take advantage of? Service discovery ○ Load balancing ○ Role Based Authentication ○ Configuration management ○ Horizontal scaling ○ #IndyCloudConf

  73. Summary ● Kubernetes is a tool Pros ○ Cons ○ ● Can solve many problems Can cause them too ○ ● For organizations, not projects #IndyCloudConf

  74. Questions? #IndyCloudConf

  75. Thanks! ● Slides can be found: https://info.sep.com/2019indycloudconf #IndyCloudConf

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend