【问题标题】:Creating Kubernetes service that reference external service by multiple ip addresses创建通过多个 ip 地址引用外部服务的 Kubernetes 服务
【发布时间】:2019-08-23 00:59:45
【问题描述】:

在 Kubernetes 中有没有办法为应该返回多个 IP 地址的外部服务创建服务?目前我正在通过在我的公共 DNS 提供商 (route53) 中创建 A 记录然后在 Kubernetes 中创建服务来解决这个问题:

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  labels:
    app: rabbitmq
spec:
  type: ExternalName
  externalName: rabbitmq.mydomainhere.dev

有没有一种方法可以在 Kubernetes 中本地创建一个服务,该服务返回一组固定的 IP 地址,这些 IP 地址不在 Kubernetes 集群内部进行管理,而无需创建公共 DNS 记录并使用externalName

【问题讨论】:

标签: kubernetes dns


【解决方案1】:

您可以创建一个没有选择器的无头服务并将 clusterIP 设置为 None,然后手动创建一个端点以在端点中设置您的所有 IP。你可以看看下面的例子。

kind: Service
apiVersion: v1
metadata:
  name: my-es
spec:
  clusterIP: None

---
kind: Endpoints
apiVersion: v1
metadata:
  name: my-es
subsets:
  - addresses:
      - ip: 172.22.111.250
      - ip: 172.22.149.230
    ports:
      - port: 9200

来自一个 Pod 的 nslookup 输出

root@curl-66bdcf564-8m6h7:/ ]$ nslookup my-es
Server:    169.254.25.10
Address 1: 169.254.25.10

Name:      my-es
Address 1: 172.22.111.250 172-22-111-250.my-es.default.svc.cluster.local
Address 2: 172.22.149.230 172-22-149-230.my-es.default.svc.cluster.local

【讨论】:

  • 非常感谢。如果我们只想公开一个 DNS 条目,那么在您的示例中在服务和端点中指定端口 9200 有什么意义?
  • @Justin 如果您只想公开 DNS 条目,则无需指定端口。 Endpoint 中指定的端口用于 SRV 记录。请忽略服务中的端口,不使用clusterIp没有任何意义。我将从原帖中删除它
【解决方案2】:

ExternalIP 服务使用路由到集群节点的预定义外部 IP 地址池中的 IP 地址。这些外部 IP 地址不由 Kubernetes 管理;他们是集群管理员的职责。

您可以创建一个没有选择器的无头服务并将 clusterIP 设置为 None,然后手动创建一个端点以在端点中设置您的所有 IP。你可以看看下面的例子。

kind: Service
apiVersion: v1
metadata:
  name: my-es
spec:
  clusterIP: None

---
kind: Endpoints
apiVersion: v1
metadata:
  name: my-es
subsets:
  - addresses:
      - ip: 172.22.111.250
      - ip: 172.22.149.230
    ports:
      - port: 9200

来自一个 Pod 的 nslookup 输出

root@curl-66bdcf564-8m6h7:/ ]$ nslookup my-es
Server:    169.254.25.10
Address 1: 169.254.25.10

Name:      my-es
Address 1: 172.22.111.250 172-22-111-250.my-es.default.svc.cluster.local
Address 2: 172.22.149.230 172-22-149-230.my-es.default.svc.cluster.local

文档:service-selectors。 有用的文章:exposing-pods

【讨论】:

    猜你喜欢
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多