美文网首页
Kubernetes 中的服务概念

Kubernetes 中的服务概念

作者: 木火应 | 来源:发表于2023-12-02 13:39 被阅读0次

    在 Kubernetes 中,服务是一种抽象,用于定义一组 Pod 的访问方式,提供了稳定的网络终结点。服务为应用程序的组件提供了一个统一的入口,使得这些组件之间可以相互发现和通信,而无需了解底层的网络细节。

    主要组成部分:

    1. Pod:
      • Pod 是服务的实际运行单元。Service 将流量负载均衡到 Pod,使得在应用程序升级或扩展时,Pod 的 IP 地址和端口可能发生变化时,服务仍然可以提供稳定的访问方式。
    2. Service:
      • Service 定义了一组 Pod,并提供一个固定的虚拟 IP 地址和端口,作为对这组 Pod 的入口。Service 可以通过多种方式暴露,如 ClusterIP、NodePort、LoadBalancer 等。
    3. Selector:
      • Selector 是一个用于标识将包括在服务中的 Pod 的标签选择器。Service 使用标签选择器来匹配关联的 Pod。
    4. Endpoint:
      • Endpoint 是 Service 后面实际运行的 Pod 的 IP 地址和端口。Endpoints Controller 负责动态更新 Service 的 Endpoint。

    Service 类型:

    1. ClusterIP:
      • 默认类型。在集群内部创建一个虚拟 IP,仅在集群内部可访问。
    2. NodePort:
      • 在每个节点上绑定一个静态端口,允许从集群外访问 Service。
    3. LoadBalancer:
      • 在云服务提供商中创建一个外部负载均衡器,自动分配外部 IP,并将流量导向 Service。
    4. ExternalName:
      • 提供了一个服务的 CNAME 记录,通过这个 CNAME 记录可以访问外部服务,而不是通过 ClusterIP。

    创建 Service 的示例:

    以下是一个创建 ClusterIP 类型的 Service 的示例 YAML 文件:

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

    在这个示例中:

    • selector 指定了 Service 匹配的 Pod 的标签选择器。
    • ports 定义了 Service 暴露的端口以及要路由到的目标端口。

    创建这个 Service 后,其他 Pod 可以通过 my-service 访问匹配标签选择器的 Pod,而不用关心 Pod 的具体 IP 地址和端口。这种抽象使得服务的维护更加灵活,不受底层 Pod 变化的影响。

    相关文章

      网友评论

          本文标题:Kubernetes 中的服务概念

          本文链接:https://www.haomeiwen.com/subject/gxucgdtx.html