Amazon web services 添加不带www的主机不使用入口资源

Amazon web services 添加不带www的主机不使用入口资源,amazon-web-services,kubernetes,kubernetes-ingress,Amazon Web Services,Kubernetes,Kubernetes Ingress,我有几个问题 当我们对入口资源进行更改时,是否存在必须删除资源并重新创建的情况,或者kubectl apply-f是否足够 当我在没有www.I.e.(my-domain.in)的情况下添加主机属性时,我无法访问我的应用程序,但在www.I.e.(www.my-domain.in)的情况下,它工作正常,有什么区别 下面是我的入口资源 当我将主机设置为我的域。在中,我无法访问我的应用程序,但当我将主机设置为www.my-domain。在中,我可以访问应用程序 我的域位于另一个提供商上,我添加了指向

我有几个问题

  • 当我们对入口资源进行更改时,是否存在必须删除资源并重新创建的情况,或者
    kubectl apply-f
    是否足够

  • 当我在没有
    www.I.e.(my-domain.in)
    的情况下添加主机属性时,我无法访问我的应用程序,但在
    www.I.e.(www.my-domain.in)
    的情况下,它工作正常,有什么区别

  • 下面是我的入口资源

    当我将主机设置为
    我的域。在
    中,我无法访问我的应用程序,但当我将主机设置为
    www.my-domain。在
    中,我可以访问应用程序

    我的域位于另一个提供商上,我添加了指向我的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: 当我们对入口资源进行更改时,是否存在必须删除资源并重新创建的情况,或者kubectl apply-f是否足够

    理论上,是的,
    kubectl应用
    是正确的方法
    ,要么显示未更改的
    入口
    ,要么显示已配置的
    入口

    另一个有效选项是
    kubectl edit ingres ingres\u NAME
    ,如果输出有效,则在版本结束时保存并应用该选项

    我说理论是因为bug会发生,所以我们不能完全抛弃它,但bug是最坏的情况

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

    为了排除故障,我们需要隔离流程,就像在一个链中一样,我们必须找到哪个环节断了。逐一:

    端点>域提供商>云提供商>入口>服务>Pod。

  • DNS解析(域提供程序)
  • DNS解析(云提供商)
  • Kubernetes入口(入口>服务>吊舱)

  • DNS解析
    域提供商:

    到Internet,谁负责
    我的域。在
    中是您的域提供商

    • my domain.in
      及其子域(如
      www.my-domain.in
      admin.my domain.in
      )的规则是什么? 你说“域名在另一个提供商上,我添加了CNAME(www),指向我的ALB的DNS名称。”
      • my domain.in
        my domain.in
        是否本能地被重定向到ALB地址
      • 它如何处理URL子域?如何将请求传递到您的云
    云提供商:

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

    • 您的ALB是否有子域或路径请求的通用或特定规则
    • 使用另一台主机、另一台VM和web服务器进行测试
    库伯内特斯入口酒店 通常我们会从这一部分开始进行故障排除,但由于您提到它适用于
    www.my-domain。在
    中,我们可以假定您的服务、部署甚至入口结构工作正常

    您可以查看,以获得一些它应该如何工作的示例


    底线:我相信您的DNS有一条通往
    www.my-domain的路径。在
    中,但根域没有通往您的云提供商的路径,这就是为什么它只有在您为www启用入口时才起作用。

    您不必删除入口对象来更新它,推荐的格式是
    kubectl apply
    。它将显示
    ingres.networking.k8s.io/ingres unchanged
    ingres.networking.k8s.io/ingres configured
    。这是你贴的入口,是有效的吗?请解释所需的状态,以便我们对语法和规则进行故障排除。hi@willrof,问题是在主机中,如果我没有指定
    www
    ,就像您在上面的文件中看到的那样,我的应用程序不会加载。但是,当我向主机添加
    www
    时,它就工作了。我将更新我的问题,抱歉没有更新clear@willrof,只是更新了问题的更多细节。谢谢。谢谢你提出这个问题。我相信这是一个DNS问题。有一种方法可以测试,从库伯内特斯开始。我将把我所有的疑难解答建议都作为一个答案,因为域问题通常是一个个案一个案例的情况。谢谢@willof,期待它。非常感谢你的回答。我使用godaddy作为域主机,他们没有办法将裸域添加为CNAME记录。我发现,当我为my-domain.in添加重定向规则以在my
    ALB
    下重定向到https时,我能够访问该应用程序。我使用CNAME的原因是因为ALB不提供IP,如果不提供,我可以使用
    a
    记录而不是CNAME。你知道有没有办法为我的
    ALB
    获取
    静态IP
    。我会将其标记为接受答案,因为它指出了问题的实际位置,但如果能够理解为什么没有重定向规则,我就不会看到应用程序(服务器未找到)错误,我必须添加2条注释,因为这不会让我一次看到所有内容,这将是非常好的,对此表示抱歉