如何在本地访问nginx入口?

我无法连接到以nginx入口运行的应用程序(Docker桌面赢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安全性或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。我验证了/health可以在Web服务器容器中本地访问URL。

感谢您提供的任何帮助。

我尝试更改ingress-

nginx服务以删除HTTPS,如下所示:https :

//stackoverflow.com/a/56303330/166850

这摆脱了日志中的443错误,但没有解决我的设置(仍然拒绝连接)。

这是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: ""

输出kubectl get svc -A(仅入口线):

ingress-nginx   ingress-nginx                      LoadBalancer   10.96.47.183     localhost     80:30470/TCP             21h

我试图从Windows HyperV获取VM的IP地址,但似乎VM没有IP?

PS C:\> (Get-VMNetworkAdapter -VMName DockerDesktopVM)

Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses

---- -------------- ------ ---------- ---------- ------ -----------

Network Adapter False DockerDesktopVM DockerNAT 00155D169409 {Ok} {}

netstat -a -n -o -b端口80的输出:

  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4

Can not obtain ownership information

回答:

我已经设法在Windows的Docker上的Kubernetes中创建Ingress资源。

  • 启用Hyper-V
  • 安装适用于Windows的Docker并启用Kubernetes
  • 连接kubectl
  • 启用入口
  • 创建部署
  • 建立服务
  • 创建入口资源
  • 将主机添加到本地主机文件
  • 测试

启用[Hyper-V](https://docs.microsoft.com/pl-pl/virtualization/hyper-v-on-

windows/quick-start/enable-hyper-v)

在具有管理员访问权限的Powershell中,运行以下命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

系统可能会要求您重新启动计算机。

安装适用于Windows的Docker并启用Kubernetes

使用所有默认选项安装Docker应用程序并启用Kubernetes

连接kubectl

安装kubectl。

启用入口

运行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud-generic.yaml

确保没有其他服务正在使用端口80

重新启动机器。在cmd以管理员身份运行的提示下,执行以下操作:使用 net stop http 停止列出的服务services.msc

使用:netstat -a -n -o -b检查端口80上侦听的其他进程。

创建部署

以下是具有可响应请求的Pod的简单部署:

apiVersion: apps/v1

kind: Deployment

metadata:

name: hello

spec:

selector:

matchLabels:

app: hello

version: 2.0.0

replicas: 3

template:

metadata:

labels:

app: hello

version: 2.0.0

spec:

containers:

- name: hello

image: "gcr.io/google-samples/hello-app:2.0"

env:

- name: "PORT"

value: "50001"

通过运行命令应用它:

$ kubectl apply -f file_name.yaml

建立服务

为了使Pod能够与您进行通信,您需要创建服务。

下面的例子:

apiVersion: v1

kind: Service

metadata:

name: hello-service

spec:

type: NodePort

selector:

app: hello

version: 2.0.0

ports:

- name: http

protocol: TCP

port: 80

targetPort: 50001

通过运行以下命令来应用此服务定义:

$ kubectl apply -f file_name.yaml

创建入口资源

以下是使用上面创建的服务的简单Ingress资源:

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

name: hello-ingress

spec:

rules:

- host: kubernetes.docker.internal

http:

paths:

- path: /

backend:

serviceName: hello-service

servicePort: http

看一眼:

spec:

rules:

- host: hello-test.internal

hello-test.internal将用作hostname连接到您的广告连播。

通过调用命令来应用您的Ingress资源:

$ kubectl apply -f file_name.yaml

将主机添加到本地主机文件

我找到了这个Github链接,该链接可让您通过连接到Ingress资源hostname

为此,127.0.0.1 hello-

test.internal请在C:\Windows\System32\drivers\etc\hosts文件中添加一行并保存。您将需要管理员权限才能执行此操作。

Windows的最新版本的Docker桌面已经添加了一个主机文件条目: 127.0.0.1

kubernetes.docker.internal

测试

通过调用命令显示有关Ingress资源的信息: kubectl get ingress

它应该显示:

NAME            HOSTS                 ADDRESS     PORTS   AGE

hello-ingress hello-test.internal localhost 80 6m2s

现在,您可以打开网络浏览器并输入以下内容来访问Ingress资源

http://kubernetes.docker.internal/

浏览器应输出:

Hello, world!

Version: 2.0.0

Hostname: hello-84d554cbdf-2lr76

Hostname: hello-84d554cbdf-2lr76 是所回复的广告连播的名称。

:如果此解决方案不工作与命令请检查连接 netstat -a -n -o ( ,如果事情没有使用端口80)。

以上是 如何在本地访问nginx入口? 的全部内容, 来源链接: utcz.com/qa/434427.html

回到顶部