2017-06-13 53 views
5

EDIT: Toàn bộ vấn đề của thiết lập của tôi là để đạt được (nếu có thể) như sau:Gán IP bên ngoài để một Kubernetes Dịch vụ

  • Tôi có nhiều k8s các nút
  • Khi tôi liên hệ với một địa chỉ IP (từ mạng của công ty tôi), nó sẽ được chuyển đến một trong các thùng chứa/nhóm/dịch vụ của tôi/bất cứ điều gì.
  • tôi nên có thể dễ dàng thiết lập mà IP (như trong định nghĩa .yml dịch vụ của tôi)

Tôi đang chạy một cụm Kubernetes nhỏ (được xây dựng với kubeadm) để đánh giá nếu tôi có thể di chuyển Docker của tôi (cũ) Thiết lập Swarm thành k8. Tính năng tôi hoàn toàn cần là khả năng gán IP cho các vùng chứa, như tôi làm với MacVlan. Trong thiết lập docker hiện tại của tôi, tôi đang sử dụng MacVlan để gán địa chỉ IP từ mạng của công ty cho một số vùng chứa để tôi có thể liên lạc trực tiếp (không có proxy ngược) như thể đó là bất kỳ máy chủ vật lý nào. Tôi đang cố gắng để đạt được một cái gì đó tương tự với k8s.

tôi phát hiện ra rằng:

  • tôi phải sử dụng Dịch vụ
  • tôi không thể sử dụng loadbalancer loại, vì nó chỉ dành cho các nhà cung cấp điện toán đám mây tương thích (như GCE hoặc AWS).
  • Tôi nên sử dụng ExternalIPs
  • Tài nguyên Ingress là loại proxy ngược lại?

tập tin yaml của tôi là:

apiVersion: apps/v1beta1 
kind: Deployment 
metadata: 
     name: nginx-deployment 
spec: 
    template: 
    metadata: 
     labels: 
     app: nginx 
    spec: 
     containers: 
     - name: nginx 
     image: nginx:1.7.9 
     ports: 
     - containerPort: 80 
     nodeSelector: 
     kubernetes.io/hostname: k8s-slave-3 
--- 
kind: Service 
apiVersion: v1 
metadata: 
    name: nginx-service 
spec: 
    type: ClusterIP 
    selector: 
    app: nginx 
    ports: 
    - name: http 
     protocol: TCP 
     port: 80 
     targetPort: 80 
    externalIPs: 
    - A.B.C.D 

Tôi đã nhảy mà dịch vụ của tôi sẽ nhận được IP A.B.C.D (đó là một trong những mạng lưới của công ty tôi). Việc triển khai của tôi đang hoạt động khi tôi có thể tiếp cận vùng chứa nginx của tôi từ bên trong cụm k8s bằng cách sử dụng nó ClusterIP.

Tôi đang thiếu gì? Hoặc ít nhất, tôi có thể tìm thông tin về lưu lượng truy cập mạng của mình ở đâu để xem liệu các gói có đang đến không?

EDIT:

$ kubectl get svc 
NAME   CLUSTER-IP  EXTERNAL-IP  PORT(S) AGE 
kubernetes  10.96.0.1  <none>   443/TCP 6d 
nginx-service 10.102.64.83 A.B.C.D   80/TCP 23h 

Cảm ơn.

+0

Bạn có chắc chắn rằng các IP bên ngoài đã đề cập các tuyến đến các nút cụm k8? Ngoài ra, bạn thấy gì khi chạy dịch vụ kubectl? –

+0

Bạn có thể thử mà không chỉ định 'loại: ClusterIP' –

+0

Tôi đã thêm đầu ra' kubectl get svc' làm EDIT. Loại bỏ 'loại: ClusterIP' không thay đổi bất cứ điều gì vì nó là giá trị mặc định. Làm thế nào tôi có thể kiểm tra xem lưu lượng truy cập đến cụm của tôi? Trong 'kube-proxy'? –

Trả lời

0

Bạn có thể thử thêm "loại: NodePort" vào tệp yaml của bạn cho dịch vụ và sau đó bạn sẽ có cổng truy cập thông qua trình duyệt web hoặc từ bên ngoài. Đối với trường hợp của tôi, nó đã giúp.

Các vấn đề liên quan