[KUBERNETES-I] Giới thiệu Kubernetes

Tác giả: 13/05/2023

Chào các bạn,hôm nay Nhân Hòa sẽ cùng các bạn tìm hiểu cơ bản về Kubernetest qua các series.

Với vai trò là thực tập sinh sẽ có những phần mình chỉ tìm hiểu được một chút, bài viết nếu có sai và thiếu các bạn hãy góp ý theo từng chủ đề.

PHẦN I – Giới thiệu Kubernetes 

Kubernetes (k8s) được tạo ra bởi Google vào năm 2014 như một dự án mã nguồn mở để quản lý và triển khai các ứng dụng container phân tán. Khi đó, các ứng dụng container đang trở nên phổ biến và nhu cầu quản lý chúng trở nên cần thiết.

Trước khi có Kubernetes, việc triển khai và quản lý các ứng dụng container thường gặp nhiều khó khăn và tốn nhiều thời gian. Các công cụ như Docker-compose hoặc Docker Swarm được sử dụng nhưng chúng có hạn chế về khả năng mở rộng và quản lý các ứng dụng phức tạp.

Với Kubernetes, các nhà phát triển và quản trị viên có thể triển khai và quản lý các ứng dụng container phân tán một cách dễ dàng và hiệu quả hơn. Kubernetes cung cấp một nền tảng mạnh mẽ để quản lý các container, đảm bảo tính sẵn sàng và khả năng mở rộng, và cho phép tùy chỉnh linh hoạt.

Kubernetes đã trở thành một công cụ quản lý container phổ biến và được sử dụng rộng rãi trong cộng đồng phần mềm mã nguồn mở. Hiện nay, Kubernetes đã trở thành một phần của Cloud Native Computing Foundation (CNCF) và được hỗ trợ bởi nhiều nhà cung cấp đám mây, bao gồm Google, Amazon, Microsoft và nhiều nhà cung cấp khác.

K8s vs Docker swam

Kubernetes (k8s) và Docker Swarm là hai công cụ quản lý container phổ biến trong việc triển khai ứng dụng phân tán. Dưới đây là một số so sánh giữa k8s và Docker Swarm:

  • Khả năng mở rộng: Kubernetes được thiết kế để mở rộng dễ dàng và xử lý các ứng dụng quy mô lớn hơn. Trong khi đó, Docker Swarm hạn chế hơn và không đáp ứng tốt với các ứng dụng quy mô lớn.
  • Tính sẵn sàng: Kubernetes có khả năng tự phục hồi và đảm bảo sẵn sàng cao hơn so với Docker Swarm. Kubernetes cung cấp nhiều tính năng để đảm bảo ứng dụng luôn chạy tốt, bao gồm khả năng tự động khởi động lại các container bị lỗi. Docker Swarm cũng cung cấp các tính năng tương tự, nhưng chưa đầy đủ như Kubernetes.
  • Độ phức tạp: Kubernetes có độ phức tạp cao hơn so với Docker Swarm và yêu cầu nhiều kinh nghiệm để triển khai và quản lý hiệu quả. Docker Swarm đơn giản hơn và dễ dàng để bắt đầu sử dụng.
  • Tính linh hoạt: Kubernetes cho phép người dùng tùy chỉnh và cấu hình linh hoạt hơn trong khi Docker Swarm có tính linh hoạt thấp hơn và có ít tùy chọn cấu hình.

Tóm lại, Kubernetes và Docker Swarm đều có những ưu điểm và hạn chế riêng. Tuy nhiên, Kubernetes được xem là một giải pháp phân tán và quản lý container đa nền tảng mạnh mẽ hơn và phù hợp hơn cho các ứng dụng quy mô lớn, trong khi Docker Swarm phù hợp cho các ứng dụng đơn giản và nhỏ hơn.

K8s Planning

K8s Planning (lập kế hoạch K8s) là quá trình lên kế hoạch và thiết kế hệ thống Kubernetes (K8s) để triển khai các ứng dụng và dịch vụ trên hạ tầng đám mây. Quá trình này bao gồm việc xác định các yêu cầu về tài nguyên, định cấu hình môi trường K8s, lựa chọn các công nghệ và giải pháp phù hợp, và lên kế hoạch triển khai và vận hành hệ thống.

K8s Planning đòi hỏi một số kỹ năng và kiến thức chuyên môn, bao gồm:

  • Kiến thức về các khái niệm và cơ chế hoạt động của K8s, bao gồm các thành phần cốt lõi như Pods, Services, Deployments, ConfigMaps, Secrets, và các tài nguyên khác.
  • Kỹ năng về quản lý tài nguyên và môi trường đám mây, bao gồm khả năng đánh giá và lựa chọn các nền tảng đám mây, cấu hình mạng và bảo mật, và quản lý tài nguyên ứng dụng.
  • Kỹ năng lập kế hoạch và triển khai hệ thống, bao gồm khả năng đưa ra quyết định về cấu hình hệ thống, lựa chọn công nghệ và giải pháp phù hợp, và định lịch trình triển khai và vận hành.

Khi lập kế hoạch triển khai K8s, các chuyên gia thường tập trung vào các yếu tố sau:

  • Tài nguyên của ứng dụng, bao gồm CPU, bộ nhớ, lưu trữ, mạng và các yêu cầu khác.
  • Vị trí và môi trường triển khai, bao gồm các đám mây công cộng, đám mây riêng tư, hoặc các trung tâm dữ liệu riêng.
  • Các yêu cầu về mạng và bảo mật, bao gồm các giao thức và cơ chế bảo mật để bảo vệ ứng dụng và dữ liệu.
  • Quy trình triển khai và vận hành, bao gồm các quy trình và công cụ để triển khai, cập nhật và theo dõi các ứng dụng trên hệ thống K8s.

K8s – Components

Kubernetes (K8s) là một hệ thống quản lý container được sử dụng để triển khai, quản lý và tự động hóa các ứng dụng được đóng gói trong các container. K8s bao gồm một số thành phần để quản lý và điều khiển các container trong một môi trường phân tán. Dưới đây là các thành phần chính của K8s:

  1. Master Components: là các thành phần chính của K8s, điều khiển và quản lý các node trong cluster.
  • API Server: là thành phần chính để quản lý và điều khiển các thành phần khác của K8s. Nó cung cấp một RESTful API để tương tác với các thành phần khác trong hệ thống.
  • Etcd: là một cơ sở dữ liệu phân tán được sử dụng để lưu trữ thông tin cấu hình của cluster, như cấu hình của các Pod, Services, Replication Controllers, và các thông tin khác.
  • Controller Manager: là thành phần quản lý các Controller, bao gồm ReplicaSet, Deployment và StatefulSet. Nó kiểm tra trạng thái của các đối tượng và điều khiển các hoạt động để đảm bảo trạng thái mong muốn của cluster.
  • Scheduler: là thành phần quản lý lập lịch cho các Pod. Nó kiểm tra các yêu cầu tài nguyên của Pod và lập lịch để đặt Pod vào một node phù hợp trong cluster.
  1. Node Components: là các thành phần chạy trên các máy chủ của cluster, quản lý và điều khiển các container.
  • Kubelet: là thành phần chạy trên mỗi node, quản lý và điều khiển các container và Pod. Nó tương tác với API Server để đăng ký các node và báo cáo trạng thái của các container và Pod.
  • Kube-proxy: là thành phần quản lý mạng cho các container. Nó cung cấp một dịch vụ proxy để các container có thể truy cập vào các dịch vụ và Pod khác trong cluster.
  • Container Runtime: là một giải pháp để chạy các container, bao gồm Docker, rkt và CRI-O.
  1. Add-ons: là các thành phần tùy chọn để cung cấp các tính năng bổ sung cho cluster.
  • DNS: là một dịch vụ DNS để giúp các Pod có thể tìm thấy nhau bằng tên thay vì địa chỉ IP.
  • Dashboard: là một giao diện web để giúp quản lý và giám sát cluster.
  • Ingress Controller: là một giải pháp để quản lý và điều khiển luồng dữ liệu đến các dịch vụ trong cluster.
  • Metrics Server: là một giải pháp để thu thập và lưu trữ các thông tin về tài nguyên và hoạt động của cluster.

Phần mục này chỉ là giới thiệu qua về K8s, hẹn gặp lại các bài viết sau tại wiki.nhanhoa.com

Phần II – Cài đặt K8s

Trả lời