Kubernetes 进入域

问题描述 投票:0回答:2

我是 kubernetes 新手,实际上我 1 周前就开始使用,我尝试使用 Ingress 来查看使用域名的应用程序,但无论我做了什么,我都无法让它工作。我的 yaml 文件具有以下格式,当我应用它时,它运行正常并且不会显示任何错误。

apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace
  
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
  namespace: my-namespace
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
        
---

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
  namespace: my-namespace
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
  - protocol: TCP
    nodePort: 32000
    port: 80
    targetPort: 80

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  namespace: my-namespace
spec:
  ingressClassName: nginx
  rules:
  - host: xxxx.xxxxxx.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              number: 80

当我尝试使用nodePort http://??.??.??.??:32000/ 浏览应用程序时,我可以查看应用程序的内容,但是当我使用域名时,我收到错误消息“无法访问该网站”。

我花了太多时间,却找不到问题所在。有人可以告诉我我的配置有什么问题吗?

提前致谢

kubernetes kubernetes-ingress
2个回答
0
投票

您需要更改

Ingress
yaml 文件中的服务名称以匹配您创建的实际服务的名称。

spec:
  ingressClassName: nginx
  rules:
  - host: xxxx.xxxxxx.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-service  # EDIT THIS FROM nginx-service
            port:
              number: 80


0
投票

根据您发布的 YAML 配置,Ingress 资源中指定的服务名称与您之前在配置中定义的服务的实际名称似乎不匹配。在我看来,这可能就是您的域名无法正确解析到 Kubernetes 上托管的应用程序的原因。

您的服务使用名称

my-app-service
进行定义,但是,在您的 Ingress 定义中,您引用了名为
nginx-service
的服务。

要解决此问题,请更新 Ingress 资源以匹配正确的服务名称:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  namespace: my-namespace
spec:
  ingressClassName: nginx
  rules:
  - host: xxxx.xxxxxx.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-service  # Here
            port:
              number: 80

确保使用

kubectl apply -f <filename>.yaml
应用更新的配置。另外,请确保您的
xxxx.xxxxxx.com
的 DNS 设置正确指向运行 Ingress 控制器的 Kubernetes 集群的外部 IP。

© www.soinside.com 2019 - 2024. All rights reserved.