如何将服务从Kubernetes群集曝光到外部网络,以便使用DNS提供它们?

发布于 2025-02-04 09:22:29 字数 495 浏览 4 评论 0原文

我想通过使用DNS向外部网络公开服务。例如,我有服务my-service,我想将其展示为my-service.my-cluster.com

  1. 我应该使用一些代理(例如nginx ...)还是Kubernetes支持这一点?
  2. 是DNS应该手动配置或有一些自动化。

我认为以后将其用于开发和生产 - 也许对两种用例都更好。

例如,我想公开以下内容:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: my-service
  name: my-service
spec:
  type: ClusterIP
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: my-service

I want to expose service to external network with use DNS. For example I have service my-service and I want to expose it as my-service.my-cluster.com.

  1. Should I use some proxy (like nginx ...) or Kubernetes support this?
  2. Is DNS should be configured manually or there is some automation.

I assume use it to development and production later - maybe different methods is better for both use case.

For example I want to expose this:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: my-service
  name: my-service
spec:
  type: ClusterIP
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: my-service

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鲜血染红嫁衣 2025-02-11 09:22:29

由于我们谈论的是http服务,因此您应该使用

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-service-ingress
spec:
  ingressClassName: your-ingress-controller-class-name
  rules:
  - http:
      paths:
      - path: /your-root
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

基本上,Ingress控制器以类型LoadBalancer的服务曝光,并为其找到的每个入口创建基于名称的虚拟主机。

可以通过外部dns - 在某些情况下 - 在某些情况下。也就是说,如果您使用支持的DNS提供商和兼容的入口控制器(大多数)。

Since we are talking of an http service, you should use an ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-service-ingress
spec:
  ingressClassName: your-ingress-controller-class-name
  rules:
  - http:
      paths:
      - path: /your-root
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

Basically, an Ingress Controller exposes itself at a Service of type LoadBalancer and creates name-based virtual hosts for each ingress it finds.

Automatic DNS provisioning can be achieved via external-dns – under certain circumstances. Namely if you use a supported DNS provider and a compatible ingress controller (most are).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文