k8s 三种 Service - 面试宝典

举报
皮牙子抓饭 发表于 2023/08/16 09:29:14 2023/08/16
【摘要】 在Kubernetes中,有三种类型的Service用于暴露应用程序。ClusterIP: ClusterIP是默认的Service类型。它为在同一Kubernetes集群中的Pod提供一个稳定的虚拟IP地址。通过ClusterIP,可以在集群内部通过这个IP地址访问Service提供的应用程序。这种Service类型适用于集群内部的服务通信。NodePort: NodePort类型的Ser...


在Kubernetes中,有三种类型的Service用于暴露应用程序。

  1. ClusterIP: ClusterIP是默认的Service类型。它为在同一Kubernetes集群中的Pod提供一个稳定的虚拟IP地址。通过ClusterIP,可以在集群内部通过这个IP地址访问Service提供的应用程序。这种Service类型适用于集群内部的服务通信。
  2. NodePort: NodePort类型的Service将在每个节点上绑定一个固定的端口,并将流量转发到后端Pod。这样,可以通过任何节点的IP地址和该固定端口来访问Service。NodePort适用于集群外部的访问,但不适合生产环境,因为端口范围有限。
  3. LoadBalancer: LoadBalancer类型的Service将使用云提供商的负载均衡器来暴露Service。该负载均衡器会动态分配一个外部的IP地址,并将流量转发到后端Pod。这种Service类型适用于公共云环境,可以通过外部IP地址直接访问Service。但是,需要注意的是,LoadBalancer类型的Service只在云提供商支持的情况下才可用。 除了这三种常见的Service类型,Kubernetes还支持其他类型的Service,如ExternalName和Headless Service,它们用于特定的使用场景和需求。

下面是几种Service类型的代码示例:

ClusterIP

yamlCopy codeapiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

NodePort

yamlCopy codeapiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30000

LoadBalancer

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

这些示例中,​​metadata.name​​指定了Service的名称,​​spec.selector​​指定了要暴露的Pod的标签选择器,​​spec.ports​​定义了Service监听的端口和要转发到的Pod的端口。在NodePort和LoadBalancer的示例中,​​spec.type​​指定了Service的类型。NodePort还需要指定​​spec.ports.nodePort​​来指定节点上的端口号。LoadBalancer类型的Service会自动创建云提供商的负载均衡器,并分配一个外部的IP地址。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。