Я не могу подключиться к моему приложению, работающему с nginx ingress (Docker Desktop win 10).
Модуль контроллера nginx-ingress запущен, приложение исправно, и я создал входящий трафик. Однако, когда я пытаюсь подключиться к своему приложению на локальном хосте, я получаю сообщение «В соединении отказано».
В журнале вижу эту ошибку:
[14:13:13.028][VpnKit ][Info ] vpnkit.exe: Connected Ethernet interface f6:16:36:bc:f9:c6
[14:13:13.028][VpnKit ][Info ] vpnkit.exe: UDP interface connected on 10.96.181.150
[14:13:22.320][GoBackendProcess ][Info ] Adding vpnkit-k8s-controller tcp forward from 0.0.0.0:80 to 10.96.47.183:80
[14:13:22.323][ApiProxy ][Error ] time="2019-12-09T14:13:22-05:00" msg="Port 443 for service ingress-nginx is already opened by another service"
Я думаю, что порт 443 используется другим приложением, возможно, zscaler security или Skype. Выдержка из netstat -a -b
:
[svchost.exe]
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 16012
[com.docker.backend.exe]
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 8220
Не знаю, как заставить работать вход. Пожалуйста помоги!
Мой вход:
$ kubectl describe ing kbvalues-deployment-dev-ingress
Name: kbvalues-deployment-dev-ingress
Namespace: default
Address: localhost
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
localhost
/ kbvalues-deployment-dev-frontend:28000 (10.1.0.174:8080)
Annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/cors-allow-headers: X-Forwarded-For, X-app123-XPTO
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 42m nginx-ingress-controller Ingress default/kbvalues-deployment-dev-ingress
Normal UPDATE 6s (x5 over 42m) nginx-ingress-controller Ingress default/kbvalues-deployment-dev-ingress
Моя служба:
$ kubectl describe svc kbvalues-deployment-dev-frontend
Name: kbvalues-deployment-dev-frontend
Namespace: default
Labels: chart=tomcat-sidecar-war-1.0.4
environment=dev
name=kbvalues-frontend-dev
release=kbvalues-test
tier=frontend
Annotations: <none>
Selector: app=kbvalues-dev
Type: ClusterIP
IP: 10.98.89.94
Port: <unset> 28000/TCP
TargetPort: 8080/TCP
Endpoints: 10.1.0.174:8080
Session Affinity: None
Events: <none>
Я пытаюсь получить доступ к приложению по адресу: http://localhost:28000/health
. Я подтвердил, что URL-адрес /health
доступен локально в контейнере веб-сервера.
Я ценю любую помощь, которую вы можете предложить.
Изменить:
Я попытался изменить службу ingress-nginx для удаления HTTPS, как предлагается здесь: https://stackoverflow.com/a/56303330/166850 < / а>
Это избавило от ошибки 443 в журналах, но не исправило мою настройку (по-прежнему отказывалось соединение).
Изменить 2: вот определение Ingress YAML (kubectl get -o yaml):
$ kubectl get ing -o yaml
apiVersion: v1
items:
- apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
creationTimestamp: "2019-12-09T18:47:33Z"
generation: 5
name: kbvalues-deployment-dev-ingress
namespace: default
resourceVersion: "20414"
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/kbvalues-deployment-dev-ingress
uid: 5c34bf7f-1ab4-11ea-80e4-00155d169409
spec:
rules:
- host: localhost
http:
paths:
- backend:
serviceName: kbvalues-deployment-dev-frontend
servicePort: 28000
path: /
status:
loadBalancer:
ingress:
- hostname: localhost
kind: List
metadata:
resourceVersion: ""
selfLink: ""
Изменить 3: Вывод kubectl get svc -A
(только входящая линия):
ingress-nginx ingress-nginx LoadBalancer 10.96.47.183 localhost 80:30470/TCP 21h
Изменить 4: Я попытался получить IP-адрес виртуальной машины из Windows HyperV, но кажется, что у виртуальной машины нет IP-адреса?
PS C:\> (Get-VMNetworkAdapter -VMName DockerDesktopVM)
Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
Network Adapter False DockerDesktopVM DockerNAT 00155D169409 {Ok} {}
Изменить 5:
Вывод netstat -a -n -o -b
для порта 80:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
Can not obtain ownership information
kubectl exec -it <your nginx pod> /bin/bash
, запустить команду curl, предложенную Шубхэмом, и проверить свои результаты. - person randominstanceOfLivingThing   schedule 09.12.2019kubectl get svc -A
(только вставка входной строки)? Я подозреваю, что ваш входящий сервис настроен неправильно. Для облачных сред я бы ожидал, что Тип будетLoadBalancer
, однако для вашего случая, я думаю, вам может потребоваться настроить его для использованияNodePort
, где вы будете получать доступ к своему входу через порт (например, localhost: 30252 / myapp). - person leeman24   schedule 09.12.2019kubectl port-forward svc/kbvalues-deployment-dev-frontend 28000
и нажав:http://localhost:28000/health
- person RMorrisey   schedule 10.12.2019