Công nghệ container đã gây bão trên thế giới về cơ sở hạ tầng. Lý tưởng cho các kiến trúc và môi trường vi dịch vụ có quy mô nhanh chóng hoặc phát hành thường xuyên, các vùng chứa đã có mức sử dụng tăng nhanh trong những năm gần đây. Tuy nhiên, việc áp dụng Docker, containerd hoặc các thời gian chạy container khác gây ra sự phức tạp đáng kể về mặt điều phối. Đó là lúc Kubernetes phát huy tác dụng.
Kubernetes
Kubernetes , thường được viết tắt là “K8s”, tự động hóa việc lập kế hoạch, mở rộng quy mô và bảo trì các container trong bất kỳ môi trường cơ sở hạ tầng nào. Nguồn mở đầu tiên được Google cung cấp vào năm 2014, Kubernetes hiện là một phần của Cloud Native Computing Foundation .
Giống như người nhạc trưởng chỉ đạo một dàn nhạc, thông báo cho các nhạc sĩ khi nào nên bắt đầu chơi, khi nào nên dừng và khi nào chơi nhanh hơn, chậm hơn, yên tĩnh hơn hoặc to hơn, Kubernetes quản lý các vùng chứa của bạn—bắt đầu, dừng, tạo và hủy chúng một cách tự động để phản ánh những thay đổi về nhu cầu hoặc sự sẵn có của nguồn lực. Kubernetes tự động hóa cơ sở hạ tầng container của bạn thông qua:
- Lập lịch vùng chứa và tự động mở rộng quy mô
- Kiểm tra và phục hồi sức khỏe
- Sao chép để song song hóa và tính sẵn sàng cao
- Quản lý mạng nội bộ để đặt tên, khám phá và cân bằng tải dịch vụ
- Phân bổ và quản lý nguồn lực
Kubernetes có thể sắp xếp các container của bạn ở bất cứ nơi nào chúng chạy, điều này tạo điều kiện thuận lợi cho việc triển khai và di chuyển trên nhiều đám mây giữa các nền tảng cơ sở hạ tầng. Có rất nhiều loại Kubernetes được lưu trữ và tự quản lý, từ các nền tảng được tối ưu hóa cho doanh nghiệp như OpenShift và Pivotal Container Service đến các dịch vụ đám mây như Google Kubernetes Engine , Amazon Elastic Kubernetes Service , Azure Kubernetes Service và Oracle’s Container Engine for Kubernetes .
Kể từ khi được giới thiệu vào năm 2014, Kubernetes đã dần dần trở nên phổ biến trong nhiều ngành công nghiệp và trường hợp sử dụng. Nghiên cứu của Datadog cho thấy gần một nửa số tổ chức vận hành container đang sử dụng Kubernetes tính đến tháng 11 năm 2019.
Các thành phần chính của kiến trúc Kubernetes
Hộp đựng
Ở mức thấp nhất, khối lượng công việc Kubernetes chạy trong các vùng chứa , mặc dù một phần lợi ích của việc chạy cụm Kubernetes là nó giúp bạn không phải quản lý các vùng chứa riêng lẻ. Thay vào đó, người dùng Kubernetes sử dụng các khái niệm trừu tượng như nhóm , gói các thùng chứa lại với nhau thành các đơn vị có thể triển khai (và được mô tả chi tiết hơn bên dưới).
Kubernetes ban đầu được xây dựng để sắp xếp các bộ chứa Docker, nhưng sau đó đã mở rộng hỗ trợ cho nhiều thời gian chạy bộ chứa khác nhau. Trong phiên bản 1.5, Kubernetes đã giới thiệu Giao diện thời gian chạy vùng chứa (CRI), một API cho phép người dùng áp dụng bất kỳ thời gian chạy vùng chứa nào triển khai CRI. Với hỗ trợ thời gian chạy có thể cắm thông qua CRI, giờ đây bạn có thể chọn giữa Docker, containerd, CRI-O và các thời gian chạy khác mà không cần hỗ trợ chuyên biệt cho từng công nghệ riêng lẻ.
Vỏ
Nhóm Kubernetes là các đơn vị có thể triển khai nhỏ nhất có thể được tạo, lên lịch và quản lý bằng Kubernetes. Chúng cung cấp một lớp trừu tượng cho các thành phần được chứa trong container để tạo điều kiện thuận lợi cho việc chia sẻ tài nguyên, liên lạc, triển khai và quản lý ứng dụng cũng như khám phá.
Mỗi nhóm chứa một hoặc nhiều vùng chứa mà khối lượng công việc của bạn đang chạy trên đó. Kubernetes sẽ luôn lên lịch cho các container trong cùng một nhóm, nhưng mỗi container có thể chạy một ứng dụng khác nhau. Các thùng chứa trong một nhóm nhất định chạy trên cùng một máy chủ và chia sẻ cùng một địa chỉ IP, không gian cổng, bối cảnh, không gian tên (xem bên dưới ) và thậm chí cả các tài nguyên như dung lượng lưu trữ.
Bạn có thể triển khai các nhóm riêng lẻ theo cách thủ công vào cụm Kubernetes, nhưng tài liệu chính thức của Kubernetes khuyến nghị người dùng nên quản lý các nhóm bằng bộ điều khiển , chẳng hạn như bộ triển khai hoặc bộ bản sao . Các đối tượng này, được đề cập bên dưới , cung cấp mức độ trừu tượng và tự động hóa cao hơn để quản lý việc triển khai, mở rộng quy mô và cập nhật nhóm.
Nút, cụm và không gian tên
Các nhóm chạy trên các nút , là các máy ảo hoặc vật lý, được nhóm thành các cụm . Mặt phẳng điều khiển chạy trên mỗi cụm bao gồm bốn dịch vụ chính để quản trị cụm:
- Máy chủ API hiển thị API Kubernetes để tương tác với cụm
- Trình quản lý bộ điều khiển theo dõi trạng thái hiện tại của cụm và cố gắng di chuyển nó về trạng thái mong muốn
- Bộ lập lịch phân công khối lượng công việc cho các nút
- etcd lưu trữ dữ liệu về cấu hình cụm, trạng thái cụm, v.v.
Để đảm bảo tính sẵn sàng cao, bạn có thể chạy nhiều nút mặt phẳng điều khiển và phân phối chúng trên các vùng khác nhau để tránh một điểm lỗi duy nhất cho cụm.
Tất cả các nút khác trong cụm đều là các nút công nhân, mỗi nút chạy một tác nhân được gọi là kubelet . Kubelet nhận được hướng dẫn từ máy chủ API về cách cấu tạo các nhóm riêng lẻ và đảm bảo rằng tất cả các vùng chứa trong mỗi nhóm đều chạy đúng cách.
Bạn có thể tạo nhiều cụm Kubernetes ảo, được gọi là không gian tên , trên cùng một cụm vật lý. Không gian tên cho phép quản trị viên cụm tạo nhiều môi trường (ví dụ: nhà phát triển và dàn dựng) trên cùng một cụm hoặc phân bổ tài nguyên cho các nhóm hoặc dự án khác nhau trong một cụm
Nội dung có sự tham khảo từ Bizfly Cloud và các nguồn khác.
Bizfly Cloud – Cung cấp dịch vụ điện toán đám mây tốt nhất tại Việt Nam
Vận hành bởi VCcorp
Địa chỉ: Số 1 Nguyễn Huy Tưởng, P. Thanh Xuân Trung, Q. Thanh Xuân, TP Hà Nội.
Tham khảo: https://bizflycloud.vn