ZBLOG

k8s service的定义与基本用法

在 Kubernetes 中,Service 是一种抽象概念,用于定义一组 Pod 并为它们提供访问入口。通过 Service,您可以将多个 Pod 组合成一个逻辑单元,并使用标签选择器来确定哪些 Pod 属于该 Service。

下面是一个简单的 Service 定义示例:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app # 标签选择器,用于确定哪些 Pod 属于该 Service
  ports:
    - name: http
      port: 80 # 外部暴露的端口
      targetPort: 9376 # 绑定的 Pod 端口

在上面的示例中,我们创建了一个名为 my-service 的 Service,并指定了一个标签选择器 app=my-app 来确定哪些 Pod 属于该 Service。此外,我们还指定了一个绑定端口(端口号为 80),并将其绑定到后端 Pod 的某个端口(这里为 9376)。

使用此配置文件部署该服务后,Kubernetes 将自动创建一个负载均衡器,并分配给该服务一个稳定的 IP 地址和 DNS 名称。其他应用程序可以使用这个 IP 地址或 DNS 名称来访问该服务。

需要注意的是,在 Kubernetes 中,Service 可以有不同类型:ClusterIP、NodePort、LoadBalancer 和 ExternalName。每种类型都有不同的用途和配置方式。

下面是一些常见的 Service 使用示例:

  1. ClusterIP Service:将一组 Pod 组成一个逻辑单元,并在集群内部提供访问入口。
apiVersion: v1
kind: Service
metadata:
  name: my-service-clusterip
spec:
  selector:
    app: my-app # 标签选择器,用于确定哪些 Pod 属于该 Service
  ports:
    - name: http
      port: 80 # 外部暴露的端口
      targetPort: 9376 # 绑定的 Pod 端口
  1. NodePort Service:除了提供 ClusterIP Service 的功能外,还可以在每个节点上绑定一个静态端口号,从而允许外部流量进入 Kubernetes 集群。
apiVersion: v1
kind: Service
metadata:
  name: my-service-nodeport
spec:
  selector:
    app: my-app # 标签选择器,用于确定哪些 Pod 属于该 Service
  ports:
    - name: http
      port: 80 # 外部暴露的端口(在所有节点上都会监听此端口)
      targetPort: 9376 # 绑定的 Pod 端口(Pod 内容器监听此端口)
      nodePort: 30001 # 在每个节点上绑定的静态端口号(范围为:30000-32767)
  1. LoadBalancer Service:除了提供 NodePort Service 的功能外,还可以使用云供应商提供的负载均衡器来平衡流量,从而允许外部流量进入 Kubernetes 集群。
apiVersion: v1
kind: Service
metadata:
  name: my-service-loadbalancer
spec:
  selector:
    app: my-app # 标签选择器,用于确定哪些 Pod 属于该 Service
  ports:
    - name: http
      port: 80 # 外部暴露的端口(在所有节点上都会监听此端口)
      targetPort: 9376 # 绑定的 Pod 端口(Pod 内容器监听此端口)
  type: LoadBalancer # 指定为 LoadBalancer 类型的 Service
  1. ExternalName Service:将一个服务映射到集群外部的另一个服务或域名,从而允许集群内部使用相同的 DNS 名称来访问集群外部服务。
apiVersion: v1
kind: Service
metadata:
  name: my-service-externalname
spec:
  externalName: some.api.com # 将该 Service 映射到 some.api.com 域名或 IP 地址上

这里仅列出了一些常见的示例。如果您想了解更多关于 Kubernetes 中 Service 的定义和用法,请参考官方文档:https://kubernetes.io/docs/concepts/services-networking/service/

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=1528

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?