cloudFun
Mặc dù Kubernetes mở rộng giải pháp future-proof container để cải thiện năng suất, nhưng các trường hợp sử dụng cũng chỉ ra rằng việc chỉ dựa vào các dịch vụ Kubernetes có sẵn để chứa các bản dựng ứng dụng có thể không phải lúc nào cũng là cách tiếp cận tốt nhất. Để tận dụng tối đa K8s, hãy thực hiện các phương pháp hay nhất và tuân theo mô hình được định cấu hình tùy chỉnh để đảm bảo nền tảng tối ưu mà ứng dụng của người dùng yêu cầu. Bài viết này sẽ đi sâu vào 11 phương pháp hay nhất để nhận ra mô hình cluster Kubernetes có khả năng mở rộng, bảo mật và tối ưu hóa cao.
Với các bản cập nhật phiên bản thường xuyên, Kubernetes phá thành các tính năng mới, sửa lỗi và nâng cấp nền tảng. Theo nguyên tắc chung, người dùng phải luôn sử dụng phiên bản Kubernetes mới nhất trên cluster của mình. Điều này đảm bảo rằng phiên bản của người dùng có:
- Tất cả các tínhnăng được cập nhật, vì vậy người dùng không bỏ lỡ hỗ trợ từcác phiên bản cũ hơn, không được hỗ trợ.
- Cập nhật các bản vá bảo mật giúp trì hoãn các vectơ tấn công tiềm ẩn trong khi sửa các lỗ hổng được báo cáo .
2. Sử dụng
Việc áp dụng Kubernetes trong các doanh nghiệp lớn hơn với nhiềunhóm truy cập vào cùng một cluster yêu cầu một cách tiếp cận tùy chỉnh để sử dụng tài nguyên. Việc cung cấp khả năng truy cập không đúng thường dẫn đến xung đột giữa cácnhóm trong việc sử dụng tài nguyên.
Để giải quyết vấn đề này, hãy sử dụng namespace để đạt được sự cô lập ở cấp độ nhóm cho các nhóm đang cố gắng truy cập đồng thời vào cùng một tài nguyên cluster. Sử dụng hiệu quả Namespace giúp tạo nhiều phân vùng cluster hợp lý, do đó phân bổ tài nguyên ảo riêng biệt giữa các nhóm.
3. Duy trì container image nhỏ
Hầu hết các nhà phát triển mắc sai lầm khi sử dụng base image quá thừa thãi, có thể có tới 80% gói và thư viện mà họ không cần.
Luôn sử dụng container image nhỏ hơn vì nó giúp tạo các bản dựng nhanh hơn. Cách tốt nhất, người dùng nên:
- Tìm kiếm Image Alpine, vì chúng nhỏ hơn 10 lần so với base image
- Thêm các thư viện và gói cần thiết theo yêu cầu cho ứng dụng của người dùng.
4. Đặt yêu cầu và giới hạn tài nguyên
Để tránh trường hợp một nhómhoặc ứng dụng tiêu hết tài nguyên cluster, hãy đặt yêu cầu và giới hạn cho tài nguyên cluster, cụ thể là CPU và Bộ nhớ. Làm như vậy sẽ hạn chế việc sử dụng tài nguyên không cân đối của các ứng dụng và dịch vụ, do đó tránh thời gian ngừng hoạt động của dung lượng.
Để đặt các yêu cầu và giới hạn trên một container, người dùng có thể sử dụng thông số container sau làm tham chiếu:
5. Sử dụng readinessProbe & livenessProbe
Tận dụng Kubernetescheck probe để chủ động tránh các lỗi nhóm:
- Với readinessProbe cho ứng dụng sản xuất, Kubernetes kiểm tra xem ứng dụng đã sẵn sàng để bắt đầu phân phối lưu lượng hay chưa trước khi cho phép lưu lượng truy cập vào nhóm. Điều này về cơ bản cho biết liệu một nhóm có sẵn sàng chấp nhận lưu lượng truy cập và phản hồi các yêu cầu hay không.
- Thông qua livenessProbe , Kubernetes thực hiện kiểm tra tình trạng để đảm bảo ứng dụng đáp ứng và chạy như dự kiến. Trong trường hợp livenessProbe không thành công, chính sách mặc định kubelet sẽ khởi động lại container để sao lưu nó.
Kiểm soát truy cập dựa trên vai trò(RBAC) giúp quản lý các chính sách truy cập để xác định ai có thể làm những gì trên Kubernetescluster. Để đặt quyền RBAC trên tài nguyên Kubernetes, Kubernetes cung cấp các tham số sau:
- Vai trò đối với tài nguyên namespace
- ClusterRole cho tài nguyên không có container tên
Chúng tôi đặc biệt khuyên người dùng nên tận dụng các lợi ích từ cơ chế tự động phân tỷ lệ của Kubernetes để tự động mở rộng quy mô các dịch vụ cluster với mức tiêu thụ tài nguyên tăng đột biến.Với Trình tự động phân loại theo chiều ngang và Trình tự động điều chỉnh theo cluster , khối lượng nút và nhóm được điều chỉnh động trong thời gian thực, do đó duy trì tải ở mức tối ưu và tránh thời gian ngừng hoạt động.
8. Giám sát các plane component
Đừng mắc phải sai lầm phổ biến này: quên theo dõi bộ não của cluster Kubernetes — plane component. Plane component bao gồm:
- Dịch vụ API Kubernetes
- kubelet
- người điềukhiển-quản lý
- vvd
- kube-proxy
- kube-dns
9. Áp dụng quy trình làmviệc dựa trên Git
Sử dụng GitOps, quy trình làm việc dựa trên Git, làm mô hình ưa thích để sử dụng Git làm nguồn chân lý duy nhất cho tất cả tự động hóa, bao gồm cả CI / CD pipeline. Việc áp dụng GitOps framework giúp cải thiện năng suất bằng cách:
- Giảm thời gian triển khai
- Tăng cường khả năng theo dõi lỗi
- Tự động hóa quy trình làm việc CI / CD
10. Để ý mức sử dụng đĩa cao
Sử dụng disk cao là một vấn đề phổbiến ảnh hưởng đến hiệu suất của cluster. Như một thói quen thường xuyên, người dùng nên theo dõi:
- Hệ thống tệp gốc
- Tất cả các ổ đĩađược liên kết vớicluster
11. Thường xuyên kiểm tra nhật ký chính sách
Được đánh giá là phương pháp hay nhất, tất cả nhật ký được lưu trữ tại /var/log/audit.log phải được kiểm tra thường xuyên để:
- Xác định các mối đe dọa
- Giám sát mức tiêu thụ tài nguyên
- Ghi lại nhịp tim sự kiện chính của cluster Kubernetes
Cách tiếp cận tùy chỉnh cho K8s
Nếu người dùng đã sử dụng Kubernetes hoặc chuẩn bị sản xuất, một cách tiếp cận tùy chỉnh để định cấu hình cluster của người dùng sẽ đi một chặng đường dài. Những phương pháp hay nhất này đã được đề xuất nhiều lần bởi các chuyên gia, những người đã trải qua quá trình học tập khó khăn.
Người dùng cũng có thể thường nhận ra một số thực tiễn có thể phù hợp với kiến trúc cluster của người dùng, vì mọi bản dựng ứng dụng sẽ yêu cầu một cách tiếp cận hoàn toàn khác để tinh chỉnh hiệu quả. Chìa khóa thành công sẽ dựa vào việc tối ưu hóa containerized framework chứa đựng của người dùng như thế nào.
Nguồn: https://www.bmc.com/blogs/kubernetes-best-practices/