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.

Tìm hiểu và triển khai ứng dụng Web với Kubernetes

3,241 views

Published on

Nghiên cứu quý 3 của công ty GMO-Z.com VietnamLab.
Chủ đề Tìm hiểu và triển khai ứng dụng Web với Kubernetes

Published in: Technology
  • Be the first to comment

Tìm hiểu và triển khai ứng dụng Web với Kubernetes

  1. 1. Kubernetes trong triển khai ứng dụng web PhongNX
  2. 2. Agenda  Bối cảnh  Nhắc lại về Docker  Giới thiệu Kubernetes  Kiến trúc Kubernetes  Các thành phần cơ bản trong Kubernetes  Rancher 2.0  Harbor – Docker registry  Demo
  3. 3. Agenda  Bối cảnh  Nhắc lại về Docker  Giới thiệu Kubernetes  Kiến trúc Kubernetes  Các thành phần cơ bản trong Kubernetes  Rancher 2.0  Harbor – Docker registry  Demo
  4. 4. Docker xuất hiện mở ra cuộc cách mạng về ảo hoá
  5. 5. Các vấn đề liên quan đến triển khai hệ thống Health Discovery Scheduling Configuration Scaling Security There are more! Monitoring
  6. 6. 4. Challenge !
  7. 7. Agenda  Bối cảnh  Nhắc lại về Docker  Giới thiệu Kubernetes  Kiến trúc Kubernetes  Các thành phần cơ bản trong Kubernetes  Rancher 2.0  Harbor – Docker registry  Demo
  8. 8. Vấn đề trong triển khai hệ thống phần mềm
  9. 9. m n
  10. 10. Giải pháp triển khai hệ thống phần mềm
  11. 11. So sánh với các HyperVisor
  12. 12. HyperVisor Type 2 Docker Virtualization Type Vitualization Machine Container Weight of the created virtual systems Heavy Very lightweight Startup time for created machine A few minutes A few seconds Isolation level for created vitural systems Full Partial Guaranteed Resources at Hardware Level ? Yes No Can create machines with different OS ? Yes No
  13. 13. Kiến trúc Docker
  14. 14. Nginx Php - fpm Mysql Docker Container Simple web app
  15. 15. Agenda  Bối cảnh  Nhắc lại về Docker  Giới thiệu Kubernetes  Kiến trúc Kubernetes  Các thành phần cơ bản trong Kubernetes  Rancher 2.0  Harbor – Docker registry  Demo
  16. 16. κυβερνήτης
  17. 17. k8s
  18. 18. Kubernetes  Manage application, not machine  Kubernetes là một Platform tự động hoá việc quản lý, scaling container  Kubernetes còn gọi là Container orchestration engine.  Kubernetes by Google dựa trên kinh nghiệm quản lý sử dụng các container
  19. 19. =
  20. 20. Kubernetes vs Docker Swarm https://platform9.com/blog/kubernetes-docker-swarm-compared/
  21. 21. Kubernetes làm được những gì  Việc quản lý hàng loạt docket host  Container Scheduling  Rolling update  Scaling/Auto Scaling  Monitor vòng đời và tình trạng sống chết của container.  Self-healing trong trường hợp có lỗi xãy ra. (Có khả năng phát hiện và tự correct lỗi)  Service discovery  Load balancing  Quản lý data  Quản lý work node  Quản lý log  Infrastructure as Code  Sự liên kết và mở rộng với các hệ thống khác
  22. 22. Kubernetes liên kết với hệ sinh thái  Ansible: Deploy container tới Kubernetes  Apache Ignite: Sử dụng Service Discovery của Kubernetes, tự động tạo và scaling k8s clkuster  Fluentd: gửi log của container trong Kubernetes  Jenkins: Deploy container đến Kubernetes  OpenStack:Cấu trúc k8s liên kết với Cloud  Prometheus: Monitor Kubernetes  Spark: Thực thi native job trên Kubernetes(thay thế cho YARN)  Spinnaker:Deploy container đến Kubernetes  v.v
  23. 23. Các môi trường Kubernetes  Local Kubermetes  Công cụ hỗ trợ thiết lập môi trường Kubernetes  Quản lý Kubernetes trên public cloud
  24. 24. Local Kubermetes Minikube Docker for Mac
  25. 25. Công cụ hỗ trợ thiết lập môi trường Kubernetes  kubeadm  Rancher
  26. 26. Quản lý Kubernetes trên public cloud  Google Kubernetes Engine(GKE)  Azure Container Service(AKS)  Elastic Container Service for Kubernetes(EKS) GKE AKS
  27. 27. GKE(Google Kubernetes Engine)
  28. 28. Agenda  Bối cảnh  Nhắc lại về Docker  Giới thiệu Kubernetes  Kiến trúc Kubernetes  Các thành phần cơ bản trong Kubernetes  Rancher 2.0  Harbor – Docker registry  Demo
  29. 29. Agenda  Bối cảnh  Nhắc lại về Docker  Giới thiệu Kubernetes  Kiến trúc Kubernetes  Các thành phần cơ bản trong Kubernetes  Rancher 2.0  Harbor – Docker registry  Demo
  30. 30. Node
  31. 31. Hosts running k8s daemons
  32. 32. Node Node Node Master API Scheduler etc.. kubelet kubelet kubelet
  33. 33. Kubernetes Resource Phân Loại Resource Mô tả Workloads Resource liên quan đến thực thi container Discovery&Load balancer Resource cung cấp Endpoint - cho phép truy cập Container từ bên ngoài Cluster Config&Storage Resources liên quan đến settings, confidential information, persistent volumes vv Cluster Resources liên quan đến security và quota Metadata Resource cho việc quản lý Resource
  34. 34. Workloads Pod ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob Discovery&LB resource Service ClusterIP NodePort LoadBalancer ExternalIP ExternalName Headless Ingress Config&Storage Secret ConfigMap PersistentVolumeClaim Cluster resource Namespace ServiceAccount Role ClusterRole RoleBinding ClusterRoleBinding NetworkPolicy ResourceQuota PersistentVolume Node Metadata resource CustomResourceDefinition LimitRange HorizontalPodAutoscaler
  35. 35. Workloads Pod ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob Discovery&LB resource Service ClusterIP NodePort LoadBalancer ExternalIP ExternalName Headless Ingress Config&Storage Secret ConfigMap PersistentVolumeClaim Cluster resource Namespace ServiceAccount Role ClusterRole RoleBinding ClusterRoleBinding NetworkPolicy ResourceQuota PersistentVolume Node Metadata resource CustomResourceDefinition LimitRange HorizontalPodAutoscaler Application Developer normally use 3 types
  36. 36. Workloads Pod ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob Discovery&LB resource Service ClusterIP NodePort LoadBalancer ExternalIP ExternalName Headless Ingress Config&Storage Secret ConfigMap PersistentVolumeClaim
  37. 37. Pod
  38. 38. Basic unit of deployment in k8s
  39. 39. Group of container
  40. 40. Container configuration
  41. 41. Shared storage
  42. 42. Pod container container container Volume NIC
  43. 43. Pod container container container nginx frontend app redis/cache e.g.
  44. 44. Scheduled together
  45. 45. Guaranteed to be on the same node
  46. 46. container container container container container container container container container Node Node Node Pod Pod Pod
  47. 47. container container container container container container Node Node Node Pod Pod container container container Pod container container container Pod container container container Pod container container container Pod container container container Pod Depends on each node’s resource availability and each pod’s resource requirement
  48. 48. container container container Node Node
  49. 49. container container container Node Node This will NEVER happen
  50. 50. MasterAPI UI CLI Node 1 Node 2 Node 3 Pod
  51. 51. Pod Node MasterAPI UI CLI Node 1 Node 2 Node 3 Pod =
  52. 52. Demo Pod
  53. 53. ReplicaSet
  54. 54. Keep track of Pod replicas
  55. 55. Replica Set container container container Pod replica: 3 template: container container container Pod A
  56. 56. Replica Set container container container Pod replica: 3 template: container container container Pod B container container container Pod A
  57. 57. Replica Set container container container Pod replica: 3 template: container container container Pod B container container container Pod A container container container Pod C
  58. 58. Replica Set container container container Pod replica: 3 template: container container container Pod B container container container Pod A container container container Pod C
  59. 59. Replica Set container container container Pod replica: 3 template: container container container Pod B container container container Pod A container container container Pod D
  60. 60. Auto healing
  61. 61. Deployment
  62. 62. Manages Replicas Set state transitions
  63. 63. Deployment container container container Pod replica: 3 template:
  64. 64. Deployment container container container Pod replica: 3 template: ReplicaSet A container container container Pod replica: 3 template:
  65. 65. Deployment container container container Pod replica: 3 template: ReplicaSet A container container container Pod replica: 3 template: Change some setting, please!
  66. 66. Deployment container container container Pod ReplicaSet A container container container Pod replica: 3 template: Change some setting, please! replica: 3 template:
  67. 67. Deployment container container container Pod ReplicaSet A container container container Pod replica: 3 template: Change some setting, please! ReplicaSet B container container container Pod replica: 3 template: replica: 3 template:
  68. 68. Deployment container container container Pod ReplicaSet A Change some setting, please! ReplicaSet B container container container Pod replica: 3 template: replica: 3 template:
  69. 69. Deployment container container container Pod ReplicaSet B container container container Pod replica: 3 template: replica: 3 template:
  70. 70. Keep track of state change history
  71. 71. Deployment container container container Pod ReplicaSet B container container container Pod replica: 3 template: replica: 3 template:
  72. 72. Deployment container container container Pod Oh wait, I actually didn’t want to do that ReplicaSet B container container container Pod replica: 3 template: replica: 3 template:
  73. 73. Deployment container container container Pod Oh wait, I actually didn’t want to do that ReplicaSet B container container container Pod replica: 3 template: replica: 3 template: Rollback
  74. 74. Deployment container container container Pod ReplicaSet A container container container Pod replica: 3 template: ReplicaSet B container container container Pod replica: 3 template: replica: 3 template: Oh wait, I actually didn’t want to do that Rollback
  75. 75. Deployment container container container Pod ReplicaSet A container container container Pod replica: 3 template: ReplicaSet B replica: 3 template: Oh wait, I actually didn’t want to do that Rollback
  76. 76. Deployment container container container Pod ReplicaSet A container container container Pod replica: 3 template: replica: 3 template:
  77. 77. Rolling update Pod
  78. 78. DaemonSet
  79. 79. DaemonSet: Schedule Pod một cách tuần tự từng Pod một trên tất cả các Node.  Use case  Fluentd: Collect logs tool  Datadog: Monitoring tool
  80. 80. Job
  81. 81. Job = Pod + batch = env + batch  Job  Start Pod (container centos)  Run command: sleep 60;  Finish
  82. 82.  restartPolicy  OnFailure: Use this Pod to run job again  Never: Create new Pod if Pod had problem and run job
  83. 83.  completions: 1  Job success one time and finish  parallelism: 1  run parallelism 1 pod  backoffLimit: 10  Allows failing 10 times
  84. 84. Run job one time
  85. 85. CronJob
  86. 86. Cronjob = Job + schedule Crontab = batch + schedule
  87. 87. Cronjob = Job + schedule 1 2 3
  88. 88. Cronjob = Job + schedule  schedule  same cron format  http://www.nncron.ru/help/EN/working/cron- format.htm  Setting  concurrencyPolicy  Allow(default): Không hạn chế đối với việc thực thi đồng thời  Forbid: Job trước đó thực hiện chưa xong thì không tạo Job mới.(không thực hiện đồng thời)  Replace: Trong trường hợp Job cũ đang chạy, huỷ Job cũ và tạo Job mới 1 2 3
  89. 89. Cronjob = Job + schedule  schedule  Setting  startingDeadlineSeconds  Thời gian trễ cho phép để run job  successfulJobsHistoryLimit  Số lượng Job thành công được duy trì  failedJobsHistoryLimit  Số lượng Job thất bại duy trì.  Job 1 2 3
  90. 90. K8s Cronjob vs cron job in linux
  91. 91. Problem in cron job in linux Job
  92. 92. Problem in cron job in linux Job That’s OK ??? Job
  93. 93. Solution with K8s Cronjob Job Node 1 Node 2
  94. 94. Solution with K8s Cronjob Job Node 1 Node 2
  95. 95. Solusion with K8s Cronjob Node 1 Node 2 Job
  96. 96. Workloads Pod ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob Discovery&LB resource Service ClusterIP NodePort LoadBalancer ExternalIP ExternalName Headless Ingress Config&Storage Secret ConfigMap PersistentVolumeClaim
  97. 97. Workloads Pod ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob Discovery&LB resource Service ClusterIP NodePort LoadBalancer ExternalIP ExternalName Headless Ingress Config&Storage Secret ConfigMap PersistentVolumeClaim
  98. 98. Kubernetes network
  99. 99. ClusterIP
  100. 100. ClusterIP Service :80 :80 :80
  101. 101. ExternalIP
  102. 102. :80 :80 :80 ExtenalIP Service
  103. 103. NodePort
  104. 104. :80 :80 :80 NodePort Service
  105. 105. :80 :80 :80 NodePort Service
  106. 106. NodePort Service
  107. 107. NodePort Service
  108. 108. LoadBalancer
  109. 109. Load Balancer Service
  110. 110. LoadBalancer support for GKE AKS
  111. 111. Loadbalancer for my K8s ???
  112. 112. MetalLB https://metallb.universe.tf/
  113. 113. Workloads Pod ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob Discovery&LB resource Service ClusterIP NodePort LoadBalancer ExternalIP ExternalName Headless Ingress Config&Storage Secret ConfigMap PersistentVolumeClaim
  114. 114. Agenda  Bối cảnh  Nhắc lại về Docker  Giới thiệu Kubernetes  Kiến trúc Kubernetes  Các thành phần cơ bản trong Kubernetes  Rancher 2.0  Harbor – Docker registry  Demo
  115. 115. Rancher is redesigned to work on Kubernetes.
  116. 116. Rancher 2.0
  117. 117. Agenda  Bối cảnh  Nhắc lại về Docker  Giới thiệu Kubernetes  Kiến trúc Kubernetes  Các thành phần cơ bản trong Kubernetes  Rancher 2.0  Harbor – Docker registry  Demo
  118. 118. Docker registry
  119. 119. Docker registry
  120. 120. Docker registry
  121. 121. Kiến trúc Harbor
  122. 122. Kiến trúc Harbor
  123. 123. MasterAPICLI
  124. 124. MasterAPICLI Kube-demo CLI Push images
  125. 125. MasterAPICLI Kube-demo code-pvc 2G nginx-config-pvc 1G CLI
  126. 126. MasterAPICLI Kube-demo code-pvc 2G nginx-config-pvc 1G CLI
  127. 127. MasterAPICLI Kube-demo code-pvc 2G nginx-config-pvc 1G CLI Mysql
  128. 128. MasterAPICLI Kube-demo code-pvc 2G nginx-config-pvc 1G CLI Mysql Pull images
  129. 129. MasterAPICLI Pull images NIC NIC code-pvc 2G nginx-config-pvc 1G Mysql NodePort *:32253 Pod (nginx, php-fpm) Volume Mysql Container Kube-demo
  130. 130. Đã làm được  Hiểu được tổng quan về kiến trúc và các thành phần của K8s  Workload resource (Pod, ReplicaSet, Deployment, Job…etc..)  Service (ClusterIP, NodePortIP, LoadBalancer, etc..)  Xây dựng được K8s cluster, thử nghiệm các loại resouce  Trãi nghiệm các loại môi trường K8s  Minikube, Docker for MAC  K8s with tool Rancher  GCE  Kết hợp được với các công cụ hỗ trợ cho K8s  Rancher 2.0  Harbor  Xây dựng demo kết hợp các thành phần + công cụ hỗ trợ K8s
  131. 131. Đã làm được  Hiểu sâu hơn về kiến trúc dự án GMO POINT hiện tại  Viết blog và chia sẻ  [Nhập môn Kubernetes P1] - Tại sao Kubernetes là cần thiết?  [Nhập môn Kubernetes P2] - Các môi trường Kubernetes  [Nhập môn Kubernetes P3] - Sử dụng Rancher 2.0, Cấu trúc môi trường Kubernetes  [Nhập môn Kubernetes P4] - Nền tảng Kubernetes  [Nhập môn Kubernetes P5] - Kubernetes Workloads Resource (1)  [Nhập môn Kubernetes P6] - Kubernetes Workloads Resource (2)  [Nhập môn Kubernetes P9] - Kubernetes Config&Storage Resource (1)  [Nhập môn Kubernetes P11] - Quản lý Container Images bảo mật với Harbor
  132. 132. Chưa làm được  Chưa tìm hiểu hết được các resource trong K8s
  133. 133. Workloads Pod ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob Discovery&LB resource Service ClusterIP NodePort LoadBalancer ExternalIP ExternalName Headless Ingress Config&Storage Secret ConfigMap PersistentVolumeClaim Cluster resource Namespace ServiceAccount Role ClusterRole RoleBinding ClusterRoleBinding NetworkPolicy ResourceQuota PersistentVolume Node Metadata resource CustomResourceDefinition LimitRange HorizontalPodAutoscaler Application Developer normally use 3 types
  134. 134. Chưa làm được  Chưa tìm hiểu hết được các resource trong K8s  Demo còn nhỏ, chưa thể hiện được sự phức tạp và phát huy sức mạnh của K8s  Chưa kết hợp với Ansible để cấu trúc và deploy k8s resource
  135. 135. Hướng phát triển  Tìm hiểu về các resource còn lại  Kết hợp với Ansibe  Tìm hiểu MetalLB để Loadbalancer  Sử dụng công cụ hỗ trợ  Prometheus – Grafana: system & time series database  Elasticsearch – Fluent – Kibana: log collect and monitoring

×