• Controller与Service系列(二) Service基本概念


    一、什么是Service

    通过创建 Service,可以为一组具有相同功能的容器应用提供一个统一的入口地 址,并且将请求负载分发到后端的各个容器应用上。所以service的存在基于:
    • 服务发现
    • 负载均衡

    1、服务发现

    Pod因为Node节点的宕机会导致其重新调度,这样Pod就没有固定的ip,那么之前的Pod就会失联,为了防止重新调度的Pod能够找到就需要进行服务发现。

     这样虽然Pod被调度到另一个节点上,但是也可以继续被发现,不至于失联。

    2、负载均衡

    定义一组Pod的访问策略:

    前台请求,后台将其进行负载均衡,然后分发到不同的Pod上。Service与Pod之间通过label与selector进行关联,这与Controller与Pod之间建立关联的方式一样。

    二、Service类型

     对一些应用的某些部分,可能希望将其暴漏给k8s集群外部的IP地址,Service允许指定你需要的Service类型,默认的是ClusterIP类型。

    • ClusterIP:通过集群的内部 IP 暴露服务,选择该值时服务只能够在集群内部访问。 这也是默认的 ServiceType
    • NodePort:通过每个节点上的 IP 和静态端口(NodePort)暴露服务。 NodePort 服务会路由到自动创建的 ClusterIP 服务。 通过请求 <节点 IP>:<节点端口>,你可以从集群的外部访问一个 NodePort 服务。
    • LoadBalancer:使用云提供商的负载均衡器向外部暴露服务。 外部负载均衡器可以将流量路由到自动创建的 NodePort 服务和 ClusterIP 服务上。

     在之前常用的对外暴露端口使用的就是NodePort:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
    spec:
      type: NodePort
      selector:
        app: MyApp
      ports:
          # 默认情况下,为了方便起见,`targetPort` 被设置为与 `port` 字段相同的值。
        - port: 80
          targetPort: 80
          # 可选字段
          # 默认情况下,为了方便起见,Kubernetes 控制平面会从某个范围内分配一个端口号(默认:30000-32767)
          nodePort: 30007
    作者:iveBoy
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    jetbrains全家桶激活
    pytesseract
    CNN
    支持向量机SVM
    梯度下降法和随机梯度下降法
    多分类问题multicalss classification
    线性模型
    Noise,Error,wighted pocket Algorithm
    VC Dimension -衡量模型与样本的复杂度
    边界函数Bounding Function(成长函数的上界)
  • 原文地址:https://www.cnblogs.com/shenjianping/p/14902469.html
Copyright © 2020-2023  润新知