首页 > 解决方案 > 将 DNS 条目添加到本地 /etc/hosts 以将流量重定向到 PKS Ingress 控制器

问题描述

我的 Kubernetes 集群在 Vmware PKS 中运行。

我有用于后端服务“test-service”的带有spec.rules.host: test.domain.com的Ingress资源。我知道,通过在 DNS 服务器中添加一个条目,当从集群外部(外部)访问时,会将流量路由到我的集群。但是在服务器/云中没有 DNS 条目,我需要通过向 /etc/hosts 或类似的东西添加条目来在本地测试 Ingress 配置。

我在一个裸机教程中发现,将 HA 代理 IP 添加到 /etc/hosts 文件会将流量重定向到 kubernetes 集群。就像那样,将“ip_of_k8_cluster test.domain.com”添加到 /etc/hosts 尝试访问,如“curl http://test.domain.com/ ”,但 URL 不可访问。

如何验证(内部) Ingress 资源中的主机名,而无需主机的实际 DNS 条目。我想确保我的 Ingress 资源正常工作,然后我可以请求我的公司管理员在 DNS 中添加名称。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: app-ingress
spec:
  rules:
  - host: test.domain.com
    http:
      paths:
      - backend:
          serviceName: test-service
          servicePort: 80
        path: /

标签: kuberneteslocalhostkubernetes-ingressnginx-ingresskube-dns

解决方案


您必须添加/etc/hosts的 IP 不是 Kubernetes-Cluster 的 IP,它必须是 Ingress-Service 的External - IP

并且Ingress-Serviceport的andtargetPort也必须是正确的(在您的情况下,对于您的 Ingress Service 侦听的那个)。port80targetPort


推荐阅读