Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes

Khối lập phương, cụm kim loại, tổ ong, phân phối tài nguyên

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 1. Hệ sinh thái Kubernetes trên Alibaba Cloud

Kể từ năm 2015, Dịch vụ container đám mây của Alibaba dành cho Kubernetes (ACK) đã là một trong những dịch vụ đám mây phát triển nhanh nhất trong Đám mây của Alibaba. Nó phục vụ nhiều khách hàng và cũng hỗ trợ cơ sở hạ tầng nội bộ của Alibaba và các dịch vụ đám mây khác của công ty.

Cũng như các dịch vụ container tương tự từ các nhà cung cấp đám mây đẳng cấp thế giới, ưu tiên hàng đầu của chúng tôi là độ tin cậy và tính sẵn sàng. Do đó, một nền tảng có thể mở rộng và có thể truy cập toàn cầu đã được tạo cho hàng chục nghìn cụm Kubernetes.

Trong bài viết này, chúng tôi sẽ chia sẻ kinh nghiệm quản lý một số lượng lớn cụm Kubernetes trên cơ sở hạ tầng đám mây, cũng như kiến ​​trúc của nền tảng cơ bản.

Nhập

Kubernetes đã trở thành tiêu chuẩn thực tế cho nhiều khối lượng công việc khác nhau trên đám mây. Như thể hiện trong hình. 1 ở trên, ngày càng có nhiều ứng dụng Alibaba Cloud chạy trên cụm Kubernetes: ứng dụng có trạng thái và không có trạng thái, cũng như trình quản lý ứng dụng. Quản lý Kubernetes luôn là chủ đề thảo luận thú vị và nghiêm túc đối với các kỹ sư xây dựng và bảo trì cơ sở hạ tầng. Khi nói đến các nhà cung cấp đám mây như Alibaba Cloud, vấn đề mở rộng quy mô được đặt lên hàng đầu. Làm cách nào để quản lý cụm Kubernetes ở quy mô này? Chúng tôi đã đề cập đến các phương pháp hay nhất để quản lý cụm Kubernetes 10 nút khổng lồ. Tất nhiên, đây là một vấn đề mở rộng thú vị. Nhưng có một thang đo khác: số lượng bản thân các cụm.

Chúng tôi đã thảo luận chủ đề này với nhiều người dùng ACK. Hầu hết trong số họ chọn chạy hàng chục, nếu không phải hàng trăm cụm Kubernetes cỡ nhỏ hoặc trung bình. Có những lý do chính đáng cho việc này: hạn chế thiệt hại tiềm ẩn, tách cụm cho các nhóm khác nhau, tạo cụm ảo để thử nghiệm. Nếu ACK đặt mục tiêu phục vụ khán giả toàn cầu bằng mô hình sử dụng này thì nó phải quản lý một số lượng lớn các cụm trên hơn 20 khu vực một cách đáng tin cậy và hiệu quả.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 2. Vấn đề quản lý số lượng lớn cụm Kubernetes

Những thách thức chính của việc quản lý các cụm ở quy mô này là gì? Như thể hiện trong hình, có bốn vấn đề cần giải quyết:

  • tính không đồng nhất

ACK sẽ hỗ trợ nhiều loại cụm khác nhau, bao gồm tiêu chuẩn, serverless, Edge, Windows và một số loại khác. Các cụm khác nhau yêu cầu các tùy chọn, thành phần và mô hình lưu trữ khác nhau. Một số khách hàng cần hỗ trợ tùy chỉnh cho các trường hợp cụ thể của họ.

  • Kích thước cụm khác nhau

Các cụm có kích thước khác nhau, từ một vài nút với một vài nhóm đến hàng chục nghìn nút với hàng nghìn nhóm. Yêu cầu về nguồn lực cũng rất khác nhau. Việc phân bổ nguồn lực không hợp lý có thể ảnh hưởng đến hiệu suất hoặc thậm chí gây ra lỗi.

  • Phiên bản khác nhau

Kubernetes đang phát triển rất nhanh. Các phiên bản mới được phát hành vài tháng một lần. Khách hàng luôn sẵn sàng thử các tính năng mới. Vì vậy, họ muốn đặt tải thử nghiệm lên các phiên bản Kubernetes mới và tải sản xuất lên các phiên bản ổn định. Để đáp ứng yêu cầu này, ACK phải liên tục cung cấp các phiên bản Kubernetes mới cho khách hàng trong khi vẫn duy trì các phiên bản ổn định.

  • Tuân thủ bảo mật

Các cụm được phân phối trên các khu vực khác nhau. Vì vậy, họ phải tuân thủ các yêu cầu an toàn khác nhau và các quy định chính thức. Ví dụ: một cụm ở Châu Âu phải tuân thủ GDPR, trong khi đám mây tài chính ở Trung Quốc phải có các lớp bảo vệ bổ sung. Những yêu cầu này là bắt buộc và không thể chấp nhận được nếu bỏ qua chúng, vì điều này tạo ra rủi ro rất lớn cho khách hàng của nền tảng đám mây.

Nền tảng ACK được thiết kế để giải quyết hầu hết các vấn đề trên. Nó hiện quản lý ổn định và đáng tin cậy hơn 10 nghìn cụm Kubernetes trên toàn thế giới. Hãy xem làm thế nào đạt được điều này, bao gồm thông qua một số nguyên tắc thiết kế/kiến trúc chính.

Thiết kế

Khối lập phương và tổ ong

Không giống như hệ thống phân cấp tập trung, kiến ​​trúc dựa trên tế bào thường được sử dụng để mở rộng nền tảng vượt ra ngoài một trung tâm dữ liệu duy nhất hoặc để mở rộng phạm vi khắc phục thảm họa.

Mỗi khu vực trong Đám mây Alibaba bao gồm một số khu vực (AZ) và thường tương ứng với một trung tâm dữ liệu cụ thể. Trong một khu vực rộng lớn (ví dụ: Hoàng Châu), thường có hàng nghìn cụm máy khách Kubernetes chạy ACK.

ACK quản lý các cụm Kubernetes này bằng chính Kubernetes, nghĩa là chúng tôi có siêu dữ liệu Kubernetes đang chạy để quản lý các cụm Kubernetes máy khách. Kiến trúc này còn được gọi là “kube-on-kube” (KoK). Kiến trúc KoK đơn giản hóa việc quản lý các cụm máy khách vì việc triển khai cụm rất đơn giản và mang tính quyết định. Quan trọng hơn, chúng ta có thể sử dụng lại các tính năng Kubernetes gốc. Ví dụ: quản lý máy chủ API thông qua triển khai, sử dụng toán tử etcd để quản lý nhiều etcd. Sự đệ quy như vậy luôn mang lại niềm vui đặc biệt.

Một số siêu cụm Kubernetes được triển khai trong một khu vực, tùy thuộc vào số lượng khách hàng. Chúng tôi gọi những tế bào metacluster này. Để bảo vệ khỏi sự thất bại của toàn bộ vùng, ACK hỗ trợ triển khai nhiều hoạt động trong một vùng duy nhất: siêu dữ liệu phân phối các thành phần chính của cụm máy khách Kubernetes trên nhiều vùng và chạy chúng đồng thời, tức là ở chế độ đa hoạt động. Để đảm bảo độ tin cậy và hiệu quả của bản gốc, ACK tối ưu hóa vị trí của các thành phần và đảm bảo rằng máy chủ API và etcd ở gần nhau.

Mô hình này cho phép bạn quản lý Kubernetes một cách hiệu quả, linh hoạt và đáng tin cậy.

Lập kế hoạch tài nguyên Metacluster

Như chúng tôi đã đề cập, số lượng cụm kim loại ở mỗi khu vực phụ thuộc vào số lượng khách hàng. Nhưng tại thời điểm nào để thêm một cụm kim loại mới? Đây là một vấn đề quy hoạch nguồn lực điển hình. Theo quy định, thông lệ là tạo một cụm mới khi các cụm kim loại hiện có đã cạn kiệt hết tài nguyên.

Hãy lấy tài nguyên mạng làm ví dụ. Trong kiến ​​trúc KoK, các thành phần Kubernetes từ cụm máy khách được triển khai dưới dạng các nhóm trong một siêu dữ liệu. Chúng tôi sử dụng Terway (Hình 3) là một plugin hiệu suất cao được phát triển bởi Alibaba Cloud để quản lý mạng container. Nó cung cấp một bộ chính sách bảo mật phong phú và cho phép bạn kết nối với các đám mây riêng ảo (VPC) của khách hàng thông qua Giao diện mạng đàn hồi đám mây của Alibaba (ENI). Để phân phối hiệu quả tài nguyên mạng trên các nút, nhóm và dịch vụ trong siêu dữ liệu, chúng tôi phải giám sát cẩn thận việc sử dụng chúng trong siêu dữ liệu đám mây riêng ảo. Khi tài nguyên mạng cạn kiệt, một ô mới sẽ được tạo.

Để xác định số lượng cụm khách hàng tối ưu trong mỗi siêu cụm, chúng tôi cũng tính đến chi phí, yêu cầu về mật độ, hạn ngạch tài nguyên, yêu cầu về độ tin cậy và số liệu thống kê. Quyết định tạo một siêu dữ liệu mới được đưa ra dựa trên tất cả thông tin này. Xin lưu ý rằng các cụm nhỏ có thể mở rộng đáng kể trong tương lai, do đó mức tiêu thụ tài nguyên sẽ tăng ngay cả khi số lượng cụm không thay đổi. Chúng tôi thường để lại đủ không gian trống cho mỗi cụm phát triển.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 3. Kiến trúc mạng Terway

Các thành phần của trình hướng dẫn mở rộng quy mô trên các cụm máy khách

Các thành phần Wizard có nhu cầu tài nguyên khác nhau. Chúng phụ thuộc vào số lượng nút và nhóm trong cụm, số lượng bộ điều khiển/toán tử không chuẩn tương tác với APIServer.

Trong ACK, mỗi cụm máy khách Kubernetes khác nhau về kích thước và yêu cầu thời gian chạy. Không có cấu hình chung cho việc đặt các thành phần thuật sĩ. Nếu chúng ta đặt nhầm giới hạn tài nguyên thấp cho một máy khách lớn thì cụm của nó sẽ không thể đáp ứng được tải. Nếu bạn đặt giới hạn cao một cách thận trọng cho tất cả các cụm, tài nguyên sẽ bị lãng phí.

Để tìm ra sự cân bằng tinh tế giữa độ tin cậy và chi phí, ACK sử dụng một hệ thống loại. Cụ thể, chúng tôi xác định ba loại cụm: nhỏ, vừa và lớn. Mỗi loại có một hồ sơ phân bổ nguồn lực riêng biệt. Loại được xác định dựa trên tải của các thành phần trình hướng dẫn, số lượng nút và các yếu tố khác. Loại cụm có thể thay đổi theo thời gian. ACK liên tục theo dõi các yếu tố này và có thể tăng/giảm loại cho phù hợp. Khi loại cụm được thay đổi, việc phân bổ tài nguyên sẽ được cập nhật tự động với sự can thiệp tối thiểu của người dùng.

Chúng tôi đang nỗ lực cải tiến hệ thống này bằng cách chia tỷ lệ chi tiết hơn và cập nhật loại chính xác hơn để những thay đổi này diễn ra suôn sẻ hơn và có ý nghĩa kinh tế hơn.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 4. Chuyển đổi loại nhiều giai đoạn thông minh

Sự phát triển của các cụm khách hàng trên quy mô lớn

Các phần trước đề cập đến một số khía cạnh của việc quản lý số lượng lớn cụm Kubernetes. Tuy nhiên, có một vấn đề khác cần được giải quyết: sự phát triển của các cụm.

Kubernetes là “Linux” của thế giới đám mây. Nó được cập nhật liên tục và trở nên mô-đun hơn. Chúng tôi phải liên tục cung cấp các phiên bản mới cho khách hàng của mình, sửa các lỗ hổng và cập nhật các cụm hiện có, cũng như quản lý một số lượng lớn các thành phần liên quan (CSI, CNI, Plugin thiết bị, Plugin lập lịch trình và nhiều thành phần khác).

Hãy lấy việc quản lý thành phần Kubernetes làm ví dụ. Để bắt đầu, chúng tôi đã phát triển một hệ thống tập trung để đăng ký và quản lý tất cả các thành phần được kết nối này.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 5. Các thành phần linh hoạt và có thể cắm được

Trước khi tiếp tục, bạn cần đảm bảo rằng quá trình cập nhật đã thành công. Để làm được điều này, chúng tôi đã phát triển một hệ thống kiểm tra chức năng của các thành phần. Việc kiểm tra được thực hiện trước và sau khi cập nhật.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 6. Kiểm tra sơ bộ các thành phần cụm

Để cập nhật các thành phần này một cách nhanh chóng và đáng tin cậy, một hệ thống triển khai liên tục hoạt động với sự hỗ trợ nâng cao từng phần (thang độ xám), tạm dừng và các chức năng khác. Bộ điều khiển Kubernetes tiêu chuẩn không phù hợp lắm cho trường hợp sử dụng này. Do đó, để quản lý các thành phần cụm, chúng tôi đã phát triển một bộ bộ điều khiển chuyên dụng, bao gồm plugin và mô-đun điều khiển phụ trợ (quản lý sidecar).

Ví dụ: bộ điều khiển BroadcastJob được thiết kế để cập nhật các thành phần trên mỗi máy công nhân hoặc kiểm tra các nút trên mỗi máy. Công việc Broadcast chạy một nhóm trên mỗi nút trong cụm, giống như DaemonSet. Tuy nhiên, DaemonSet luôn giữ cho pod chạy trong thời gian dài, trong khi BroadcastJob sẽ đóng nó lại. Bộ điều khiển Broadcast cũng khởi chạy các nhóm trên các nút mới tham gia và khởi tạo các nút có các thành phần cần thiết. Vào tháng 2019 năm XNUMX, chúng tôi đã mở mã nguồn của công cụ tự động hóa OpenKruise mà chính chúng tôi sử dụng trong công ty.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 7. OpenKurise tổ chức thực hiện tác vụ Broadcast trên tất cả các nút

Để giúp khách hàng chọn cấu hình cụm phù hợp, chúng tôi cũng cung cấp một bộ cấu hình được xác định trước, bao gồm cấu hình Serverless, Edge, Windows và Bare Metal. Khi bối cảnh mở rộng và nhu cầu của khách hàng tăng lên, chúng tôi sẽ bổ sung thêm nhiều hồ sơ hơn để đơn giản hóa quá trình thiết lập tẻ nhạt.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 8. Cấu hình cụm nâng cao và linh hoạt cho các tình huống khác nhau

Khả năng quan sát toàn cầu trên các trung tâm dữ liệu

Như thể hiện trong hình dưới đây. Kể từ ngày 9 tháng XNUMX, dịch vụ đám mây Alibaba Cloud Container đã được triển khai ở XNUMX khu vực trên thế giới. Với thang đo này, một trong những mục tiêu chính của ACK là dễ dàng theo dõi trạng thái của các cụm đang chạy để nếu cụm máy khách gặp sự cố, chúng tôi có thể nhanh chóng ứng phó với tình huống đó. Nói cách khác, bạn cần đưa ra giải pháp cho phép bạn thu thập số liệu thống kê theo thời gian thực một cách hiệu quả và an toàn từ các cụm khách hàng ở tất cả các khu vực - và trình bày kết quả một cách trực quan.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 9. Triển khai toàn cầu dịch vụ Alibaba Cloud Container ở XNUMX khu vực

Giống như nhiều hệ thống giám sát Kubernetes, chúng tôi sử dụng Prometheus làm công cụ chính. Đối với mỗi siêu dữ liệu, đại lý Prometheus thu thập các số liệu sau:

  • Các số liệu của hệ điều hành như tài nguyên máy chủ (CPU, bộ nhớ, đĩa, v.v.) và băng thông mạng.
  • Các số liệu cho hệ thống quản lý cụm máy khách và siêu dữ liệu, chẳng hạn như kube-apiserver, kube-controller-manager và kube-scheduler.
  • Số liệu từ kubernetes-state-metrics và cadvisor.
  • etcd các số liệu như thời gian ghi đĩa, kích thước cơ sở dữ liệu, thông lượng kết nối giữa các nút, v.v.

Số liệu thống kê toàn cầu được thu thập bằng mô hình tổng hợp nhiều lớp điển hình. Dữ liệu giám sát từ mỗi siêu dữ liệu trước tiên được tổng hợp ở từng khu vực, sau đó được gửi đến máy chủ trung tâm để hiển thị bức tranh tổng thể. Mọi thứ đều hoạt động thông qua cơ chế liên đoàn. Máy chủ Prometheus trong mỗi trung tâm dữ liệu thu thập số liệu từ trung tâm dữ liệu đó và máy chủ Prometheus trung tâm chịu trách nhiệm tổng hợp dữ liệu giám sát. AlertManager kết nối với trung tâm Prometheus và nếu cần, sẽ gửi thông báo qua DingTalk, email, SMS, v.v. Trực quan hóa - sử dụng Grafana.

Trong Hình 10, hệ thống giám sát có thể được chia thành ba cấp độ:

  • Mức ranh giới

Lớp xa trung tâm nhất. Máy chủ Prometheus Edge chạy trong mỗi siêu dữ liệu, thu thập số liệu từ các cụm máy khách và meta trong cùng một miền mạng.

  • Cấp độ tầng

Chức năng của tầng tầng Prometheus là thu thập dữ liệu giám sát từ nhiều vùng. Các máy chủ này hoạt động ở cấp độ đơn vị địa lý lớn hơn như Trung Quốc, Châu Á, Châu Âu và Châu Mỹ. Khi các cụm phát triển, khu vực có thể được phân chia và sau đó máy chủ Prometheus cấp tầng sẽ xuất hiện ở mỗi khu vực rộng lớn mới. Với chiến lược này, bạn có thể mở rộng quy mô một cách suôn sẻ khi cần thiết.

  • Cấp trung ương

Máy chủ Prometheus trung tâm kết nối với tất cả các máy chủ xếp tầng và thực hiện việc tổng hợp dữ liệu cuối cùng. Để đảm bảo độ tin cậy, hai phiên bản Prometheus trung tâm đã được triển khai ở các khu vực khác nhau, được kết nối với cùng một máy chủ phân tầng.

Cách Alibaba Cloud quản lý hàng chục nghìn cụm Kubernetes bằng... Kubernetes
Cơm. 10. Kiến trúc giám sát đa cấp toàn cầu dựa trên cơ chế liên kết Prometheus

Tóm tắt thông tin

Các giải pháp đám mây dựa trên Kubernetes tiếp tục chuyển đổi ngành công nghiệp của chúng tôi. Dịch vụ container của Alibaba Cloud cung cấp dịch vụ lưu trữ an toàn, đáng tin cậy và hiệu suất cao - đây là một trong những dịch vụ lưu trữ đám mây Kubernetes tốt nhất. Nhóm Alibaba Cloud tin tưởng mạnh mẽ vào các nguyên tắc của Nguồn mở và cộng đồng nguồn mở. Chúng tôi chắc chắn sẽ tiếp tục chia sẻ kiến ​​thức của mình trong lĩnh vực vận hành và quản lý công nghệ đám mây.

Nguồn: www.habr.com

Thêm một lời nhận xét