Доступ к сервису kubernetes извне - PullRequest
1 голос
/ 21 января 2020

Я следую учебному пособию по интеграции весной и kubernetes:

https://spring.io/guides/gs/spring-boot-kubernetes/

В моем текущем сценарии у меня есть 1 главный и 2 рабочих сервера.

Когда я развертываю файл ниже с помощью команды kubectl apply -f deployment.yaml, я могу сделать запрос из главного сервера, используя kubectl port-forward svc/demo 8080:8080 и curl localhost:8080/actuator/health.

Я хочу сделать это внешний запрос (publi c computer - мой компьютер) на доступ к службе, которую я создал (kubernetes_master_ip:8080/actuator), но когда я пытаюсь это сделать, я получаю «Отказ в соединении».

Чего не хватает?

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: demo
  name: demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: demo
    spec:
      containers:
      - image: springguides/demo
        name: demo
        resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: demo
  name: demo
spec:
  ports:
  - name: 8080-8080
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: demo
  type: ClusterIP
status:
  loadBalancer: {}

Ответы [ 2 ]

3 голосов
/ 21 января 2020

Вам необходимо изменить тип сервиса, чтобы выставить приложение. Есть два способа: - Тип LoadBalancer: (Только для облачных провайдеров) - Тип NodePort: Может быть выполнен локально или в мини-кубе.

Измените yaml службы на ниже:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: demo
  name: demo
spec:
  ports:
  - name: 8080-8080
    port: 8080
    nodePort: 31234
    protocol: TCP
    targetPort: 8080
  selector:
    app: demo
  type: NodePort

После того, как услуга выполнена. проверьте IP-адрес узла приложения, на котором создается контейнер.

kubectl get pods -o wide

, затем попробуйте получить доступ к приложению по адресу: http://node_ip: 31234 / привод

1 голос
/ 21 января 2020

вы можете изменить тип услуги на балансировщик нагрузки. Который выставит ваш сервис через IP-адрес на внешний inte rnet. Балансировщик нагрузки типа сервиса будет работать только с провайдерами Cloud.

Для более подробной информации вы можете посетить: https://kubernetes.io/docs/concepts/services-networking/

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: demo
  name: demo
spec:
  ports:
  - name: 8080-8080
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: demo
  type: LoadBalancer

сохранить как yaml и выполнить его. он предоставит IP-адрес.

Вы можете получить доступ к услуге через IP

Kubectl get svc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...