我创建了这个测试 Helm 图表,我想通过公共 URL 域访问它:
入口控制器:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: registry-domain-ingress
spec:
rules:
- host: monitor.somedomain.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ include "pod.fullname" . }}
port:
number: 80
我在公共 DNS 注册表中添加了一条记录:
monitor.somedomain.org -> 4.4.4.4 (node1)
monitor.somedomain.org -> 4.4.4.5 (node2)
但当我尝试打开 URL 链接时,页面未加载。知道可能是什么问题吗?
答案1
您在使用公共 URL 访问 Helm 图表应用程序时遇到问题可能有几个不同的原因。
由于您使用的是公共域名并将其指向节点 IP 地址(4.4.4.4 和 4.4.4.5),因此您当前的入口配置未明确指定节点端口。因此,您必须配置入口控制器以使用节点端口。这使基于互联网的外部流量能够到达 pod。
您可以通过在服务 yaml 文件的端口下添加名为 nodePort 的端口来实现此目的,从服务节点端口范围(默认为 30000-32767)。这样,您就会预先知道 nodePort。为了确保在 Service yaml、ConfigMap 和 Deployment 中使用 nodePort,您可以使用 Helm 将 nodePort 作为参数传入。
以下是通过修改 ingress yaml 来使用 nodeport 的方法:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: registry-domain-ingress #descriptive name for your ingress resource
spec:
rules:# List of routing rules for your ingress
- host: monitor.somedomain.org #your public domain name
http:# specifies HTTP routing configuration
paths:
- path: / #Matches any path (root path)
pathType: Prefix #Match requests that start with this path
backend:# Defines the backend service to route traffic
service:
name: {{ include "pod.fullname" . }}#replace with the actual pod service name
port:
number: 80 #port number of the service (usually 80 for HTTP)
ingress classname:<ingress -class-name>If you want to using a specific ingress class
external Traffic policy:Local #If required for your configuration
Ports: #List of ports exposed by the ingress
-name :http #optional name for the port
Port:80 # External port exposed to the internet
target port:80 #pod port (port where your application listens)
nodeport:300080 # choose an unused Nodeport (eg:30080)
通过遵循以下步骤并仔细检查您的入口、DNS、防火墙和应用程序运行状况,您应该能够通过公共 URL 成功访问您的 Helm Chart 应用程序
确保您的 K8s 集群已安装入口控制器。
检查入口控制器的日志,检查入口资源处理方式是否存在任何错误或问题。
确认链接到您的节点的防火墙规则允许所选节点端口(在本例中为端口 30080)上的传入流量。
使用kubectl 获取 pod验证应用服务中的 pod 是否正常运行且健康。
仔细检查入口后端定义中的服务名称是否与 Helm Chart 和命名空间中部署的服务名称相匹配
参考此git链接了解更多信息