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
Вот контрольный список для устранения проблемы:
Вы создали хотя бы одного слушателя (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
если, возможно, вы по ошибке использовали пространство имен по умолчанию.Вы определили хотя бы одну службу типа LoadBalancer, которая ссылается на службу посла?
Обычно в этом нет необходимости, потому что после того, как вы развернули Ambassador на своем узле, у вас должен быть Service edge-stack в посланнике пространства имен, который настроен как LoadBalancer, поэтому он предоставляет некоторые порты в диапазоне 30000-32767 и перенаправляет трафик на 8080 и 8443 . Если вы вручную создали службу типа LoadBalancer, убедитесь, что вы используете правильные порты в полях port и targetPort . Порты используются краевым стеком.Развертывание, которые по умолчанию 8080 и 8443 )Убедитесь, что модуль 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 .