Skip to content

Instantly share code, notes, and snippets.

@0xmanhnv
Created January 11, 2019 06:37
Show Gist options
  • Save 0xmanhnv/5c5247f316b3f2e84e41b182a8e2d4b9 to your computer and use it in GitHub Desktop.
Save 0xmanhnv/5c5247f316b3f2e84e41b182a8e2d4b9 to your computer and use it in GitHub Desktop.
Kiến trúc của Kubernetes

Tổng quan Kubernetes

Kubernetes là một công cụ quản lý container mã nguồn mở, tự động hóa việc deploy container, scaling container và load balancing container.

  • Được viết trên Golang, có một cộng đồng lớn vì được phát triển đầu tiên bởi Google và sau đó là CNCF
  • Có thể nhóm nhiều container thành một đơn vị logic để quản lý và deploy chúng dễ dàng.

Note: Kubernetes không phải là một nền tảng container. Nó là một giải pháp quản lý multi container

Tính năng của Kubernetes

Kiến trúc và các thành phần của Kubernetes

Kiến trúc Kubernetes có các thành phần chính sau:

  • Master nodes
  • Worker/Slave nodes
  • Distributed key-value store(etcd)

Master nodes

Là điểm vào cho tất cả các nhiệm vụ quản trị chịu trách nhiệm quản lý Kubernetes cluster. Có thể có nhiều hơn một master node trong cluster để kiểm tra khả năng chịu lỗi. Nhiều hơn một master node đặt hệ thống ở chế độ high availability, trong đó một trong số chúng sẽ là node chính mà se thực hiện tất cả các tác vụ.

Để quản lý trạng thái cluster, nó sử dụng etcd trong đó tất cả các master node kết nối với nó.

Như bạn có thể thấy trong sơ đồ trên, master node bao gồm 4 thành phần:

API server

  • Thực hiện tất cả các tác vụ quản trị thông qua API server trong master node
  • Cac lenh REST được gửi đến API server để xác thực và xử lý các yêu cầu.
  • Sau khi yêu cầu, trạng thái kết quả của cluster đựợc lưu trữ trong distributed key-value store

Scheduler

  • Scheduler lập lịch các tác vụ cho các worker node. Nó lưu trữ thông tin sử dụng tài nguyên cho mỗi worker node
  • Nó lên lịch cho công việc dưới dạng Pods và Services
  • Trước khi lên lịch cho các tác vụ, scheduler cũng phải tính đến chất lượng của các service yêu cầu, dữ liệu local,...

Controller manager

  • Còn được gọi là controllers
  • Nó là một daemon điều chỉnh Kubernetes cluster quản lý các vòng điều khiển khác nhau.
  • Nó cũng thực hiện các chức năng vòng đời như tạo không gian tên và vòng đời, thu gom rác sự kiện, thu gom rác các node...
  • Về cơ bản, controllers theo dõi trạng thái mong muốn của các đối tượng mà nó quản lý và theo dõi trạng thái hiện tại của chúng thông qua API server. Nếu trạng thái hiện tại của các đối tượng mà nó quản lý không đáp ứng trạng thái mong muốn, thì vòng điều khiển sẽ thực hiện các bước khắc phục để đảm bảo rằng trạng thái hiện tại giống với trạng thái mong muốn.

ETCD là gì

  • etcd là distributed key-value store lưu trữ trạng thái cluster
  • Nó có thể là một phần của Kubernetes master, hoặc nó có thể được cấu hình bên ngoài.
  • etcd được viết bằng ngôn ngữ Go. Trong Kubernetes, ngoài việc lưu trữ trạng thái cluster, nó còn được sử dụng để lưu trữ các chi tiết cấu hình như subnets, ConfigMaps, Secrets...

Worker Node

Nó là một máy chủ vật lý hoặc bạn có thể nói một VM chạy các ứng dụng bằng Pods được điều khiển bởi master node. Trên một máy chủ vật lý, các pod được lên lịch. Để truy cập ứng dụng từ bên ngoài, chúng ta cần kết nối tới các node.

Worker node bao gồm các thành phần sau:

Container runtime:

  • Để chạy và quản lý vòng đời của container, chúng ta cần container runtime trên các worker node
  • Đôi khi, Docker cũng được gọi là container runtime, nhưng chính xác hơn, Docker là một nền tảng sử dụng containers như container runtime

Kubelet:

  • Nó là một agent giao tiếp với Master node và thực thi các trên các node hoặc worker node. Nó nhận được các thông số kỹ thuật của Pod thông qua API server và thực thi container liên kết với Pod và đảm bảo rằng các container chứa Pod đó đang chaỵ và healthy.

Kube-proxy:

  • Kube-proxy chạy trên mỗi node để xử lý sub-netting host và đảm bảo rằng các services luôn sẵn sàng cho bên ngoài
  • Nó phục vụ như một network proxy và load balancing cho một service trên một worker node và quản lý định tuyến mạng cho các gói TCP và UDP
  • Đó là network proxy chạy trên mỗi worker node và lắng nghe API server cho mỗi lần tạo/xóa Service
  • Đối với mỗi Service, kube-proxy sẽ thiết lập các routes để có thể tiếp cận với nó.

Reference document https://medium.com/edureka/kubernetes-architecture-c43531593ca5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment