2016-10-04 19 views
5

Tôi mới sử dụng Kubernetes và tôi đã duyệt tìm kiếm và đọc lý do tại sao ip bên ngoài của tôi không giải quyết được.Kubernetes (Minikube) external ip không hoạt động

Tôi đang chạy minikube trên bản phân phối ubuntu 16.04.

Trong tổng quan về dịch vụ của bảng điều khiển i có này

my-nginx | run: my-nginx | 10.0.0.11 | my-nginx:80 TCP my-nginx:32431 | TCP 192.168.42.71:80 

Khi tôi làm một http get tại http://192.168.42.165:32431/ tôi nhận được trang nginx.

Các cấu hình dịch vụ như sau

# Please edit the object below. Lines beginning with a '#' will be ignored, 
    # and an empty file will abort the edit. If an error occurs   while saving this file will be 
    # reopened with the relevant failures. 
    # 
    apiVersion: v1 
    kind: Service 
    metadata: 
     creationTimestamp: 2016-09-23T12:11:13Z 
     labels: 
     run: my-nginx 
     name: my-nginx 
     namespace: default 
     resourceVersion: "4220" 
     selfLink: /api/v1/namespaces/default/services/my-nginx 
     uid: d24b617b-8186-11e6-a25b-9ed0bca2797a 
    spec: 
     clusterIP: 10.0.0.11 
     deprecatedPublicIPs: 
     - 192.168.42.71 
     externalIPs: 
     - 192.168.42.71 
     ports: 
     - nodePort: 32431 
     port: 80 
     protocol: TCP 
     targetPort: 80 
     selector: 
     run: my-nginx 
     sessionAffinity: None 
     type: LoadBalancer 
    status: 
     loadBalancer: {} 

Đây là những bộ phận của ifconfog tôi

virbr0 Link encap:Ethernet HWaddr fe:54:00:37:8f:41 
       inet addr:192.168.122.1 Bcast:192.168.122.255   Mask:255.255.255.0 
       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
       RX packets:4895 errors:0 dropped:0 overruns:0 frame:0 
       TX packets:8804 errors:0 dropped:0 overruns:0   carrier:0 
       collisions:0 txqueuelen:1000 
       RX bytes:303527 (303.5 KB) TX bytes:12601315 (12.6   MB) 

    virbr1 Link encap:Ethernet HWaddr fe:54:00:9a:39:74 
       inet addr:192.168.42.1 Bcast:192.168.42.255   Mask:255.255.255.0 
       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
       RX packets:7462 errors:0 dropped:0 overruns:0 frame:0 
       TX packets:12176 errors:0 dropped:0 overruns:0   carrier:0 
       collisions:0 txqueuelen:1000 
       RX bytes:3357881 (3.3 MB) TX bytes:88555007 (88.5 MB) 


    vnet0  Link encap:Ethernet HWaddr fe:54:00:37:8f:41 
       inet6 addr: fe80::fc54:ff:fe37:8f41/64 Scope:Link 
       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
       RX packets:4895 errors:0 dropped:0 overruns:0 frame:0 
       TX packets:21173 errors:0 dropped:0 overruns:0 carrier:0 
       collisions:0 txqueuelen:1000 
       RX bytes:372057 (372.0 KB) TX bytes:13248977 (13.2 MB) 

    vnet1  Link encap:Ethernet HWaddr fe:54:00:9a:39:74 
       inet addr:192.168.23.1 Bcast:0.0.0.0   Mask:255.255.255.255 
       inet6 addr: fe80::fc54:ff:fe9a:3974/64 Scope:Link 
       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
       RX packets:7462 errors:0 dropped:0 overruns:0 frame:0 
       TX packets:81072 errors:0 dropped:0 overruns:0   carrier:0 
       collisions:0 txqueuelen:1000 
       RX bytes:3462349 (3.4 MB) TX bytes:92936270 (92.9 MB) 

Có ai có một số gợi ý, vì tôi đang bị mất?

Trả lời

9

Minikube known issues giải thích rằng các cân bằng tải trên đám mây không được hỗ trợ.

Tuy nhiên như đã giải thích trong vấn đề này, họ được xử lý giống nhau là như các dịch vụ của loại NodePort:

Ví dụ

Bắt đầu minikube và khởi động một dịch vụ nginx

$ minikube start 
$ kubectl run my-nginx --image=nginx --replicas=1 --port=80 
$ kubectl expose deployment my-nginx --target-port=80 --type=LoadBalancer 

Bạn c xác định URL của dịch vụ cân bằng tải này theo một trong hai cách. Cách cứng:

$ echo http://$(minikube ip):$(kubectl get service my-nginx --output='jsonpath={.spec.ports[0].NodePort}') 

hoặc một cách dễ dàng

$ minikube service my-nginx --url 

Cập nhật - Sử dụng một bộ điều khiển xâm nhập

Tôi tìm thấy một blog posting mô tả cách một bộ điều khiển xâm nhập có thể được chạy trên minikube để cung cấp một khả năng cân bằng tải.

Vì vậy, khởi động một bộ điều khiển traefik dựa xâm nhập:

$ kubectl create -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik.yaml 

Một khi điều này được chạy tạo ra một Ingress như sau, giao thông định tuyến dựa trên hostname:

$ cat ingress.yml 
apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
name: my-nginx-ingress 
spec: 
rules: 
    - host: my-nginx.192.168.99.100.xip.io 
    http: 
    paths: 
     - path:/
     backend: 
     serviceName: my-nginx 
     servicePort: 80 


$ kubectl create -f ingress.yml 
ingress "my-nginx-ingress" created 

Bây giờ dịch vụ nginx được tiếp xúc trên URL sau:

http://my-nginx.192.168.99.100.xip.io/ 

Lưu ý:

  • Tôi đang sử dụng xip.io service thay cho mục nhập DNS ký tự đại diện.
+0

Trong vỏ bọc được mô tả ở trên địa chỉ xip.io sẽ là http://my-nginx.192.168.42.165.xip.io/. Cảm ơn anwser tuyệt vời này. – EenProgrammeur

+1

@EenProgrammeur Chắc chắn địa chỉ IP sẽ là trang web cụ thể. Chỉ cần chạy lệnh "minikube ip" để tìm hiểu :-) Rất vui được trợ giúp –

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