Service trong Kubernetes

  • Tuesday 06/02/2024

Trong Kubernetes (K8s), Service là một khái niệm quan trọng đóng vai trò là một lớp trừu tượng cho phép bạn truy cập các Pod (đơn vị triển khai ứng dụng) trong cụm Kubernetes. Nó cung cấp một điểm truy cập duy nhất cho các Pod, giúp bạn dễ dàng quản lý và cân bằng tải lưu lượng truy cập giữa các Pod.

Trong Kubernetes, có 4 loại Service chính:

1. ClusterIP Service: Đây là loại Service mặc định trong K8s. Nó chỉ có thể truy cập được từ bên trong cụm Kubernetes. ClusterIP Service có một địa chỉ IP ảo (clusterIP) được sử dụng để truy cập các Pod thuộc Service.

2. NodePort Service: Loại Service này có thể truy cập được từ bên ngoài cụm Kubernetes thông qua một cổng cụ thể trên mỗi Node. NodePort Service có một địa chỉ IP ảo (clusterIP) và một cổng (nodePort) được sử dụng để truy cập các Pod thuộc Service.

3. LoadBalancer Service: Loại Service này cung cấp khả năng cân bằng tải và khả năng truy cập từ bên ngoài cụm Kubernetes thông qua một địa chỉ IP public. LoadBalancer Service sử dụng một bộ cân bằng tải (load balancer) để phân phối lưu lượng truy cập đến các Pod thuộc Service.

4. ExternalName Service: Loại Service này cho phép bạn ánh xạ một tên miền (FQDN) bên ngoài với một Service. ExternalName Service không sử dụng Pod nào. Thay vào đó, nó sử dụng tên miền (FQDN) để truy cập trực tiếp vào một dịch vụ bên ngoài cụm Kubernetes.

1. Cluster IP

Cluster IP là một loại Service trong Kubernetes (K8s) chỉ có thể truy cập được từ bên trong cụm Kubernetes. Nó là loại Service mặc định trong K8s.

Kubernetes

Đặc điểm:

  • Khả năng truy cập: Cluster IP chỉ có thể truy cập được từ bên trong cụm Kubernetes. Điều này có nghĩa là các Pod trong cùng cụm có thể truy cập lẫn nhau thông qua Cluster IP, nhưng các client bên ngoài cụm không thể truy cập trực tiếp vào Cluster IP.
  • Cân bằng tải: Cluster IP có khả năng cân bằng tải lưu lượng truy cập giữa các Pod thuộc Service. Điều này đảm bảo rằng không có Pod nào bị quá tải.
  • Địa chỉ IP: Cluster IP có một địa chỉ IP ảo được sử dụng để truy cập các Pod thuộc Service. Địa chỉ IP này được cấp bởi Kubernetes và không thể thay đổi thủ công.

Lợi ích:

  • Bảo mật: Cluster IP cung cấp mức độ bảo mật cao hơn so với các loại Service khác vì nó không thể truy cập được từ bên ngoài cụm Kubernetes.
  • Đơn giản: Cluster IP là loại Service đơn giản nhất để sử dụng và cấu hình.

Hạn chế:

  • Khả năng truy cập: Cluster IP không thể truy cập được từ bên ngoài cụm Kubernetes.

2. Node port

NodePort là một loại Service trong Kubernetes (K8s) cho phép bạn truy cập các Pod từ bên ngoài cụm Kubernetes thông qua một cổng cụ thể trên mỗi Node.

Kubernetes

Đặc điểm:

  • Khả năng truy cập: NodePort có thể truy cập được từ bên trong và bên ngoài cụm Kubernetes.
  • Cân bằng tải: NodePort có khả năng cân bằng tải lưu lượng truy cập giữa các Pod thuộc Service.
  • Cổng: NodePort có một cổng (nodePort) được sử dụng để truy cập các Pod thuộc Service. Cổng này được chọn ngẫu nhiên trong phạm vi 30000-32767.
  • Địa chỉ IP: NodePort sử dụng địa chỉ IP của Node để truy cập các Pod thuộc Service.

Lợi ích:

  • Dễ sử dụng: NodePort là loại Service dễ sử dụng và cấu hình.
  • Khả năng truy cập: NodePort cho phép bạn truy cập các Pod từ bên ngoài cụm Kubernetes.

Hạn chế:

  • Bảo mật: NodePort không an toàn như Cluster IP vì nó có thể truy cập được từ bên ngoài cụm Kubernetes.
  • Phạm vi cổng: Phạm vi cổng NodePort (30000-32767) có thể bị giới hạn.

3. Load balancer

LoadBalancer là một loại Service trong Kubernetes (K8s) cung cấp khả năng cân bằng tải và khả năng truy cập từ bên ngoài cụm Kubernetes thông qua một địa chỉ IP public.

lb

Đặc điểm:

  • Khả năng truy cập: LoadBalancer có thể truy cập được từ bên trong và bên ngoài cụm Kubernetes.
  • Cân bằng tải: LoadBalancer có khả năng cân bằng tải lưu lượng truy cập giữa các Pod thuộc Service.
  • Địa chỉ IP: LoadBalancer sử dụng một địa chỉ IP public được cung cấp bởi nhà cung cấp dịch vụ cloud (cloud provider) để truy cập các Pod thuộc Service.

Lợi ích:

  • Khả năng mở rộng: LoadBalancer có thể mở rộng để đáp ứng nhu cầu lưu lượng truy cập cao.
  • Khả năng chịu lỗi: LoadBalancer có khả năng chịu lỗi cao vì nó có thể tự động chuyển hướng lưu lượng truy cập đến các Pod khỏe mạnh.
  • Dễ sử dụng: LoadBalancer dễ sử dụng và cấu hình.

Hạn chế:

  • Chi phí: LoadBalancer có thể tốn kém hơn các loại Service khác.
  • Phụ thuộc vào nhà cung cấp dịch vụ cloud: LoadBalancer phụ thuộc vào nhà cung cấp dịch vụ cloud để cung cấp địa chỉ IP public.

4. ExternalName 

ExternalName là một loại Service trong Kubernetes (K8s) cho phép bạn ánh xạ một tên miền (FQDN) bên ngoài với một Service. ExternalName Service không sử dụng Pod nào. Thay vào đó, nó sử dụng tên miền (FQDN) để truy cập trực tiếp vào một dịch vụ bên ngoài cụm Kubernetes.

Đặc điểm:

  • Khả năng truy cập: ExternalName có thể truy cập được từ bên ngoài cụm Kubernetes.
  • Cân bằng tải: ExternalName không có khả năng cân bằng tải.
  • Địa chỉ IP: ExternalName không sử dụng địa chỉ IP. Thay vào đó, nó sử dụng tên miền (FQDN).

Lợi ích:

  • Dễ sử dụng: ExternalName dễ sử dụng và cấu hình.
  • Khả năng truy cập: ExternalName cho phép bạn truy cập các dịch vụ bên ngoài cụm Kubernetes.

Hạn chế:

  • Phụ thuộc vào dịch vụ bên ngoài: ExternalName phụ thuộc vào dịch vụ bên ngoài để hoạt động.
  • Khả năng kiểm soát: Bạn không có quyền kiểm soát dịch vụ bên ngoài.

Bảng so sánh các loại Service:

Loại Service Khả năng truy cập Cân bằng tải Địa chỉ IP
ClusterIP Bên trong cụm ClusterIP
NodePort Bên trong và bên ngoài cụm ClusterIP và NodePort
LoadBalancer Bên ngoài cụm Địa chỉ IP public
ExternalName Bên ngoài cụm Không Tên miền (FQDN)

Lựa chọn loại Service phù hợp:

Loại Service phù hợp cho bạn phụ thuộc vào nhu cầu cụ thể của bạn. Dưới đây là một số hướng dẫn để lựa chọn loại Service:

  • ClusterIP Service: Sử dụng loại Service này cho các dịch vụ chỉ cần truy cập được từ bên trong cụm Kubernetes.
  • NodePort Service: Sử dụng loại Service này cho các dịch vụ cần truy cập được từ bên ngoài cụm Kubernetes nhưng không cần khả năng cân bằng tải.
  • LoadBalancer Service: Sử dụng loại Service này cho các dịch vụ cần truy cập được từ bên ngoài cụm Kubernetes và cần khả năng cân bằng tải.
  • ExternalName Service: Sử dụng loại Service này cho các dịch vụ bên ngoài cụm Kubernetes mà bạn muốn ánh xạ với một tên miền (FQDN).

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng
Cloud Server
Cloud Server Pro
Máy Chủ Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Rate this post