Ba cấp độ tự động hóa quy mô trong Kubernetes: Cách sử dụng chúng hiệu quả

Ba cấp độ tự động hóa quy mô trong Kubernetes: Cách sử dụng chúng hiệu quả
Để hoàn toàn làm chủ Kubernetes, bạn cần biết các cách khác nhau để mở rộng quy mô tài nguyên cụm: bằng cách theo các nhà phát triển hệ thống, đây là một trong những nhiệm vụ chính của Kubernetes. Chúng tôi đã cung cấp thông tin tổng quan cấp cao về cơ chế tự động thay đổi quy mô theo chiều ngang và chiều dọc cũng như các đề xuất về cách sử dụng chúng một cách hiệu quả.

bài báo Kubernetes Autoscaling 101: Trình chia tỷ lệ tự động theo cụm, Trình chia tỷ lệ tự động theo chiều ngang và Trình chia tỷ lệ tự động theo chiều dọc được dịch bởi nhóm đã triển khai tính năng tự động tính toán trong Kubernetes aaS từ Mail.ru.

Tại sao điều quan trọng là phải suy nghĩ về việc mở rộng quy mô

Kubernetes - một công cụ để quản lý tài nguyên và điều phối. Tất nhiên, thật tuyệt khi mày mò các tính năng thú vị về triển khai, giám sát và quản lý nhóm (nhóm là một nhóm vùng chứa được khởi chạy để đáp ứng yêu cầu).

Tuy nhiên, bạn cũng nên suy nghĩ về những câu hỏi sau:

  1. Làm thế nào để mở rộng quy mô mô-đun và ứng dụng?
  2. Làm thế nào để container hoạt động hiệu quả?
  3. Làm cách nào để phản hồi những thay đổi liên tục về mã và khối lượng công việc từ người dùng?

Việc định cấu hình các cụm Kubernetes để cân bằng tài nguyên và hiệu suất có thể là một thách thức và đòi hỏi kiến ​​thức chuyên môn về hoạt động bên trong của Kubernetes. Khối lượng công việc của ứng dụng hoặc dịch vụ của bạn có thể dao động trong ngày hoặc thậm chí trong suốt một giờ, do đó, tốt nhất nên coi việc cân bằng là một quá trình diễn ra liên tục.

Cấp độ tự động điều chỉnh quy mô của Kubernetes

Tự động hóa quy mô hiệu quả đòi hỏi sự phối hợp giữa hai cấp độ:

  1. Cấp độ nhóm, bao gồm cả bộ chia tỷ lệ tự động theo chiều ngang (Horizontal Pod Autoscaler, HPA) và bộ chia tỷ lệ tự động theo chiều dọc (Vertical Pod Autoscaler, VPA). Đây là việc mở rộng quy mô tài nguyên có sẵn cho vùng chứa của bạn.
  2. Cấp độ cụm, được quản lý bởi Bộ chia tỷ lệ tự động cụm (CA), giúp tăng hoặc giảm số lượng nút trong cụm.

Mô-đun Bộ chia tỷ lệ tự động theo chiều ngang (HPA)

Đúng như tên gọi, HPA chia tỷ lệ số lượng bản sao nhóm. Hầu hết các nhà phát triển sử dụng tải CPU và bộ nhớ làm yếu tố kích hoạt để thay đổi số lượng bản sao. Tuy nhiên, có thể mở rộng quy mô hệ thống dựa trên số liệu tùy chỉnh, của chúng kết hợp hoặc thậm chí số liệu bên ngoài.

Sơ đồ vận hành HPA cấp cao:

  1. HPA liên tục kiểm tra các giá trị số liệu được chỉ định trong quá trình cài đặt ở khoảng thời gian mặc định là 30 giây.
  2. HPA cố gắng tăng số lượng mô-đun nếu đạt đến ngưỡng quy định.
  3. HPA cập nhật số lượng bản sao trong bộ điều khiển triển khai/sao chép.
  4. Sau đó, bộ điều khiển triển khai/sao chép sẽ triển khai mọi mô-đun bổ sung cần thiết.

Ba cấp độ tự động hóa quy mô trong Kubernetes: Cách sử dụng chúng hiệu quả
HPA bắt đầu quá trình triển khai mô-đun khi đạt đến ngưỡng số liệu

Khi sử dụng HPA, hãy cân nhắc những điều sau:

  • Khoảng thời gian kiểm tra HPA mặc định là 30 giây. Nó được thiết lập bởi lá cờ ngang-pod-autoscaler-đồng bộ hóa-thời gian trong trình quản lý bộ điều khiển.
  • Sai số tương đối mặc định là 10%.
  • Sau lần tăng số lượng mô-đun gần đây nhất, HPA dự kiến ​​các số liệu sẽ ổn định trong vòng ba phút. Khoảng thời gian này được đặt bởi cờ ngang-pod-autoscaler-nâng cấp-độ trễ.
  • Sau lần giảm số lượng mô-đun cuối cùng, HPA đợi trong 5 phút để ổn định. Khoảng thời gian này được đặt bởi cờ ngang-pod-autoscaler-downscale-delay.
  • HPA hoạt động tốt nhất với các đối tượng triển khai thay vì bộ điều khiển sao chép. Tự động điều chỉnh theo chiều ngang không tương thích với cập nhật luân phiên, thao tác trực tiếp với bộ điều khiển sao chép. Khi triển khai, số lượng bản sao phụ thuộc trực tiếp vào đối tượng triển khai.

Tự động chia tỷ lệ theo chiều dọc của nhóm

Tự động điều chỉnh theo chiều dọc (VPA) phân bổ nhiều hơn (hoặc ít hơn) thời gian CPU hoặc bộ nhớ cho các nhóm hiện có. Thích hợp cho các nhóm có trạng thái hoặc không có trạng thái, nhưng chủ yếu dành cho các dịch vụ có trạng thái. Tuy nhiên, bạn cũng có thể sử dụng VPA cho các mô-đun không trạng thái nếu bạn cần tự động điều chỉnh lượng tài nguyên được phân bổ ban đầu.

VPA cũng phản hồi các sự kiện OOM (hết bộ nhớ). Việc thay đổi thời gian và bộ nhớ CPU yêu cầu khởi động lại nhóm. Khi được khởi động lại, VPA tôn trọng ngân sách phân bổ (ngân sách phân phối nhóm, PDB) để đảm bảo số lượng mô-đun yêu cầu tối thiểu.

Bạn có thể đặt tài nguyên tối thiểu và tối đa cho mỗi mô-đun. Do đó, bạn có thể giới hạn dung lượng bộ nhớ được phân bổ tối đa là 8 GB. Điều này rất hữu ích nếu các nút hiện tại chắc chắn không thể phân bổ nhiều hơn 8 GB bộ nhớ cho mỗi vùng chứa. Thông số kỹ thuật chi tiết và cơ chế hoạt động được mô tả trong wiki chính thức của VPA.

Ngoài ra, VPA còn có chức năng đề xuất khá thú vị (VPA recommender). Nó giám sát việc sử dụng tài nguyên và các sự kiện OOM của tất cả các mô-đun để đề xuất các giá trị thời gian CPU và bộ nhớ mới dựa trên thuật toán thông minh dựa trên các số liệu lịch sử. Ngoài ra còn có một API xử lý nhóm và trả về các giá trị tài nguyên được đề xuất.

Điều đáng chú ý là Công cụ giới thiệu VPA không theo dõi "giới hạn" tài nguyên. Điều này có thể dẫn đến việc mô-đun độc quyền tài nguyên trong các nút. Tốt hơn hết bạn nên đặt giới hạn ở cấp độ không gian tên để tránh tiêu thụ bộ nhớ hoặc CPU lớn.

Sơ đồ hoạt động VPA cấp cao:

  1. VPA liên tục kiểm tra các giá trị số liệu được chỉ định trong quá trình cài đặt với khoảng thời gian mặc định là 10 giây.
  2. Nếu đạt đến ngưỡng quy định, VPA sẽ cố gắng thay đổi lượng tài nguyên được phân bổ.
  3. VPA cập nhật số lượng tài nguyên trong bộ điều khiển triển khai/sao chép.
  4. Khi các mô-đun được khởi động lại, tất cả tài nguyên mới sẽ được áp dụng cho các phiên bản đã tạo.

Ba cấp độ tự động hóa quy mô trong Kubernetes: Cách sử dụng chúng hiệu quả
VPA bổ sung lượng tài nguyên cần thiết

Hãy ghi nhớ những điểm sau khi sử dụng VPA:

  • Việc mở rộng quy mô yêu cầu khởi động lại nhóm bắt buộc. Điều này là cần thiết để tránh hoạt động không ổn định sau khi thực hiện thay đổi. Để đảm bảo độ tin cậy, các mô-đun được khởi động lại và phân phối trên các nút dựa trên tài nguyên mới được phân bổ.
  • VPA và HPA chưa tương thích với nhau và không thể chạy trên cùng một nhóm. Nếu bạn đang sử dụng cả hai cơ chế chia tỷ lệ trong cùng một cụm, hãy đảm bảo rằng cài đặt của bạn ngăn không cho chúng được kích hoạt trên cùng một đối tượng.
  • VPA điều chỉnh các yêu cầu về vùng chứa tài nguyên chỉ dựa trên mức sử dụng trong quá khứ và hiện tại. Nó không đặt giới hạn sử dụng tài nguyên. Có thể xảy ra sự cố với các ứng dụng không hoạt động chính xác và bắt đầu chiếm dụng ngày càng nhiều tài nguyên, điều này sẽ dẫn đến việc Kubernetes tắt nhóm này.
  • VPA vẫn đang ở giai đoạn phát triển ban đầu. Hãy chuẩn bị tinh thần rằng hệ thống có thể trải qua một số thay đổi trong tương lai gần. Bạn có thể đọc về những hạn chế đã biết и phát triển kế hoạch. Do đó, có các kế hoạch triển khai hoạt động chung của VPA và HPA, cũng như triển khai các mô-đun cùng với chính sách tự động điều chỉnh theo chiều dọc cho chúng (ví dụ: nhãn đặc biệt 'yêu cầu VPA').

Tự động điều chỉnh quy mô cụm Kubernetes

Bộ chia tỷ lệ tự động theo cụm (CA) thay đổi số lượng nút dựa trên số lượng nhóm đang chờ. Hệ thống kiểm tra định kỳ các mô-đun đang chờ xử lý - và tăng kích thước cụm nếu cần thêm tài nguyên và nếu cụm không vượt quá giới hạn đã thiết lập. CA liên lạc với nhà cung cấp dịch vụ đám mây, yêu cầu các nút bổ sung từ nhà cung cấp đó hoặc giải phóng các nút không hoạt động. Phiên bản CA có sẵn đầu tiên được giới thiệu trong Kubernetes 1.8.

Sơ đồ hoạt động SA cấp cao:

  1. CA kiểm tra các mô-đun đang chờ xử lý trong khoảng thời gian mặc định là 10 giây.
  2. Nếu một hoặc nhiều nhóm ở trạng thái chờ vì cụm không có đủ tài nguyên sẵn có để phân bổ chúng, thì cụm đó sẽ cố gắng cung cấp một hoặc nhiều nút bổ sung.
  3. Khi nhà cung cấp dịch vụ đám mây phân bổ nút được yêu cầu, nó sẽ tham gia vào cụm và sẵn sàng phục vụ các nhóm.
  4. Bộ lập lịch Kubernetes phân phối các nhóm đang chờ xử lý cho nút mới. Nếu sau đó một số mô-đun vẫn ở trạng thái chờ, quá trình này sẽ được lặp lại và các nút mới sẽ được thêm vào cụm.

Ba cấp độ tự động hóa quy mô trong Kubernetes: Cách sử dụng chúng hiệu quả
Tự động cung cấp các nút cụm trên đám mây

Hãy cân nhắc những điều sau khi sử dụng CA:

  • CA đảm bảo rằng tất cả các nhóm trong cụm đều có chỗ để chạy, bất kể tải CPU. Nó cũng cố gắng đảm bảo rằng không có nút nào không cần thiết trong cụm.
  • CA đăng ký nhu cầu mở rộng quy mô sau khoảng 30 giây.
  • Khi một nút không còn cần thiết nữa, CA sẽ mặc định đợi 10 phút trước khi mở rộng quy mô hệ thống.
  • Hệ thống tự động tính toán có khái niệm về bộ mở rộng. Đây là các chiến lược khác nhau để chọn một nhóm nút mà các nút mới sẽ được thêm vào.
  • Sử dụng tùy chọn có trách nhiệm cluster-autoscaler.kubernetes.io/safe-to-evict (đúng). Nếu bạn cài đặt nhiều nhóm hoặc nếu nhiều nhóm nằm rải rác trên tất cả các nút, thì phần lớn bạn sẽ mất khả năng mở rộng quy mô cụm.
  • Sử dụng PodGián đoạnNgân sáchđể ngăn các nhóm bị xóa, điều này có thể khiến các phần trong ứng dụng của bạn bị hỏng hoàn toàn.

Cách các bộ chia tỷ lệ tự động Kubernetes tương tác với nhau

Để có sự hài hòa hoàn hảo, nên áp dụng tính năng tự động điều chỉnh quy mô ở cả cấp độ nhóm (HPA/VPA) và cấp độ cụm. Chúng tương tác với nhau tương đối đơn giản:

  1. HPA hoặc VPA cập nhật bản sao nhóm hoặc tài nguyên được phân bổ cho các nhóm hiện có.
  2. Nếu không có đủ nút để mở rộng quy mô theo kế hoạch, CA sẽ thông báo sự hiện diện của các nhóm ở trạng thái chờ.
  3. CA phân bổ các nút mới.
  4. Các mô-đun được phân phối đến các nút mới.

Ba cấp độ tự động hóa quy mô trong Kubernetes: Cách sử dụng chúng hiệu quả
Hệ thống mở rộng quy mô Kubernetes hợp tác

Các lỗi thường gặp trong tự động điều chỉnh quy mô Kubernetes

Có một số vấn đề phổ biến mà các nhà phát triển gặp phải khi cố gắng triển khai tính năng tự động điều chỉnh quy mô.

HPA và VPA phụ thuộc vào số liệu và một số dữ liệu lịch sử. Nếu phân bổ không đủ tài nguyên, các mô-đun sẽ bị giảm thiểu và không thể tạo số liệu. Trong trường hợp này, việc tự động tính toán sẽ không bao giờ xảy ra.

Bản thân hoạt động mở rộng quy mô rất nhạy cảm với thời gian. Chúng tôi muốn các mô-đun và cụm mở rộng quy mô nhanh chóng - trước khi người dùng nhận thấy bất kỳ sự cố hoặc lỗi nào. Do đó, cần tính đến thời gian trung bình để chia tỷ lệ nhóm và cụm.

Kịch bản lý tưởng - 4 phút:

  1. 30 giây. Cập nhật số liệu mục tiêu: 30−60 giây.
  2. 30 giây. HPA kiểm tra giá trị số liệu: 30 giây.
  3. Chưa đầy 2 giây. Các nhóm được tạo và chuyển sang trạng thái chờ: 1 giây.
  4. Chưa đầy 2 giây. CA nhìn thấy các mô-đun đang chờ và gửi cuộc gọi đến các nút cung cấp: 1 giây.
  5. 3 phút. Nhà cung cấp đám mây phân bổ các nút. K8 đợi cho đến khi sẵn sàng: tối đa 10 phút (tùy thuộc vào một số yếu tố).

Trường hợp xấu nhất (thực tế hơn) - 12 phút:

  1. 30 giây. Cập nhật chỉ số mục tiêu.
  2. 30 giây. HPA kiểm tra các giá trị số liệu.
  3. Chưa đầy 2 giây. Các nhóm được tạo và chuyển sang trạng thái chờ.
  4. Chưa đầy 2 giây. CA nhìn thấy các mô-đun đang chờ và thực hiện cuộc gọi để cung cấp các nút.
  5. 10 phút. Nhà cung cấp đám mây phân bổ các nút. K8 đợi cho đến khi sẵn sàng. Thời gian chờ đợi phụ thuộc vào một số yếu tố, chẳng hạn như độ trễ của nhà cung cấp, độ trễ của hệ điều hành và các công cụ hỗ trợ.

Đừng nhầm lẫn cơ chế mở rộng quy mô của nhà cung cấp đám mây với CA của chúng tôi. Cái sau chạy bên trong cụm Kubernetes, trong khi công cụ cung cấp đám mây hoạt động trên cơ sở phân phối nút. Nó không biết chuyện gì đang xảy ra với nhóm hoặc ứng dụng của bạn. Các hệ thống này hoạt động song song.

Cách quản lý mở rộng quy mô trong Kubernetes

  1. Kubernetes là một công cụ điều phối và quản lý tài nguyên. Các hoạt động quản lý nhóm và tài nguyên cụm là một cột mốc quan trọng trong việc thành thạo Kubernetes.
  2. Hiểu logic của khả năng mở rộng nhóm có tính đến HPA và VPA.
  3. CA chỉ nên được sử dụng nếu bạn hiểu rõ về nhu cầu của nhóm và thùng chứa của mình.
  4. Để cấu hình một cụm một cách tối ưu, bạn cần hiểu cách các hệ thống mở rộng quy mô khác nhau hoạt động cùng nhau như thế nào.
  5. Khi ước tính thời gian mở rộng quy mô, hãy ghi nhớ các tình huống xấu nhất và tốt nhất.

Nguồn: www.habr.com

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