Не удалось получить доступ к сервису Kubernetes - PullRequest
0 голосов
/ 08 июня 2018

Вопрос Kubernetes: мне кажется, что я не могу получить доступ к своему сервису с моей локальной машины (модули работают на мини-кубе), когда я запускаю команду kubectl describe pod pod-id Я вижу эти две строки, но не знаю, если онине имеют доступа к развертыванию:

Port:           8888/TCP
Host Port:      0/TCP

Но когда я запускаю

kubectl get services

, я не вижу External-IP

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
ci-master    NodePort    10.103.13.96   <none>        8888:31388/TCP   1m

Вот мой service.yaml файл:

apiVersion: v1
kind: Service
metadata:
  name: ci-master
  labels:
    app: ci
    tier: fullstack
    role: master
spec:
  type: NodePort
  ports:
  - port: 8888
    targetPort: 8888
  selector:
    app: ci
    role: master
    tier: fullstack

И та часть, которая, на мой взгляд, должна иметь отношение к моей deployment.yaml:

spec:
  template:
    spec:
      containers:
      - name: ci
        image: rand/image-one:latest
        ports:
        - containerPort: 8888

Когда я пытаюсь получить доступ к услуге с помощью minikube service ci-master Я получаю это сообщение на неопределенный срок: Waiting, endpoint for service is not ready yet...

Служба работает, когда я пытаюсь kubectl describe pod pod-id Я вижу эту строку внизу:

  Type    Reason                 Age   From               Message
  Normal  Started                24m   kubelet, minikube  Started container

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

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Что мне не хватало, так это «Тип услуги». Если я хочу что-то доступное из внешнего мира, мне нужно было выбрать LoadBalancer.

Так что это простое изменение исправило это:

spec:
  type: LoadBalancer
  ports:
  - port: 8888
    targetPort: 8888

Теперь у меня наконец есть:

NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
ci-master    LoadBalancer   10.15.243.32   35.211.12.22   80:32463/TCP   1m
0 голосов
/ 09 июня 2018

В этой конфигурации ваша служба работает на порту 8888 и сопоставлена ​​с портом 31388 узла.Таким образом, вы можете подключить его к порту 8888 изнутри кластера и к порту 31388 из внешнего мира.

Об услугах, targerPort - это порт, на который отправляются запросы, поэтому containerPortваше размещение.Эти два ВСЕГДА должны соответствовать ...

... И port является сервисным портом.Итак, ваш сервис доступен 10.103.13.96:8888.

...