醋醋百科网

Good Luck To You!

Kubernetes中Service的4种类型

总览

Kubernetes中Service一共包含4种类型,ClusterIP、NodePort、LoadBalancer、ExternalName。Service配置文件中Type定义了服务如何暴露给外部。

1.ClusterIP-集群IP

  • ClusterIP 是默认且最常见的服务类型。
  • Kubernetes 将为 ClusterIP类型的服务分配一个集群内部 IP 地址,只能在集群内访问。
  • 不能从集群外部向服务发出请求。
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
    - name: nginx
      port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: nginx
  type: ClusterIP

2.NodePort-节点端口

  • NodePort类型的Service是 ClusterIP类型Service的扩展,自动创建路由到ClusterIP。
  • NodePort类型的Service会在每台节点上开设一个端口,外部流量访问每个节点上的这个端口,将流量导入到该服务。
  • 您可以通过请求 <NodeIP>:<NodePort> 从集群外访问NodePort 服务。
  • NodePort默认30000–32767 范围内。
  • 如果您要手动指定端口,请确保该端口未被使用。
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
    - name: nginx
      port: 80
      protocol: TCP
      targetPort: 80
      nodePort: 300001(可以手动指定)
  selector:
    app: nginx
  type: NodePort

3.LoadBalancer-外部负载均衡器

  • LoadBalancer 服务是 NodePort 服务的扩展。自动创建外部负载均衡器路由到的 NodePort 和 ClusterIP 服务。
  • 使用云提供商的负载均衡器在外部公开服务。
  • 每个云提供商(AWS、Azure、GCP 等)都有自己的本地负载均衡器实现。云提供商将创建一个负载均衡器,然后自动将请求路由到您的 Kubernetes 服务。
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: LoadBalancer
  clusterIP: 10.0.171.145
  loadBalancerIP: 111.111.111.111
  selector:
    app: nginx
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80

4.ExternalName-外部名称

  • ExternalName 类型的服务将服务映射到 DNS 名称,而不是典型的选择器,例如 nginx。
  • 您使用 spec.externalName 参数指定这些服务。
  • 它将服务映射到 externalName 字段的内容(例如 foo.bar.example.com),方法是返回一条 CNAME 记录及其值。
apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  type: ExternalName
  externalName: my.database.example.com
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言