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

Recommend


More recommend