OpenShift 路由与 Kubernetes 入口以及创建新的本地 DNS 名称?

OpenShift 路由与 Kubernetes 入口以及创建新的本地 DNS 名称?

在 Openshift 中,我习惯通过路由将我的服务暴露在集群之外。这将自动创建一个新的“域名”,我可以使用该域名从本地网络上的本地 PC 访问我的应用程序。

该新域名不会自动向互联网公开,但它会在本地网络上自动运行,因此我假设有一些 DNS 服务器正在运行 - 可能是作为 OpenShift 平台的一部分 - 这些路由/DNS 名称会自动添加/删除。

现在我正在使用 kubernetes,并为我的服务/应用程序创建了一个 Ingress 对象:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: my-app
  namespace: my-ns
spec:
  rules:
  - host: ???
    http:
      paths:
      - backend:
          serviceName: my-app
          servicePort: 8080
        path: /hello

但是我该如何填写主机呢?

每次我需要执行此操作时,我是否必须手动联系 DNS 服务器管理员并让他在本地网络上创建具有唯一名称的新 DNS 记录?

或者在 Kubernetes 中是否存在一些标准/自动化的方法来实现这一点——类似于 OpenShift?

答案1

默认情况下,kubeadm init部署一个集群,该集群使用 DNS 名称分配服务<service_name>.<namespace>.svc.cluster.local。您可以使用--service-dns-domain更改 DNS 名称后缀。同样,您需要/etc/systemd/system/kubelet.service.d/10-kubeadm.conf相应地更新文件,否则 DNS 将无法正常运行。

你可能会发现如何更改使用 kubeadm 部署的 kubernetes 1.9 上的 cluster.local 默认域?对你自己有用。

如果你有(也许将来会有)外部 DNS 提供商 - 你可能需要研究一下外部DNS方向。

当然,你应该根据自己的需求参考特定的文档。GKE 的配置示例:在 Google 容器引擎上设置 ExternalDNS

答案2

但是我该如何填写主机呢?

嗯,你手动填写域名,你已经A在本地 DNS 上为该域名配置了指向入口 IP 的记录。就这样。

每次我需要执行此操作时,我是否必须手动联系 DNS 服务器管理员并让他在本地网络上创建具有唯一名称的新 DNS 记录?

如果你只在本地使用它,那么通过本地 DNS 服务器解析它真的很重要吗?你可以简单地将此域添加到你的/etc/hosts文件中,只告诉你的本地机器,该域可以解析本地网络中的某个 IP。

或者在 Kubernetes 中是否存在一些标准/自动化的方法来实现这一点——类似于 OpenShift?

我不太熟悉Openshift所以我无法告诉你这个功能是如何实现的,但我很确定没有像你描述的那样,Kubernetes

相关内容