Не видно мое приложение в браузере, развертывающемся с Kubernetes

надеюсь, у вас все хорошо!

Мне нужно увидеть мое приложение в браузере, но я считаю, что мне здесь чего-то не хватает, и надеюсь, что вы поможете мне с этим.

[root@kubernetes Docker]# kubectl get all
NAME                           READY   STATUS    RESTARTS   AGE
pod/my-app2-56d5c786dd-n7mqq   1/1     Running   0          19m
pod/nginx-86c57db685-bxkpl     1/1     Running   0          13h

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        31h
service/my-app2      ClusterIP   10.101.108.199   <none>        8085/TCP       12m
service/nginx        NodePort    10.106.14.144    <none>        80:30525/TCP   13h

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/my-app2   1/1     1            1           19m
deployment.apps/nginx     1/1     1            1           13h

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/my-app2-56d5c786dd   1         1         1       19m
replicaset.apps/nginx-86c57db685     1         1         1       13h

В целом вы можете видеть, что все работает правильно, выглядит так же, как и я.

Чтобы открыть это в моем браузере, я использую мой IP-адрес от подчиненного узла, где расположен контейнер. В моем приложении я отображаю Hello как этот @RequestMapping ("/ Hello") В моем dockerfile, чтобы построить мой образ, я использовал это:

[root@kubernetes project]# cat Dockerfile
FROM openjdk:8
COPY microservico-0.0.1-SNAPSHOT.jar microservico-0.0.1-SNAPSHOT.jar
#WORKDIR /usr/src/microservico-0.0.1-SNAPSHOT.jar
EXPOSE 8085
ENTRYPOINT ["java", "-jar", "microservico-0.0.1-SNAPSHOT.jar"]

Итак, в конце я думаю, что мне нужно вызвать приложение таким образом.

---> ip: 8085 / Привет

[root@kubernetes project]# telnet kubeslave 8085
Trying 192.168.***.***...
telnet: connect to address 192.168.***.***: Connection refused

но я до сих пор ничего не вижу ...

Вот мое развертывание и обслуживание:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app2
  labels:
    app: app
spec:
  selector:
    matchLabels:
      app: app
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: app
        role: master
        tier: backend
    spec:
      containers:
      - name: appcontainer
        image: *****this is ok*****:my-java-app
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 8085


apiVersion: v1
kind: Service
metadata:
  name: my-app2
  labels:
    app: app
    role: master
    tier: backend
spec:
  ports:
  - port: 8085
    targetPort: 8085
  selector:
    app: app
    role: master
    tier: backend

Всего 1 ответ


Вы создали сервис, который имеет тип ClusterIP (по умолчанию). Этот тип сервиса предназначен только для доступа изнутри кластера kubernetes. Для доступа к нему из браузера вам необходимо открыть модуль через сервис LoadBalancer или Nodeport . LoadBalancer работает только в том случае, если вы являетесь одним из поддерживаемых публичных облаков, в противном случае необходимо использовать Nodeport.

https://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/

https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/

Помимо использования сервиса вы можете использовать kubectl proxy для доступа к нему.

Если вы находитесь на Minikube, следуйте этому

https://kubernetes.io/docs/tutorials/hello-minikube/


Есть идеи?

10000