k8s教程(service篇)-资源定义详解

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: k8s教程(service篇)-资源定义详解

01 引言

声明:本文为《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》的读书笔记

ServiceKubernetes实现微服务架构的核心概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到 后端的各个容器应用上,本文主要对Service的资源定义进行详细说明。

02 资源定义详解

通过Service的定义设置的访问地址是DNS域名格式的服务名称,对于客户端应用来说,网络访问方式并没有改变(DNS域名的作用等价于主机名、互联网域名或IP地址)。

Service还提供了负载均衡器功能,将客户端请求负载分发到后端提供具体服务的各个Pod上

Service的YAML格式的定义文件的完整内容如下:

apiVersion: v1 
kind: Service  
metadata:     
  name: string   
  namespace: string   
  labels:
    - name: string
  annotations:
    - name: string
spec:          
  selector:[]     
  type: string
  clusterIP: string
  sessionAffinity:string 
  ports:
  - name: string
    protocol: string
    port: int
    targetPort: int
    nodePort: int
  status:
    loadBalancer:
    ingress:
      ip: string
      hostname: string

属性说明:

属性名称 取值类型 必选 取值说明
version String V1
kind String Service
metadata Object 元数据
metadata.name String Service名称,需符合RFC 1035规范
metadata.namespace String 命名空间,不指定系统时将使用名称为default的命名空间
metadata.labels[] list 自定义标签属性列表
metadata.annotation[] list 自定义注解属性列表
spec Object 详细描述
spec.selector[] list Label Selector配置,将选择具有指定Label标签的Pod作为管理范围
spec.type String Service的类型,指定Service的访问方式,默认值为ClusterIP。 ClusterIP:虚拟服务IP地址,该地址用于Kubernetes 集群内部的Pod访问,在Node上kube-proxy通过设置的 iptables规则进行转发. NodePort:使用宿主机的端口,使能够访问各Node的外 部客户端通过Node的P地址和端口号就能访问服务. LoadBalancer:使用外接负载均衡器完成到服务的负载分发,需要在spec.status.loadBalancer字段指定外部负载均 衡器的P地址,同时定义nodePort和clusterIP,用于公有 云环境
spec.clusterIP String 虚拟服务的P地址,当type=ClusterIP时,如果不指定,则系统进行自动分配,也可以手工指定;当type=LoadBalancer 时,需要指定
spec.sessionAffinity String 是否支持Session,可选值为ClientIP,默认值为None。 ClientIP:表示将同一个客户端(根据客户端的IP地址决定) 的访问请求都转发到同一个后端Pod
spec.ports[] list Service端口列表
spec.ports[].name String 端口名称
spec.ports[].protocol String 端口协议,支持TCP和UDP,默认值为TCP
spec.ports[].port int 服务监听的端口号
spec.ports[].targetPort int 需要转发到后端Pod的端口号
spec.ports[].nodePort int 当spec.type=NodePort时,指定映射到宿主机的端口号
Status Object 当spec.type=LoadBalancer时,设置外部负载均衡器的地址,用于公有云环境
status.loadBalancer Object 外部负载均衡器
status.loadBalancer.ingress Object 外部负载均衡器
status.loadBalancer.ingress.ip String 外部负载均衡器的IP地址
status.loadBalancer.ingress.hostname String 外部负载均衡器的主机名

03 文末

本文主要讲解了Service资源类型的定义模板,以及对模板里面属性的解析,希望能帮助到大家,谢谢大家的阅读,本文完!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1天前
|
Kubernetes 监控 API
在k8S中,Metric Service是什么?
在k8S中,Metric Service是什么?
|
1天前
|
Kubernetes Linux 调度
在k8S中,Pod如何实现对节点的资源控制?
在k8S中,Pod如何实现对节点的资源控制?
|
1天前
|
Kubernetes 监控 API
在K8S中,RS资源如何实现升级和回滚?
在K8S中,RS资源如何实现升级和回滚?
|
1天前
|
Kubernetes 负载均衡 网络协议
在k8S中,Headless Service是什么?
在k8S中,Headless Service是什么?
|
1天前
|
Kubernetes 网络协议 应用服务中间件
在K8S中,SVC资源是否支持在K8S集群外部访问?
在K8S中,SVC资源是否支持在K8S集群外部访问?
|
1天前
|
Kubernetes Perl 容器
在k8S中,Service怎么关联Pod的?
在k8S中,Service怎么关联Pod的?
|
1天前
|
数据采集 监控 Kubernetes
在k8S中,kubelet监控Worker节点资源是使用什么组件来实现的?
在k8S中,kubelet监控Worker节点资源是使用什么组件来实现的?
|
1天前
|
Kubernetes 负载均衡 算法
在k8S中,Service分发后端的策略是什么?
在k8S中,Service分发后端的策略是什么?
KUBERNETES04_Service服务ClusterIP、NodePort方式、Ingress域名访问、路径重写、限流操作(五)
KUBERNETES04_Service服务ClusterIP、NodePort方式、Ingress域名访问、路径重写、限流操作(五)
237 0
KUBERNETES04_Service服务ClusterIP、NodePort方式、Ingress域名访问、路径重写、限流操作(五)
KUBERNETES04_Service服务ClusterIP、NodePort方式、Ingress域名访问、路径重写、限流操作(四)
KUBERNETES04_Service服务ClusterIP、NodePort方式、Ingress域名访问、路径重写、限流操作(四)
228 0
KUBERNETES04_Service服务ClusterIP、NodePort方式、Ingress域名访问、路径重写、限流操作(四)

推荐镜像

更多