前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日一个云原生小技巧 #12】Service Types

【每日一个云原生小技巧 #12】Service Types

作者头像
郭旭东
发布2023-11-01 21:10:23
1320
发布2023-11-01 21:10:23
举报
文章被收录于专栏:云原生工具箱云原生工具箱

Kubernetes Service 是一个抽象层,定义了如何访问 Pod。Service 提供了一个固定的 IP 地址和 DNS 名称,这样即使 Pod IP 改变,Service 也能保证能够连通。

以下是 k8s 中的四种 Service Types:

  • ClusterIP: 默认的 Service 类型。为 Service 分配一个内部 IP,只有在集群内部可以访问该 Service。 使用场景: 当你只想在集群内部暴露服务时使用。
  • NodePort: 在每个节点上为 Service 打开一个端口,这样 Service 可以使用 <NodeIP>:<NodePort> 来外部访问。 使用场景: 当你想要从集群外部访问服务,但不想使用 LoadBalancer 或其他方法时。
  • LoadBalancer: 为 Service 提供一个外部可访问的 IP 地址,并自动配置 cloud provider 的负载均衡器。 使用场景: 在云提供商环境中,当你想让外部流量进入集群时使用。
  • ExternalName: 将 Service 映射到一个 externalName 字段的内容(例如 my-service.my-namespace.svc.cluster.local 映射到 example.com),但不提供任何其他方法。 使用场景: 当你想将 Service 指向一个外部服务时。

使用技巧

  • 当使用 NodePort 时,你可以指定一个端口号,或者让 k8s 自动生成。
  • 当你不需要固定的外部 IP 地址时,可以先使用 NodePort,然后再迁移到 LoadBalancer
  • 使用 ExternalName 时,确保应用可以解析外部域名。

使用案例

ClusterIP

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: my-clusterip-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

NodePort

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30080

LoadBalancer

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: my-loadbalancer-service
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

ExternalName

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: my-externalname-service
spec:
  type: ExternalName
  externalName: example.com

对于每个 Service 类型,你都可以在 spec.selector 字段中定义哪些 Pod 被选为该 Service 的后端,以及 spec.ports 字段定义 Service 的端口和相应的 Pod 的端口。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用技巧
  • 使用案例
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档