基于Ingress暴露服务

配置Ingress

英博云支持用户通过定义ingress的方式,暴露公网服务,每个用户集群的ingress需要符合一定的后缀可以在英博云控制台:集群->集群详情->概览,页面查看,具体如下:

ingress后缀示例

若希望创建自定义ingress时,需要在自己集群的域名后缀的基础上,补充2-7位字符,以下为一个示例:

若ingress后缀为:

-tenant-61616664-helan-ingress-cn-huabei1.eks.ebcloud.com

则可以定义如下ingress

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: filebrowser-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: fb-tenant-61616664-helan-ingress-cn-huabei1.eks.ebcloud.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: filebrowser
                port:
                  number: 9080  #  指向 Service 的 9080 端口

区分外网与内网Ingress

  • 外网Ingress:域名会解析为公网IP,可以支持公网访问,不建议内网访问使用。
  • 内网Ingress:域名会解析为内网IP,仅支持内网访问,公网访问不通。

问题排查

若是ingress无法访问,首先尝试用命令:kubectl describe ingress {ingress-name}查看是否有报错,操作如下:

 kubectl describe ingress filebrowser-ingress
Name:             filebrowser-ingress
Labels:           <none>
Namespace:        default
Address:
Ingress Class:    <none>
Default backend:  <default>
Rules:
  Host                                                          Path  Backends
  ----                                                          ----  --------
  fb-tenant-39663739-llbhb1-ingress-cn-huabei1.eks.ebcloud.com
                                                                /   filebrowser:9080 (10.233.95.186:8080)
Annotations:                                                    nginx.ingress.kubernetes.io/rewrite-target: /
Events:
  Type     Reason     Age                 From            Message
  ----     ------     ----                ----            -------
  Warning  SyncError  16m (x753 over 8d)  ingress-syncer  Error syncing to host cluster: create object: admission webhook "ingresses.validating.ebtech.com" denied the request: Ingress filebrowser-ingress-x-default-x-tenant-61616664-helan validation failed: invalid host(s): [fb-tenant-39663739-llbhb1-ingress-cn-huabei1.eks.ebcloud.com]; each host must start with one of [*] and end with one of [-tenant-61616664-helan-ingress-cn-huabei1.eks.ebcloud.com, -tenant-61616664-helan-ingress-cn-huabei1-internal.eks.ebcloud.com], with a 2–8 lowercase-character core in between

这说明,ingress的域名格式不对,需要进行调整。

其次,可以尝试用nslookup查看域名的解析情况,确保域名正常解析后再访问,通常dns会有10s左右的延迟。

正常解析的示例如下:

% nslookup fb-tenant-61616664-helan-ingress-cn-huabei1.eks.ebcloud.com
Server:		130.117.180.66
Address:	130.117.180.66#53

Non-authoritative answer:
Name:	fb-tenant-61616664-helan-ingress-cn-huabei1.eks.ebcloud.com
Address: 61.135.204.125