搜索

3.3.3. 服务

download PDF

Kubernetes 服务 充当内部负载均衡器。它标识一组复制的 pod,以代理其接收的连接。可以在服务中任意添加或删除支持 pod,同时服务始终保持可用,从而使依赖于服务的任何对象能够以一致的地址引用它。默认服务 clusterIP 地址来自 OpenShift Container Platform 内部网络,它们用于允许 pod 相互访问。

要允许从外部访问该服务,可以将集群外部externalIPingressIP 地址分配给该服务。这些 externalIP 地址也可以是虚拟 IP 地址,提供对该服务 的高可用性 访问权限。

服务被分配一个 IP 地址和端口对,访问时代理到适当的后备 pod。服务使用标签选择器来查找运行的所有容器,这些容器在特定端口上提供特定的网络服务。

与 pod 一样,服务是 REST 对象。以下示例显示了上方定义的 pod 的服务定义:

服务对象定义(YAML)

apiVersion: v1
kind: Service
metadata:
  name: docker-registry      1
spec:
  selector:                  2
    docker-registry: default
  clusterIP: 172.30.136.123   3
  ports:
  - nodePort: 0
    port: 5000               4
    protocol: TCP
    targetPort: 5000         5

1
服务名称 docker-registry 也用于在命名空间中使用插入到其他 pod 中的服务 IP 的环境变量。名称长度最多为 63 个字符。
2
标签选择器识别所有带有作为后备 pod 附加的 docker-registry=default 标签的 pod。
3
服务的虚拟 IP,从内部 IP 池自动创建。
4
服务侦听的端口。
5
服务将连接转发到的后备 pod 上的端口。

Kubernetes 文档包含更多与服务相关的信息。

3.3.3.1. Service externalIPs

除了集群的内部 IP 地址外,用户还可配置集群外部的 IP 地址。管理员负责确保流量通过此 IP 到达节点。

集群管理员必须从 master-config.yaml 文件中配置的 externalIPNetworkCIDRs 范围内选择 externalIPs。当 master-config.yaml 发生更改时,必须重启 master 服务。

externalIPNetworkCIDR /etc/origin/master/master-config.yaml 示例

networkConfig:
  externalIPNetworkCIDRs:
  - 192.0.1.0.0/24

服务 externalIPs 定义(JSON)

{
    "kind": "Service",
    "apiVersion": "v1",
    "metadata": {
        "name": "my-service"
    },
    "spec": {
        "selector": {
            "app": "MyApp"
        },
        "ports": [
            {
                "name": "http",
                "protocol": "TCP",
                "port": 80,
                "targetPort": 9376
            }
        ],
        "externalIPs" : [
            "192.0.1.1"         1
        ]
    }
}

1
用于在其上公开端口的外部 IP 地址列表。此列表除了内部 IP 地址列表之外。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.