NoneCurl : (7) Не удалось подключиться к порту 192.168.99.100. 30790: соединение отказано

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

Учебное пособие: https://www.bogotobogo.com/DevOps/Docker/Docker-Envoy-Ambassador-API-Gateway-for-Kubernetes.php Ambassador-API- Gateway- for- Kubernetes.php

При запуске команды

curl $(minikube service --url ambassador)/httpbin/ip

Я получаю ошибку

curl: (7) Failed to connect to 192.168.99.100 port 30790: Connection refused
curl: (3) <url> malformed 

Я действительно могу удалить ошибку

curl: (3) <url> malformed

запустив

minikube service --url ambassador
http://192.168.99.100:30790

а потом

curl http://192.168.99.100:30790/httpbin/ip

Я уже попробовал этот ответ curl: (7) Не удалось подключиться к порту 1959.168.99.100 31591: Соединение отклонено, и шаг, упомянутый в этом ответе, уже есть в блоге, и он не работает.

Это код из блога, для посла-svc.yaml

---
apiVersion: v1
kind: Service
metadata:
  labels:
    service: ambassador
  name: ambassador
  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v0
      kind:  Mapping
      name:  httpbin_mapping
      prefix: /httpbin/
      service: httpbin.org:80
      host_rewrite: httpbin.org
spec:
  type: LoadBalancer
  ports:
  - name: ambassador
    port: 80
    targetPort: 80
  selector:
    service: ambassador

Может ли это быть проблемой, связанной с ВМ?

Кроме того, я сначала попытался поработать над этим уроком, но, к сожалению, получил ту же ошибку.

Дайте мне знать, если что-то еще нужно с моей стороны.

Редактировать:

1. Как спрашивается в комментарии, здесь вывод

kubectl get pods --namespace=kube-system
NAME                               READY   STATUS    RESTARTS   AGE
coredns-fb8b8dccf-qkxwm            1/1     Running   0          5h16m
coredns-fb8b8dccf-rrn4f            1/1     Running   0          5h16m
etcd-minikube                      1/1     Running   0          5h15m
kube-addon-manager-minikube        1/1     Running   4          5h15m
kube-apiserver-minikube            1/1     Running   0          5h15m
kube-controller-manager-minikube   1/1     Running   0          3h17m
kube-proxy-wfbxs                   1/1     Running   0          5h16m
kube-scheduler-minikube            1/1     Running   0          5h15m
storage-provisioner                1/1     Running   0          5h16m

после запуска

kubectl apply -f https://docs.projectcalico.org/v3.7/manifests/calico.yaml
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-78f8f67c4d-zqtl2   1/1     Running   0          65s
calico-node-27lcq                          1/1     Running   0          65s
coredns-fb8b8dccf-qkxwm                    1/1     Running   2          22h
coredns-fb8b8dccf-rrn4f                    1/1     Running   2          22h
etcd-minikube                              1/1     Running   1          22h
kube-addon-manager-minikube                1/1     Running   5          22h
kube-apiserver-minikube                    1/1     Running   1          22h
kube-controller-manager-minikube           1/1     Running   0          8m27s
kube-proxy-wfbxs                           1/1     Running   1          22h
kube-scheduler-minikube                    1/1     Running   1          22h
storage-provisioner                        1/1     Running   2          22h

2 ответа

kubectl get pods --namespace= система kube должна иметь модуль сетевых служб

Таким образом, вы не настроили сетевую политику для использования для DNS.

Попробуйте использовать сетевую политику Calico с помощью команды

kubectl apply -f https://docs.projectcalico.org/v3.7/manifests/calico.yaml

проверьте сейчас kubectl get pods --namespace=kube-system

Вы должны получить вывод, как это:-

NAMESPACE    NAME                                       READY  STATUS   RESTARTS  AGE
kube-system  calico-kube-controllers-6ff88bf6d4-tgtzb   1/1    Running  0         2m45s
kube-system  calico-node-24h85                          1/1    Running  0         2m43s
kube-system  coredns-846jhw23g9-9af73                   1/1    Running  0         4m5s
kube-system  coredns-846jhw23g9-hmswk                   1/1    Running  0         4m5s
kube-system  etcd-jbaker-1                              1/1    Running  0         6m22s
kube-system  kube-apiserver-jbaker-1                    1/1    Running  0         6m12s
kube-system  kube-controller-manager-jbaker-1           1/1    Running  0         6m16s
kube-system  kube-proxy-8fzp2                           1/1    Running  0         5m16s
kube-system  kube-scheduler-jbaker-1                    1/1    Running  0         5m41s

Вот контрольный список для устранения проблемы:

  1. Вы создали хотя бы одного слушателя (CRD)?

    Если вы не создадите хотя бы один прослушиватель, модуль edge-stack не будет отвечать ни на каких портах на запрос. Итак, создайте объект Listeners, как указано в официальном документе:
    https://www.getambassador.io/docs/edge-stack/latest/tutorials/getting-started/
    Обратите внимание, что порт по умолчанию, определенный в развертывании Ambassador и, в свою очередь, в край стека стручок являются 8080 и 8443 поэтому следует избегать , чтобы изменить их , если вы не знаете , что вы делаете. Вы можете проверить, определен ли какой-либо существующий слушатель с помощью этой команды: kubectl get Listener -n ambassador или просто kubectl get Listener если, возможно, вы по ошибке использовали пространство имен по умолчанию.

  2. Вы определили хотя бы одну службу типа LoadBalancer, которая ссылается на службу посла?

    Обычно в этом нет необходимости, потому что после того, как вы развернули Ambassador на своем узле, у вас должен быть Service edge-stack в посланнике пространства имен, который настроен как LoadBalancer, поэтому он предоставляет некоторые порты в диапазоне 30000-32767 и перенаправляет трафик на 8080 и 8443 . Если вы вручную создали службу типа LoadBalancer, убедитесь, что вы используете правильные порты в полях port и targetPort . Порты используются краевым стеком.Развертывание, которые по умолчанию 8080 и 8443 )

  3. Убедитесь, что модуль edge-stack отвечает на запрос через его порт.

    Самый простой способ - использовать веб-интерфейс Kubernates или вашего облачного провайдера и выполнить bash в модуле edge-stack . С панелью инструментов Kubernates по умолчанию вы можете просто добраться до модуля, щелкнуть по вертикальным трем точкам -> Exec.

    Если вы запускаете посла локально, вы можете использовать eval $(minikube docker-env), выполните поиск в соответствующем контейнере с помощью docker ps | grep edge-stack и как только вы получите его идентификатор, вы можете запустить bash с помощью команды docker exec -it <id> bash

    Наконец запустить curl -Lki http://127.0.0.1:8080

    Вы получите что-то вроде этого:

    HTTP/1.1 404 Not Found
    date: Tue, XX Xxx XXXX XX:XX:XX XXX
    server: envoy
    content-length: 0

    Если curl получает ответ вместо «в соединении отказано», служба успешно работает на модуле, и проблема должна быть в конфигурации службы, развертывания или прослушивателя. Вы можете попробовать использовать IP-адрес кластера для Edge-stack службы вместо 127.0.0.1, но вам нужно запустить команду curl из модуля, отличного от edge-stack. Вы можете использовать свой собственный модуль или команду exec в других модулях- посланниках, а именно: edge-stack-agent и edge-stack-redis .

Другие вопросы по тегам