Kubernetes Docker桌面&x2B;k8s plus https将多个外部端口代理到部署中的http上的POD?
我想做一件简单的事情。我需要在docker desktop的k8s环境中进行监听,并使用我指定的pfx文件/密码进行代理,并通过端口将其转发到监听特定地址的POD(可以是端口80,无所谓) 文档非常复杂,看起来应该是直截了当的。我可以让POD运行,我可以使用kubectl port forward,它们工作得很好,但我不知道如何让ingress以一种有意义的方式与ha proxy或nginx或其他任何东西一起工作 有人能做一个ELI5告诉我如何打开这个吗?我在Windows102004上使用WSL2和Docker实验版,因此我应该可以访问他们在文档中引用的入口内容,并以mud的形式进行说明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
谢谢 如评论中所述,这是一个社区维基答案:
我已经在Windows中的Docker上的Kubernetes中创建了入口资源 复制步骤:
- 启用Hyper-V
- 安装Docker for Windows并启用Kubernetes
- 连接kubectl
- 启用入口
- 创建部署
- 创建服务
- 创建入口资源
- 将主机添加到本地主机文件中
- 试验
启用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
- 启用入口
- 创建部署
- 创建服务
- 创建入口资源
- 将主机添加到本地主机文件中
- 试验
启用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
编辑:确保没有其他服务