Kubernetes hỗ trợ công cụ khám phá dịch vụ bằng DNS, cho phép phân giải tên của dịch vụ sang địa chỉ Cluster IP, từ đó giúp tất cả các container trên các máy trong cluster có thể giao tiếp với nhau thông qua tên dịch vụ. Dịch vụ ngồi ra cịn đóng vai trị như load-balancing trong nội bộ kubernetes.
Kubernetes không cung cấp giải pháp để đảm bảo thơng tin kết nối mạng giữa
các máy mà địi hỏi người dùng sử dụng dịch vụ ngoài như: Flannel, CNI, ... Dựa vào đó, Kubernetes sinh ra các Cluster IP ảo để đại diện cho dịch vụ và các Pod.
3.2.5.1 So sánh và lựa chọn nền tảng
Ba nền tảng điều phối đều cung cấp các chức năng cơ bản nhất để quản lý
container, tuy nhiên độ phức tạp trong sử dụng, số lượng máy có thể quản lý và khả
năng tùy biến của các nền tảng hồn tồn khác nhau:
• Docker Swarm: dễ sử dụng và cài đặt do được cung cấp bởi Docker, tuy nhiên
khả năng tùy biến thấp. Quản lý số lượng máy nhỏ tốt (dưới 10), tuy nhiên hiệu năng giảm đáng kể khi số lượng máy tăng lên (dưới 100). Chưa có số liệu thống kê về sử dụng Docker swarm để quản lý tới 1000 máy. Docker swarm phù hợp với các tổ chức có quy mơ nhỏ.
Nền tảng < 10 máy 10 - 100 máy 100 – 1000 máy > 1000 máy Khả năng tùy biến Tính dễ sử dụng Docker swarm ++ + ? ? + +++ Mesphere Marathon + ++ ++ ++ ++ + Kubernetes ++ ++ + ? ++ ++
Bảng 3-1: So sánh Docker Swarm, Mesosphere Marathon và Kubernetes
• Mesosphere Marathon: Sử dụng Mesos để quản lý số lượng máy nhỏ là không
hiệu quả (dưới 10), do được thiết kế để hỗ trợ tối đa sự dư thừa cho các hệ
thống lớn. Mesos cho phép cấu hình linh hoạt và có thể quản lý tới hơn 1000 máy mà vẫn đảm bảo hiệu năng. Tuy nhiên, cấu hình Mesos quá phức tạp, đòi hỏi nhiều kiến thức, do vậy chỉ phù hợp với các cơng ty quy mơ lớn.
• Kubernetes: Kubernetes là phiên bản trung hòa của hai nền tảng trên, cho phép
cấu hình linh hoạt, hoạt động tốt với cả số lượng máy nhỏ và vừa (từ 10 tới trên 100 máy). Cấu hình Kubernetes khơng q phức tạp, có nhiều tài liệu hỗ trợ và cộng đồng sử dụng mạnh, do vậy phù hợp với các tổ chức quy mô vừa và nhỏ. Ngồi ra, Kubernetes cịn hỗ trợ cơ chế rolling-update để cập nhật ứng dụng mà vẫn đảm bảo khơng có thời gian ngừng hoạt động.
Từ các đặc điểm trên, luận văn đề xuất sử dụng Kubernetes như nền tảng điều
phối container chính cho hệ thống triển khai liên tục.
3.2.6 Kênh thông báo
Kênh thông báo giúp tất cả các bên liên quan luôn cập nhật được trạng thái của một luồng triển khai liên tục và thường được tích hợp vào chính kênh giao tiếp hiện tại
của công ty như email, các phần mềm chat. Việc lựa chọn kênh thông báo nào tùy thuộc đặc điểm và nhu cầu của từng công ty.
Hiện nay phần mềm Slack đang được dùng trong nhiều công ty công nghệ do
tính tiện dụng của nó: tất cả giao tiếp của đội được tập trung vào một địa điểm, khả
năng tích hợp với các dịch vụ khác đang sử dụng, tìm kiếm nhanh từ một hộp tìm kiếm duy nhất, việc chia sẻ file dễ dàng, phù hợp với việc trích dẫn mã nguồn hay có thể
được truy cập bằng nhiều hình thức (web, phần mềm trên PC hay ứng dụng điện
thoại). Trong luận văn, phần mềm Slack được xem như kênh giao tiếp chính và sử
dụng cho mục đích thơng báo này.