0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Tại Sao Đội Ngũ Của Bạn Cần Sử Dụng Kubernetes?

Đăng vào 8 tháng trước

• 8 phút đọc

Tại Sao Đội Ngũ Của Bạn Cần Sử Dụng Kubernetes?

Khi tìm hiểu về Kubernetes, điều quan trọng là phải hiểu lý do tại sao các giải pháp như Kubernetes được phát triển và các vấn đề mà các đội ngũ hay nhà phát triển phải đối mặt. Một cách dễ hiểu để nhận ra điều này là thông qua một kịch bản quen thuộc.

Hiểu Về Khả Năng Mở Rộng Ứng Dụng

Hãy tưởng tượng một solo-prenuer (chúng ta gọi cô ấy là Janet Dough) sở hữu một trang web thương mại điện tử bán xe hơi. Thông thường, cô ấy chỉ nhận khoảng mười lượt truy cập thụ động mỗi ngày.
Trong một chiến dịch marketing, Janet quyết định tặng một chiếc xe sang nếu bạn mua hàng trong khoảng thời gian từ 12 giờ trưa đến 2 giờ chiều vào thứ Sáu.
Từ 10 lượt truy cập thụ động mỗi ngày, trang web dự kiến sẽ đón nhận một triệu lượt truy cập hoặc hơn trong khoảng thời gian tặng quà.
Với sự gia tăng đột ngột của những khách hàng tiềm năng và người chiến thắng, trang web có khả năng bị quá tải bởi lưu lượng truy cập, do đó trở nên chậm chạp, khó điều hướng hoặc thậm chí bị sập.
Janet đã gặp phải tình huống tương tự và chứng kiến vấn đề này xảy ra trực tiếp.
Kinh nghiệm của Janet không chỉ riêng cô ấy, mà còn rất nhiều doanh nghiệp hay đội ngũ khác cũng đối mặt với những thách thức tương tự. Đây là một ví dụ tuyệt vời về những gì xảy ra khi một ứng dụng được xây dựng cho lưu lượng truy cập tối thiểu, nhưng không được củng cố để mở rộng cho các khoảng thời gian cao điểm.

Khả Năng Mở Rộng Ứng Dụng Là Gì?

Khả năng mở rộng của một ứng dụng đề cập đến khả năng mở rộng của nó. Cụ thể là khả năng mở rộng hoặc thu hẹp theo thời gian và quản lý hiệu quả một số lượng yêu cầu ngày càng tăng mỗi phút (RPM).
Đối với trang web của Janet, nó ban đầu được thiết kế để xử lý lưu lượng tối thiểu và không có kế hoạch thích hợp nào được thực hiện để xử lý lưu lượng truy cập khổng lồ như vậy.

Các Loại Khả Năng Mở Rộng Ứng Dụng

Trong thiết kế hệ thống, khả năng mở rộng là một khía cạnh quan trọng trong việc xử lý các tải trọng hệ thống khác nhau một cách hiệu quả.

Mở Rộng Thủ Công

Mở rộng thủ công là quá trình mà một đội ngũ hoặc cá nhân điều chỉnh thủ công các tài nguyên (như CPU, bộ nhớ hoặc lưu trữ) được phân bổ cho một ứng dụng hoặc hệ thống để xử lý các tải trọng thay đổi khác nhau.
Một hệ thống có thể được mở rộng thủ công theo hai cách:

  • Mở rộng dọc (Vertical Scaling): mở rộng hoặc tăng cường khả năng của một máy chủ hoặc nút duy nhất bằng cách đầu tư thêm tài nguyên. Mở rộng dọc tương đối đơn giản nhưng có giới hạn do sự hạn chế về sức tải tối đa mà một máy chủ duy nhất có thể quản lý.
  • Mở rộng ngang (Horizontal Scaling): khác với mở rộng dọc, đây là quá trình thêm nhiều máy/máy chủ chạy ứng dụng song song. Mặc dù điều này giải quyết một số vấn đề mà mở rộng dọc gặp phải, nhưng vẫn cần phải chi thêm tiền và yêu cầu nỗ lực thủ công để thực hiện.

Mở Rộng Tự Động

Mở rộng tự động là một quy trình tự động điều chỉnh các tài nguyên máy tính được phân bổ cho một ứng dụng dựa trên nhu cầu theo thời gian thực. Trong các môi trường đám mây, tính năng này cho phép hệ thống mở rộng lên (thêm tài nguyên) hoặc mở rộng xuống (giảm tài nguyên) khi khối lượng công việc tăng hoặc giảm, đảm bảo hiệu suất tối ưu và tiết kiệm chi phí mà không cần can thiệp thủ công.
Trong những năm gần đây, các đội ngũ và kỹ sư hệ thống đã chuyển sang mở rộng tự động để xử lý tốt hơn những lượt truy cập tăng lên và nhu cầu cho một dự án hoặc hệ thống.

Đối với Janet Dough, sau khi xem xét mở rộng thủ công và mở rộng tự động, cô quyết định chọn triển khai mở rộng tự động: Kubernetes.

Kubernetes Là Gì?

Kubernetes, còn được gọi là K8s, là một hệ thống mã nguồn mở để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng chứa trong container.
Bạn không thể hiểu rõ bản chất của Kubernetes nếu không hiểu về containers.

Containers Là Gì?

Containers là các thành phần ứng dụng nhẹ, có thể thực thi, kết hợp mã nguồn với tất cả các thư viện hệ điều hành (OS) và các phụ thuộc cần thiết để chạy mã trong bất kỳ môi trường nào.
Docker là công cụ phổ biến nhất để tạo và chạy các containers Linux.

6 Cách Kubernetes Cải Thiện Hiệu Suất Phát Triển

Kubernetes lên lịch và tự động hóa các tác vụ liên quan đến container trong suốt vòng đời của ứng dụng, bao gồm các tác vụ sau:

Triển Khai

Triển khai một số lượng container nhất định đến một máy chủ cụ thể và giữ chúng hoạt động trong trạng thái mong muốn.

Cập Nhật

Cập nhật là một thay đổi đối với một triển khai. Kubernetes cho phép bạn khởi động, tạm dừng, tiếp tục hoặc quay lại các cập nhật.

Phát Hiện Dịch Vụ

Kubernetes có thể tự động tiết lộ một container ra internet hoặc cho các container khác bằng cách sử dụng tên miền (DNS) hoặc địa chỉ IP.

Cung Cấp Lưu Trữ

Thiết lập Kubernetes để gắn kết lưu trữ cục bộ hoặc đám mây bền vững cho các container của bạn khi cần.

Cân Bằng Tải

Dựa trên mức sử dụng CPU hoặc các chỉ số tùy chỉnh, Kubernetes cân bằng tải phân phối khối lượng công việc trên một mạng để duy trì hiệu suất và tính ổn định.

Mở Rộng Tự Động

Khi lưu lượng truy cập tăng cao, Kubernetes có thể khởi động các cụm mới khi cần thiết để xử lý khối lượng công việc bổ sung và giải phóng các cụm đã thêm khi không còn sử dụng.

Tự Khôi Phục Để Đảm Bảo Tính Sẵn Có

Khi một container gặp sự cố, Kubernetes có thể tự động khởi động lại hoặc thay thế nó để ngăn ngừa thời gian chết. Nó cũng có thể tắt các container không đáp ứng yêu cầu kiểm tra sức khỏe của bạn.

Tại Sao Chọn Kubernetes?

Xem xét thời gian và nỗ lực cần thiết để mở rộng thủ công một hệ thống, sự xuất hiện và kết hợp của Kubernetes và containerization là một làn gió mới. Nó loại bỏ những tác vụ nhàm chán và lặp đi lặp lại khỏi tay nhà phát triển và đưa chúng vào một cấu trúc hoạt động và thực hiện những công việc nặng nhọc cho bạn.
Ví dụ, việc chạy một tập lệnh đơn giản như sau sẽ tạo ra ba bản sao trên các máy chủ khác nhau để đảm bảo tính khả dụng và hiệu quả.

yaml Copy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: Janet-Dough
spec:
  replicas: 3
  selector:
    matchLabels:
      app: Janet-Dough
  template:
    metadata:
      labels:
        app: Janet-dough
    spec:
      containers:
      - name: Janet-Dough-container
        image: janet-Dough:latest
        ports:
        - containerPort: 8080

Hạn Chế Có Thể Của Kubernetes

Mặc dù việc tự lưu trữ một cụm Kubernetes trong một môi trường đám mây là khả thi, nhưng việc thiết lập và quản lý có thể trở nên phức tạp đối với một tổ chức doanh nghiệp.
Tuy nhiên, với các dịch vụ Kubernetes được quản lý, nhà cung cấp thường quản lý các thành phần của hệ thống điều khiển Kubernetes. Nhà cung cấp dịch vụ quản lý giúp tự động hóa các quy trình thường xuyên cho các bản cập nhật, cân bằng tải, mở rộng và giám sát. Ví dụ, Red Hat OpenShift là một dịch vụ Kubernetes có thể được triển khai trong bất kỳ môi trường nào và trên tất cả các đám mây công cộng lớn, bao gồm Amazon Web Services (AWS), v.v.
Hơn nữa, mặc dù Kubernetes là công nghệ được ưa chuộng để tổ chức các ứng dụng đám mây dựa trên container, nó phụ thuộc vào các thành phần khác, từ mạng, ingress, cân bằng tải, lưu trữ, tích hợp liên tục và phân phối liên tục (CI/CD) và hơn thế nữa, để hoạt động hoàn chỉnh.
Điều này có nghĩa là cá nhân hoặc quản trị viên xử lý điều này cần có kiến thức về các giao thức này.

Kết Luận

Xem xét tất cả những điều này, Janet Dough quyết định rằng cô không thể tự tay xử lý việc mở rộng trang web của mình, với thời gian cô dành cho những việc khác.
Khi chọn Kubernetes là giải pháp tốt nhất, Janet Dough đã có thể xử lý hiệu quả lượng lớn khách truy cập mà trang web của cô nhận được mà không gặp phải tình trạng sập hoặc thời gian chết của hệ thống.
Kubernetes cũng cung cấp một bộ công cụ và tính năng khác nhau, bao gồm ghi lại và giám sát, tùy thuộc vào nhu cầu cụ thể của bạn.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào