Невозможно получить доступ к службе в моем кластере minikube

Я настроил одноузловой кластер с помощью minikube. Я также настроил клиентский модуль внутри этого узла, а также службу nodeport для доступа к модулю. Но служба недоступна в браузере.

Ниже приведены файлы конфигурации для клиентского модуля и службы nodeport:

client-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: client-pod
  labels:
    component:web
spec:
  containers:
    - name: client
      image: stephengrider/multi-worker
      ports:
        - containerPort: 9999

client-node-port.yaml

kind: Service
metadata:
    name: client-node-port
spec:
    type: NodePort
    ports:
        - port: 3050
          targetPort: 3000
          nodePort: 31515
    selector:
        component:web

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

> kubectl get pods

NAME                              READY   STATUS    RESTARTS   AGE
client-pod                        1/1     Running   0          60m

> kubectl get services

NAME               TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
client-node-port   NodePort    10.99.14.107   <none>        3050:31515/TCP   63m


Затем я узнал URL-адрес службы в кластере minikube:

> minikube service list

|-------------|------------------|-----------------------------|
|  NAMESPACE  |       NAME       |             URL             |
|-------------|------------------|-----------------------------|
| default     | client-node-port | http://192.168.99.101:31515 |
| default     | hello-minikube   | http://192.168.99.101:31324 |
| default     | kubernetes       | No node port                |
| kube-system | kube-dns         | No node port                |
|-------------|------------------|-----------------------------|

Мне удалось получить доступ к сервису hello-minikube по URL-адресу, указанному напротив него в таблице. Но я не мог получить доступ к сервису клиент-узел-порт, и он просто говорит:

This site can’t be reached192.168.99.101 refused to connect.

Как мне продолжить?


person Marco Polo    schedule 13.09.2019    source источник


Ответы (3)


Ваш целевой порт службы - 3000, а открытый порт вашего контейнера - 9999, к которому служба будет подключаться и отправлять запрос.

Измените целевой порт в службе на 9999, а затем проверьте. Также проверьте, что контейнер находится в рабочем состоянии.

person Harsh Manvar    schedule 13.09.2019
comment
Я сделал свой targetPort как 9999, который совпадает с портом контейнера, и повторно развернул службу. Проблема все еще сохраняется. : / - person Marco Polo; 13.09.2019

ContainerPort используется для определения того, какой из портов контейнера должен использоваться службой.

Целевой порт в спецификации svc указывает, на какой порт должна попасть служба при поступлении запроса.

spec:
  containers:
    - name: client
      image: stephengrider/multi-worker
      ports:
        - containerPort: 3000

Поскольку изображение stephengrider/multi-worker, которое вы используете, использовало 3000 в качестве порта по умолчанию, установите для containerPort значение 3000. Обновите pod yaml. Он должен работать.

Примечание: вы всегда должны настраивать таргетинг на те порты вашей службы, которые действительны со стороны модуля.

person Kamol Hasan    schedule 13.09.2019
comment
Я сделал свой targetPort как 9999, который совпадает с портом контейнера, и повторно развернул службу. Проблема все еще сохраняется. : / - person Marco Polo; 13.09.2019
comment
@MarcoPolo установил для targetPort и containerPort значение 3000. Думаю, ты не получил этого от моих ответов. - person Kamol Hasan; 14.09.2019

Я столкнулся с подобными проблемами. Я удалил конфигурации узла и порта и повторно развернул их. Это сработало.

person Mahesh Ambig    schedule 05.04.2020