Невозможно получить доступ к моему приложению в миникубе - PullRequest
0 голосов
/ 03 октября 2019

Я новичок в kubernetes и попытался запустить небольшое приложение, используя kubernetes. Я создал образ докера и использовал миникуб для его запуска. Таким образом, приложение очень просто, оно просто печатает hello-world.

@RestController
@RequestMapping(value = "helloworld")
public class MyController {

    @GetMapping
    public HelloWord helloWord(){

        return new HelloWord("Hello Word");
    }
}

Мой dockerfile:

FROM adoptopenjdk/openjdk11-openj9:jdk-11.0.1.13-alpine-slim
VOLUME /tmp
ARG JAR_FILE=target/myapp-1.0.0.jar
COPY ${JAR_FILE} myapp-1.0.0.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar","/myapp-1.0.0.jar"]

deploy.yaml

apiVersion: v1
kind: Service
metadata:
  name: myhelloworldservice
spec:
  selector:
    app: my-hello-world-app
  ports:
    - protocol: "TCP"
      port: 8080
      targetPort: 80
      nodePort: 30003
  type: LoadBalancer


---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-hello-world
spec:
  selector:
    matchLabels:
      app: my-hello-world-app
  replicas: 5
  template:
    metadata:
      labels:
        app: my-hello-world-app
    spec:
      containers:
        - name: hello-world
          image: myname/myhelloimage
          ports:
            - containerPort: 80

Я запускаю команду:

kubectl create -f deploy.yaml

и вывод:

service / myhelloworldservice создан

создал deploy.apps / my-hello-world

Я запустил команду ip minikube, чтобы получить ip, а затем использовал этот IP-адрес для доступа к моему приложению через порт 30003, но не смог получить доступ к моему приложению.

Я использовал:

http://xxx.xx.xx.xxx:30003/helloworld

В чем проблема, почему я не могу получить доступ к своему приложению? Я получаю Этот сайт не может быть достигнуто. Отказ в соединении ошибка.

Ответы [ 3 ]

1 голос
/ 03 октября 2019

Ваш сервис имеет тип LoadBalancer, который является специфическим для доступа. С Minikube вы можете получить к ним доступ, используя:

minikube tunnel

Для получения дополнительной информации см. https://minikube.sigs.k8s.io/docs/tasks/loadbalancer/

0 голосов
/ 05 октября 2019

Вы можете перенести переадресацию с мини-куба на локальный хост, используя kubectl port-forward <<created_container_name>> 80 Теперь вы сможете получить доступ к своему приложению через браузер с localhost:80/helloworld

0 голосов
/ 05 октября 2019

Глядя на код, кажется, что это сервис на основе Spring. Маловероятно, что служба прослушивает порт 80 - для Spring по умолчанию установлено значение 8080. Таким образом, предполагая, что фактический порт равен 8080, измените:

  • targetPort: 80 на targetPort: 8080 в Serviceопределение.
  • type: LoadBalancer до type: NodePort в определении Service.
  • containerPort: 80 до containerPort: 8080 в определении Deployment.
...