Kubernetes Docker桌面&x2B;k8s plus https将多个外部端口代理到部署中的http上的POD?

Kubernetes Docker桌面&x2B;k8s plus https将多个外部端口代理到部署中的http上的POD?,kubernetes,kubernetes-ingress,docker-desktop,Kubernetes,Kubernetes Ingress,Docker Desktop,我想做一件简单的事情。我需要在docker desktop的k8s环境中进行监听,并使用我指定的pfx文件/密码进行代理,并通过端口将其转发到监听特定地址的POD(可以是端口80,无所谓) 文档非常复杂,看起来应该是直截了当的。我可以让POD运行,我可以使用kubectl port forward,它们工作得很好,但我不知道如何让ingress以一种有意义的方式与ha proxy或nginx或其他任何东西一起工作 有人能做一个ELI5告诉我如何打开这个吗?我在Windows102004上使用WS

我想做一件简单的事情。我需要在docker desktop的k8s环境中进行监听,并使用我指定的pfx文件/密码进行代理,并通过端口将其转发到监听特定地址的POD(可以是端口80,无所谓)

文档非常复杂,看起来应该是直截了当的。我可以让POD运行,我可以使用kubectl port forward,它们工作得很好,但我不知道如何让ingress以一种有意义的方式与ha proxy或nginx或其他任何东西一起工作

有人能做一个ELI5告诉我如何打开这个吗?我在Windows102004上使用WSL2和Docker实验版,因此我应该可以访问他们在文档中引用的入口内容,并以mud的形式进行说明


谢谢

如评论中所述,这是一个社区维基答案:


我已经在Windows中的Docker上的Kubernetes中创建了入口资源

复制步骤

  • 启用Hyper-V
  • 安装Docker for Windows并启用Kubernetes
  • 连接kubectl
  • 启用入口
  • 创建部署
  • 创建服务
  • 创建入口资源
  • 将主机添加到本地主机文件中
  • 试验
使可能 从具有管理员访问权限的Powershell运行以下命令:

启用Windows选项功能-联机-功能名称Microsoft-Hyper-V-全部

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

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

连接kubectl 安装

启用入口 运行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
编辑:确保没有其他服务正在使用端口80 重新启动你的机器。在以管理员身份运行的
cmd
提示符中,执行以下操作:
net stop http
使用
services.msc停止列出的服务

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

创建部署 下面是使用POD进行的简单部署,POD将响应请求:

apiVersion:apps/v1 种类:部署 元数据: 姓名:你好 规格: 选择器: 火柴标签: 应用程序:你好 版本:2.0.0 副本:3份 模板: 元数据: 标签: 应用程序:你好 版本:2.0.0 规格: 容器: -姓名:你好 图片:“gcr.io/googlesamples/hello应用程序:2.0” 环境: -名称:“港口” 价值:“50001”
通过运行以下命令应用它:

$kubectl apply-f文件名.yaml

创建服务 为了让POD能够让您与它们通信,您需要创建一个服务

示例如下:

apiVersion:v1 种类:服务 元数据: 姓名:你好服务 规格: 类型:节点端口 选择器: 应用程序:你好 版本:2.0.0 端口: -名称:http 协议:TCP 港口:80 目标港:50001 通过运行以下命令应用此服务定义:

$kubectl apply-f文件名.yaml

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

apiVersion:extensions/v1beta1
种类:入口
元数据:
姓名:你好,安格斯
规格:
规则:
-主持人:kubernetes.docker.internal
http:
路径:
-路径:/
后端:
服务名称:你好,服务
servicePort:http
看看:

spec:
规则:
-主持人:hello-test.internal
hello test.internal
将用作
hostname
连接到您的POD

通过调用以下命令应用入口资源:

$kubectl apply-f文件名.yaml

将主机添加到本地主机文件中 我发现这将允许您通过
hostname
连接到入口资源

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

编辑:最新版本的Docker Desktop for Windows已添加主机文件条目:
127.0.0.1 kubernetes.docker.internal

试验 通过调用以下命令显示有关入口资源的信息:
kubectl进入

它应该表明:

NAME            HOSTS                 ADDRESS     PORTS   AGE
hello-ingress   hello-test.internal   localhost   80      6m2s
现在,您可以通过打开web浏览器并键入来访问入口资源

http://kubernetes.docker.internal/

浏览器应输出:

Hello, world!
Version: 2.0.0
Hostname: hello-84d554cbdf-2lr76
Hostname:hello-84d554cbdf-2lr76
是回复的pod的名称

如果此解决方案不起作用,请使用以下命令检查连接:
netstat-a-n-o
具有管理员权限)如果某个设备未使用端口80



如评论中所述,这是一个社区维基答案:


我已经在Windows中的Docker上的Kubernetes中创建了入口资源

复制步骤

  • 启用Hyper-V
  • 安装Docker for Windows并启用Kubernetes
  • 连接kubectl
  • 启用入口
  • 创建部署
  • 创建服务
  • 创建入口资源
  • 将主机添加到本地主机文件中
  • 试验
使可能 从具有管理员访问权限的Powershell运行以下命令:

启用Windows选项功能-联机-功能名称Microsoft-Hyper-V-全部

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

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

连接kubectl 安装

启用入口 运行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
编辑:确保没有其他服务