添加没有 www 的主机不适用于 Ingress 资源

Adding host without www not working with Ingress resource

我有几个问题

  1. 当我们对入口资源进行更改时,是否存在必须删除资源并重新创建资源的情况,或者 kubectl apply -f <file_name> 就足够了吗?

  2. 当我在没有 www i.e. (my-domain.in) 的情况下添加主机属性时,我无法访问我的应用程序,但是使用 www i.e. (www.my-domain.in) 它可以工作,有什么区别?

下面是我的入口资源

当我将主机设置为 my-domain.in 时,我无法访问我的应用程序,但是当我将主机设置为 www.my-domain.in 时,我可以访问该应用程序。

我的域在不同的提供商上,我添加了指向我的 ALB 的 DNS 名称的 CNAME (www)。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: eks-learning-ingress
  namespace: production
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:a982529496:cerd878ef678df
  labels:
    app: eks-learning-ingress
spec:
  rules:
  - host: my-domain.in **does not work**
    http:
      paths:
        - path: /*
          backend:
            serviceName: eks-learning-service
            servicePort: 80
  • 先回答你的问题1:

    When we make changes to ingress resource, are there any cases where we have to delete the resource and re-create it again or is kubectl apply -f sufficient?

理论上是的,kubectl apply是正确的方式,要么显示ingress unchanged,要么显示ingress configured

其他有效的 documented 选项是 kubectl edit ingress INGRESS_NAME 如果输出有效,它会在版本末尾保存并应用。

我说理论是因为会出现bug,所以我们不能完全丢弃它,但bug是最坏的情况。

  • 现在比较模糊的问题 2:

    When I add the host attribute without www i.e. (my-domain.in), I am not able to access my application but with www i.e. (www.my-domain.in) it works, what's the difference?

要排除故障,我们需要隔离进程,就像在一条链中,我们必须找到哪个 link 坏了。一一:

Endpoint > Domain Provider> Cloud Provider > Ingress > Service > Pod.

  1. DNS 解析(域名提供商)
  2. DNS 解析(云提供商)
  3. Kubernetes Ingress(入口 > 服务 > Pod)

DNS 解析


域名提供商:

在互联网上,回答 my-domain.in 的就是您的域名提供商。

  • my-domain.in 及其子域(如 www.my-domain.inadmin.my-domain.in)的规则是什么? 你说"domain is on a different provider and I have added CNAME (www) pointing to DNS name of my ALB."
    • my-domain.inmy-domain.in 是否被本能地重定向到 ALB 地址?
    • 它如何处理 URL 子域?请求如何传递到您的云端?

云提供商:

好的,云提供商正在正确清晰地接收请求。

  • 您的 ALB 是否有针对子域或路径请求的通用或特定规则?
  • 使用另一台主机、具有 Web 服务器的不同 VM 进行测试。
  • Check ALB Troubleshooting Page

Kubernetes 入口

通常我们会从这部分开始进行故障排除,但由于您提到它适用于 www.my-domain.in,我们可以假定您的服务、部署甚至入口结构都在正常工作。

您可以查看 Types of Ingress Docs 以获取有关其工作原理的一些示例。

底线: 我相信你的 DNS 有一条通往 www.my-domain.in 的路线,但根域没有通往你的云提供商的路线,这就是为什么它只在你为 www.

启用入口