开发者社区> 问答> 正文

Kubernetes服务的完全限定域名(FQDN)不起作用?DNS-1035

k8s小能手 2019-02-22 15:51:05 477

我一直收到这个错误:

Ingress“traefik-web-ui-ingress”无效:spec.rules [0] .http.backend.serviceName:无效值:“traefik-frontend-service.traefik.svc.cluster.local”:DNS-1035标签必须由小写字母数字字符或' - '组成,以字母字符开头,并以字母数字字符结尾(例如'my-name'或'abc-123',用于验证的正则表达式是'az?')

服务名称traefik-frontend-service.traefik.svc.cluster.local:

以字母数字字符开头
以字母数字字符结尾
仅包含字母数字或 -

Kubernetes 容器
分享到
取消 提交回答
全部回答(1)
  • k8s小能手
    2019-07-17 23:29:10

    这是为了避免交叉命名空间暴露,在此线程中解释了为什么对入口规范的这种限制是故意的。

    这意味着,Ingress只能在同一名称空间中公开服务。

    提供的值应该是服务名称,而不是FQDN。

    如果你真的需要这样设计,你的其他选择是:

    将Traefik公开为LB服务,然后创建数据服务以向traefik提供路由规则。
    使用Contour Ingress(通过heptio)将路由委派给其他名称空间。

    使用Contour会是这样的:

    root.ingressroute.yaml

    apiVersion: contour.heptio.com/v1beta1
    kind: IngressRoute
    metadata:
    name: namespace-delegation-root
    namespace: default
    spec:
    virtualhost:

    fqdn: ns-root.bar.com

    routes:

    - match: /
      services:
        - name: s1
          port: 80

    delegate the subpath, /blog to the IngressRoute object in the marketing namespace with the name blog

    - match: /blog
      delegate:
        name: blog
        namespace: marketing

    blog.ingressroute.yaml

    apiVersion: contour.heptio.com/v1beta1
    kind: IngressRoute
    metadata:
    name: blog
    namespace: marketing
    spec:
    routes:

    - match: /blog
      services:
        - name: s2
          port: 80
    0 0
+ 订阅

云原生时代,是开发者最好的时代

推荐文章
相似问题
推荐课程