搜索

3.3.3.5. 无头服务

download PDF

如果您的应用程序不需要负载均衡或单一服务 IP 地址,您可以创建一个无头服务。当您创建无头服务时,不会执行负载均衡或代理,也不会为该服务分配集群 IP。对于此类服务,DNS 会根据服务是否定义了选择器来自动配置。

使用选择器的服务 :对于定义选择器的无头服务,端点控制器会在 API 中创建 Endpoints 记录,并修改 DNS 配置来返回指向支持该服务的 pod 的 A 记录(地址)。

没有选择器的服务 :对于不定义选择器的无头服务,端点控制器不会创建 端点 记录。但是,DNS 系统会查找并配置以下记录:

  • 对于 ExternalName 类型服务,为 CNAME 记录。
  • 对于所有其他服务类型,对于与服务共享名称的任何端点的 记录
3.3.3.5.1. 创建无头服务

创建无头服务与创建标准服务类似,但不会声明 ClusterIP 地址。要创建无头服务,请添加 clusterIP:none 参数值为服务 YAML 定义。

例如,对于您要成为同一集群或服务一部分的 pod 组。

Pod 列表

$ oc get pods -o wide

输出示例

NAME               READY  STATUS    RESTARTS   AGE    IP            NODE
frontend-1-287hw   1/1    Running   0          7m     172.17.0.3    node_1
frontend-1-68km5   1/1    Running   0          7m     172.17.0.6    node_1

您可以将无头服务定义为:

无头服务定义

apiVersion: v1
kind: Service
metadata:
  labels:
    app: ruby-helloworld-sample
    template: application-template-stibuild
  name: frontend-headless 1
spec:
  clusterIP: None 2
  ports:
  - name: web
    port: 5432
    protocol: TCP
    targetPort: 8080
  selector:
    name: frontend 3
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

1
无头服务的名称。
2
clusterIP 变量设置为 None 将声明一个无头服务。
3
选择具有 frontend 标签的所有 pod。

另外,无头服务本身没有任何 IP 地址。

$ oc get svc

输出示例

NAME                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
frontend            ClusterIP   172.30.232.77    <none>        5432/TCP   12m
frontend-headless   ClusterIP   None             <none>        5432/TCP   10m

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.