目录
一、Service基本概念
1、Pod的特征
- Pod等资源的概念
2.解决pod进行如此多变化时的解决方案
2、Service
-
Kubernetes Service 定义了这样一种抽象:
-
Service的实现类型
3、Service模型
4、Endpoint Controller
5、Kube-proxy iptables
6、Kube-proxy IPVS
二、服务发现
1、创建后端Deployment
2、创建Service
3、整理文件并创建
4、查看Service
- 查看service简明信息,可以获取service提供服务的ip地址和端口
2.测试service是否正常提供服务
- 使用describe命令可以查看service详细信息
5、创建可供外部访问的Service
三、集群中的DNS
1、CoreDNS
2、查看服务的完整域名
3、DNS记录
四、Headless Service(无头服务)
1、Headless Service
2、创建Headless Service
3、使用Headless Service
1.查看Headless Service的信息,可以看到没有IP地址
2.使用的时候利用DNS功能,通过访问“Headless-svc”或“headless-svc.default”来访问服务
一、Service基本概念 1、Pod的特征 1. Pod等资源的概念
①.Pod有自己独立的IP
②.Pod可以被创建,销毁
③.当扩容时,pod的数量会发生变更(可以扩、缩容)
④.当pod故障时,replicaset会创建新的pod
2.解决pod进行如此多变化时的解决方案
一组pod对应一个服务,通过服务访问后端
2、Service 1. Kubernetes Service 定义了这样一种抽象:
逻辑上的一组Pod,一种可以访问它们的策略 — — 通常称为微服务。
这一组Pod能够被Service访问到,通常是通过Label Selector 实现的
- Service的实现类型
ClusterIP 提供一个集群内部的虚拟IP地址以供Pod访问(默认模式),只能供内部使用
NodePort 在Node上打开一个端口以供外部访问
LoadBalancer 通过外部的负载均衡器来访问
官网(如何发布服务): 服务(Service) | Kubernetes
3、Service模型
每个节点都有一个Kube-Proxy服务,负责iptables(路由);
Endpoint Controller负责映射关系,通过其知道内部IP地址,内部IP映射到服务
最终通过Kube-proxy组件进行工作
4、Endpoint Controller
1.负责生成和维护所有endpoint对象的控制器
2.负责监听service和对应pod的变化
3.监听到service被删除,则删除和该service同名的endpoint对象
4.监听到新的service被创建,
则根据新建service信息获取相关pod列表,然后创建对应endpoint对象
5.监听到service被更新,
则根据更新后的service信息获取相关pod列表,然后更新对应endpoint对象
6.监听到pod事件,则更新对应的service的endpoint对象,将pod IP 记录到endpoint中
endpoint其实就是个列表
5、Kube-proxy iptables
集群内部的Client可以访问服务IP,通过服务IP可以找到集群内部的Pod
6、Kube-proxy IPVS
从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables实现方式类似,但是采用的hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,