2015-11-28 22 views
15

tôi chạy cụm CoreOS k8s trên Mac OSX, có nghĩa là nó đang chạy bên trong VirtualBox + VagrantLàm thế nào để lộ một dịch vụ Kubernetes bên ngoài sử dụng NodePort

tôi có trong tập tin service.yaml tôi:

spec: 
    type: NodePort 

khi tôi gõ:

kubectl get services 

tôi thấy:

NAME    CLUSTER_IP  EXTERNAL_IP PORT(S) SELECTOR         
kubernetes  10.100.0.1  <none>  443/TCP <none>        
my-frontend  10.100.250.90 nodes   8000/TCP name=my-app 

IP bên ngoài "nút" là gì? Làm cách nào để truy cập vào giao diện người dùng của tôi từ bên ngoài?

+1

Tôi không nghĩ câu trả lời được chọn phản ánh câu hỏi. Dưới đây là một câu trả lời bổ sung trả lời câu hỏi trên: https://stackoverflow.com/a/45805655/1663462 –

Trả lời

16

Ngoài "NodePort" loại hình dịch vụ có một số cách bổ sung để có thể tương tác với các dịch vụ kubernetes từ bên ngoài của cụm:

  • loại Sử dụng dịch vụ "loadbalancer". Nó chỉ hoạt động đối với một số nhà cung cấp đám mây và sẽ không hoạt động đối với VirtualBox, nhưng tôi nghĩ rằng nó sẽ là tốt để biết về tính năng đó. Link to the documentation
  • Sử dụng một trong các tính năng mới nhất được gọi là "nhập". Dưới đây là mô tả từ hướng dẫn sử dụng "An Ingress là một tập hợp các quy tắc cho phép các kết nối gửi đến các dịch vụ cụm. Nó có thể được định cấu hình để cung cấp dịch vụ url ngoài, lưu lượng truy cập cân bằng, chấm dứt SSL, tên dựa trên lưu trữ ảo ... ". Link to the documentation
  • Nếu kubernetes không yêu cầu nghiêm ngặt và bạn có thể chuyển sang nguồn mở mới nhất (là "kubernetes on steroid"), bạn có thể sử dụng tính năng gốc có tên là "router".
1

Đây là doc trên các địa chỉ nút: http://kubernetes.io/docs/admin/node/#addresses

Bạn có thể chỉ định số cổng của nodePort khi bạn chỉ định các dịch vụ. Nếu bạn không tự xác định một cổng, hệ thống sẽ phân bổ một cổng cho bạn. Bạn có thể kubectl get services -o yaml và tìm ra cảng tại spec.ports [*] nodePort, như đề xuất trong doc ở đây:. https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/services.md#type-nodeport

Và bạn có thể truy cập vào front-end của mình tại {địa chỉ bên ngoài nút}: {} nodePort

Hy vọng điều này sẽ hữu ích.

3

Cách dễ nhất để nhận cổng máy chủ là kubectl describe services my-frontend. Cổng nút sẽ được hiển thị.

Ngoài ra bạn có thể kiểm tra api:

  • api/v1/namespaces/{namespace_name}/services/{service_name}

hoặc liệt kê tất cả:

  • api/v1/namespaces/default/services

ngoái, bạn có thể chọn một nodePort cố định trong service.yml

7

tôi giả sử bạn đang sử dụng MiniKube cho Kubernetes. Trong trường hợp như vậy, để xác định địa chỉ ip nút của bạn, sử dụng lệnh sau:

.\minikube.exe ip 

Nếu dịch vụ tiếp xúc là type = Nodeport, để kiểm tra các cổng tiếp xúc sử dụng lệnh sau:

.\kubectl.exe describe service <service-name> 

Kiểm tra cổng Node trong kết quả. Ngoài ra, nếu bạn muốn có tất cả các chi tiết này thông qua giao diện người dùng đẹp thì bạn có thể khởi chạy Bảng điều khiển Kubernetes tại địa chỉ sau:

<Node-ip>:30000 
Các vấn đề liên quan