如何在 Azure Kubernetes 服务上公开 http/https 应用程序
How to expose an http/https application on Azure Kubernetes Services
我正在将我的 dockerized 应用程序移植到 kubernetes,我在使用 aks 创建负载均衡器时遇到问题:
The Service "lbalance" is invalid: spec.ports[0].nodePort: Invalid value: 80: provided port is not in the valid range.
The range of valid ports is 30000-32767
配置非常简单
apiVersion: v1
kind: Service
metadata:
name: lbalance
spec:
selector:
app: lbalance
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 80
name: http
- protocol: TCP
port: 443
targetPort: 443
nodePort: 443
name: https
type: LoadBalancer
在它后面是一个 haproxy,带有 ssl 终端,指向集群中公开的其他服务
在我的测试环境中,我有一个 属性 来控制打开哪个端口 ( --service-node-port-range ) 但我在门户页面和门户网站上都找不到 属性在 Azure 文档上。
有没有办法在默认端口上提供服务或推荐的连接回端点端口的方法?
您需要从您的 yaml 中删除 nodePort
声明,它将由 kubernetes 从错误文本中提到的池(您唯一可以使用的池)中分配。
apiVersion: v1
kind: Service
metadata:
name: lbalance
spec:
selector:
app: lbalance
ports:
- protocol: TCP
port: 80
targetPort: 80
name: http
- protocol: TCP
port: 443
targetPort: 443
name: https
type: LoadBalancer
这样您的服务就可以在 803 上使用,并且一切正常
30000-32767 是 kubernetes 中的默认节点端口范围。您已定义为 nodePort: 443。它不受支持,因此引发了错误。
按照以下步骤操作
- 将 NodePort 替换为 ClusterIP 作为服务类型
- 部署入口控制器
- 部署默认后端
- 从 dns 证书创建秘密(对于 https)
- 部署入口规则(包括机密)以将用户请求路由到后端服务。
我正在将我的 dockerized 应用程序移植到 kubernetes,我在使用 aks 创建负载均衡器时遇到问题:
The Service "lbalance" is invalid: spec.ports[0].nodePort: Invalid value: 80: provided port is not in the valid range.
The range of valid ports is 30000-32767
配置非常简单
apiVersion: v1
kind: Service
metadata:
name: lbalance
spec:
selector:
app: lbalance
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 80
name: http
- protocol: TCP
port: 443
targetPort: 443
nodePort: 443
name: https
type: LoadBalancer
在它后面是一个 haproxy,带有 ssl 终端,指向集群中公开的其他服务
在我的测试环境中,我有一个 属性 来控制打开哪个端口 ( --service-node-port-range ) 但我在门户页面和门户网站上都找不到 属性在 Azure 文档上。
有没有办法在默认端口上提供服务或推荐的连接回端点端口的方法?
您需要从您的 yaml 中删除 nodePort
声明,它将由 kubernetes 从错误文本中提到的池(您唯一可以使用的池)中分配。
apiVersion: v1
kind: Service
metadata:
name: lbalance
spec:
selector:
app: lbalance
ports:
- protocol: TCP
port: 80
targetPort: 80
name: http
- protocol: TCP
port: 443
targetPort: 443
name: https
type: LoadBalancer
这样您的服务就可以在 803 上使用,并且一切正常
30000-32767 是 kubernetes 中的默认节点端口范围。您已定义为 nodePort: 443。它不受支持,因此引发了错误。
按照以下步骤操作
- 将 NodePort 替换为 ClusterIP 作为服务类型
- 部署入口控制器
- 部署默认后端
- 从 dns 证书创建秘密(对于 https)
- 部署入口规则(包括机密)以将用户请求路由到后端服务。