k8s Service

2021-11-06  本文已影响0人  quanCN

简介

Service是Kubernetes实现微服务架构的核心概念
通过Servic的定义,能够为客户端应用提供稳定的访问地址(域名或IP地址)和负载均衡功能,以及屏蔽后端EndPoint的变化,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载均衡分发到后端的各个容器应用上

yaml

apiVersion: v1
kind: Service
#元数据
metadata:
  #Service名称
  name: string
  #命名空间,不指定时默认为default命名空间
  namespace: string
  #自定义标签属性列表  
  labels:   
    - name: string
  #自定义注解属性列表  
  annotations:
    - name: string
#详细描述 
spec:
  #定义 NodePorts 是否会自动分配给 LoadBalancer 类型的服务,默认值为“真”
  allocateLoadBalancerNodePorts: bool
  #ClusterIP是分配给此服务的IP地址列表,通常随机分配,当为None时为headless service(无头服务)
  clusterIP: string
  #ClusterIPs 是分配给此服务的IP地址列表,通常随机分配
  clusterIPs: []string
  #externalIPs是一个 IP地址列表,集群中的节点也将接受此服务的流量。这些IP不是由Kubernetes管理的,用户负责确保流量到达具有此 IP 的节点
  externalIPs: []string
  #当type=ExternalName时,将服务映射到 DNS 名称
  externalName: string
  #externalTrafficPolicy 表示此服务是否希望路由外部到节点本地或集群范围端点的流量 Local/Cluster
  externalTrafficPolicy: string
  #healthCheckNodePort 指定服务的健康检查节点端口。这仅适用于类型设置为 LoadBalancer 和 externalTrafficPolicy 设置为本地。
  healthCheckNodePort: integer
  #InternalTrafficPolicy 指定集群内部流量是否应该仅路由到所有端点或节点本地端点 Local/Cluster
  internalTrafficPolicy: string
  ipFamilies: []string
  ipFamilyPolicy: string
  #type=LoadBalancer,指定标签样式标识符
  loadBalancerClass: string
  #type=LoadBalancer,指定ip
  loadBalancerIP: string
  #通过云供应商负载均衡器将被限制在指定的客户端 IP
  loadBalancerSourceRanges: []string
  #Label Selector配置,选择具有指定label标签的pod作为管理范围
  selector: []
  #service的类型,指定service的访问方式,默认ClusterIP
  type: string
  #是否支持session,可选值为ClietIP,默认值为空
  #ClientIP表示将同一个客户端(根据客户端IP地址决定)的访问请求都转发到同一个后端Pod
  sessionAffinity: string
  #service需要暴露的端口列表  
  ports:  
    #端口名称
  - name: string
    #端口协议,支持TCP或UDP,默认TCP
    protocol: string
    #服务监听的端口号
    port: integer
    #需要转发到后端的端口号
    targetPort: integer
    #当type=NodePort时,指定映射到物理机的端口号
    nodePort: integer
status:  
  #当前服务状态
  conditions: 
  - lastTransitionTime: string
    message: string
    observedGeneration: integer
    reason: string
    status: string
    type: string
  #外部负载均衡器
  loadBalancer:  
    #外部负载均衡器 
    ingress:
      #主机名是为基于DNS的负载均衡器入口点设置的
    - hostname: string
      #外部负载均衡器的IP地址
      ip: string
      #外部负载均衡器的机主机
      hostname: string

Service的负载均衡机制

从服务IP到后端Pod的负载均衡机制,则是由每个Node上的kube-proxy负责实现的

kube-proxy的代理模式

上一篇 下一篇

猜你喜欢

热点阅读