Cant Access Minikube Loadbalancer Service с хост-машины - PullRequest
1 голос
/ 01 апреля 2019

Я пытаюсь узнать, как использовать Kibernetes с Minikube и иметь следующее развертывание и обслуживание:

---
kind: Service
apiVersion: v1
metadata:
  name: exampleservice
spec:
  selector:
    app: myapp
  ports:
  - protocol: "TCP"
    # Port accessible inside cluster
    port: 8081
    # Port to forward to inside the pod
    targetPort: 8080
    # Port accessible outside cluster
    nodePort: 30002
  type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myappdeployment
spec:
  replicas: 5
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: tutum/hello-world
        ports:
        - containerPort: 8080

Я ожидаю, что смогу подключиться к этой службе с моего локального компьютера на

http://192.168.64.2:30002

В соответствии с командой: minikube service exampleservice --url, но когда я пытаюсь получить к нему доступ из браузера, я получаю сообщение об ошибке сайта.

Некоторая информация, которая может помочь при отладке:

kubectl get services --all-namespaces:

NAMESPACE     NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       exampleservice         LoadBalancer   10.104.248.158   <pending>     8081:30002/TCP           26m
default       kubernetes             ClusterIP      10.96.0.1        <none>        443/TCP                  2h
default       user-service-service   LoadBalancer   10.110.181.202   <pending>     8080:30001/TCP           42m
kube-system   kube-dns               ClusterIP      10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   2h
kube-system   kubernetes-dashboard   ClusterIP      10.110.65.24     <none>        80/TCP                   2h

Я использую миникуб на OSX.

1 Ответ

6 голосов
/ 01 апреля 2019

Это ожидается.Обратите внимание, что LoadBalancer предназначен для облака, чтобы создать внешний балансировщик нагрузки, такой как ALP / NLP в AWS и нечто подобное в GCP / Azure и т. Д.

Обновите службу, как показано здесь.здесь я предполагаю 192.168.64.2 это ваш миникуб ip.если нет, обновите его с помощью ip minikube, чтобы оно заработало.

kind: Service
apiVersion: v1
metadata:
  name: exampleservice
spec:
  selector:
    app: myapp
  ports:
  - protocol: "TCP"
    # Port accessible inside cluster
    port: 8081
    # Port to forward to inside the pod
    targetPort: 80
    # Port accessible outside cluster
    nodePort: 30002
  type: LoadBalancer
  externalIPs:
  - 192.168.64.2

Теперь вы можете получить доступ к своему приложению по адресу http://192.168.64.2:8081/


Если вам нужно получить доступ к приложению по номеру 30002, вы можете использовать его следующим образом

    kind: Service
    apiVersion: v1
    metadata:
      name: exampleservice
    spec:
      selector:
        app: myapp
      ports:
      - protocol: "TCP"
        # Port accessible inside cluster
        port: 8081
        # Port to forward to inside the pod
        targetPort: 80
        # Port accessible outside cluster
        nodePort: 30002
      type: NodePort

Ваш файл развертывания выглядит неправильно для меня.

удалить его kubectl delete deploy/myappdeployment

использовать это для созданияснова.

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  labels:
    app: myapp
  name: myappdeployment
spec:
  replicas: 5
  selector:
    matchLabels:
      app: myapp
  strategy: {}
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - image: tutum/hello-world
        name: myapp
        ports:
        - containerPort: 80
...