5

Tôi có một dịch vụ Kubernetes trên GKE như sau:Tại sao tôi không thể truy cập dịch vụ Kubernetes qua IP của mình?

$ kubectl describe service staging 
Name:   staging 
Namespace:  default 
Labels:   <none> 
Selector:  app=jupiter 
Type:   NodePort 
IP:    10.11.246.27 
Port:   <unnamed> 80/TCP 
NodePort:  <unnamed> 31683/TCP 
Endpoints:  10.8.0.33:1337 
Session Affinity: None 
No events. 

tôi có thể truy cập vào dịch vụ từ một máy ảo trực tiếp thông qua một thiết bị đầu cuối của nó (10.8.0.21:1337) hoặc thông qua cổng nút (10.240.251.174:31683 trong trường hợp của tôi). Tuy nhiên, nếu tôi cố gắng truy cập 10.11.246.27:80, tôi sẽ không nhận được gì. Tôi cũng đã thử các cổng 1337 và 31683.

Tại sao tôi không thể truy cập dịch vụ qua IP của mình? Tôi có cần quy tắc tường lửa hay gì đó không?

Trả lời

9

IP dịch vụ là IP ảo được quản lý bởi kube-proxy. Vì vậy, để cho IP đó có ý nghĩa, khách hàng cũng phải là một phần của mạng "phủ" kube-proxy (có kube-proxy đang chạy, chỉ vào cùng một apiserver).

IP vùng trên GCE/GKE được quản lý bởi GCE Routes, giống như "lớp lót" của tất cả các máy ảo trong mạng.

Có một số cách để truy cập các dịch vụ ngoài công lập từ bên ngoài cụm. Here chúng chi tiết hơn, nhưng trong ngắn hạn:

  1. Tạo một tuyến đường GCE cho các dịch vụ cụm của bạn.
  2. Cài đặt kube-proxy của cụm của bạn ở bất cứ nơi nào bạn muốn truy cập các dịch vụ của cụm.
Các vấn đề liên quan