1.Service定义
官方文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/
Service是用于一组提供服务的pod抽象一个稳定的网络访问地址,是Kubernetes实现微服务的核心概念,可以为一组具有相同功能的pod提供一个统一的入口地址,并将请求负载分发到后端的各个容器上面。
#service的完整yaml文件如下
apiVersion: v1 // Required
kind: Service // Required
metadata: // Required
name: string // Required
namespace: string // Required
labels:
- name: string
annotations:
- name: string
spec: // Required
selector: [] // Required
type: string // Required
clusterIP: string
sessionAffinity: string
ports:
- name: string
protocol: string
port: int
targetPort: int
nodePort: int
status:
loadBalancer:
ingress:
ip: string
hostname: string
属性名称 | 取值类型 | 是否必选 | 取值说明 |
version | string | Required | v1 |
kind | string | Required | Service |
metadata | object | Required | 元数据 |
metadata.name | string | Required | service名称 |
metadata.namespace | string | Required | 命名空间,不指定默认用default的命名空间 |
metadata.labels[] | list | 自定义标签属性列表 | |
metadata.annotations[] | list | 自定义注解属性列表 | |
spec | object | Required | 详细描述 |
spec.selector[] | list | Required | Label Selector配置,将选择具有指定Label标签的Pod作为管理范围 |
spec.type | string | Required | Service的类型,指定Service的访问方式,默认值为 ClusterIP.(1)ClusterIP : 虚拟服务 IP 地址,该地址用于 Kubernetes集群内部的 Pod 访问 , 在 Node 上 kubc-proxy 通过设置的iptables 规则进行转发 . (2) NodePort: 使用宿主机的端口,使能够访问各 Node 的外部客户端通过 Node 的了地址和端口号就能访问服务. (3) LoadBalancer, 使用外接负载均衡器完成到服务的负载分发,需要在spec.starus.loadbalancer 字段指定外部负载均衡器的 IP 地址,同时定义 nodePort 和 clusterlP, 用于 公有云环境 |
spec.clusterIP | string | 虚拟服务的IP地址,当type=ClusterIP 时,如果不指定,则系统进行自动分配,也可以手工指定:当type=LoadBalancer时,需要指定 | |
spec.sessionAffinity |