Kubernetes服务基础
Kubernetes服务基础
o打
# 查看 |
服务
服务的类型
- ClusterIP: 分配一个集群内部的ip地址,使得服务只能集群内部访问
- NodePort: 在每个节点上分配一个端口,是的可以外部访问服务
- LoadBalancer: 使用负载均衡来暴露服务,让服务加入后端池
- ExternalName: 通过返回的CNAME记录来映射另一个外部的DNS名称
ClusterIP
用于定义一组Pod的逻辑集合,并且可以通过一个稳定的IP地址和端口进行访问。ClusterIP
服务类型会在集群内部分配一个虚拟IP地址,这个IP地址只能在集群内部访问,不能从外部直接访问。
工作原理
- 定义Service: 当你创建一个
ClusterIP
类型的Service时,Kubernetes会为这个Service分配一个虚拟IP地址(Cluster IP)。 - 选择器(Selector): Service通过标签选择器(Label Selector)来选择一组Pod,这些Pod将成为这个Service的后端。
- Endpoints: Kubernetes会自动创建一个Endpoints对象,记录所有符合选择器条件的Pod的IP地址和端口。
- 内部负载均衡: 当集群内的其他Pod或服务通过Cluster IP访问这个Service时,Kubernetes会自动将请求负载均衡到后端的Pod上。
yaml参考
kind: Service |
NodePort
工作原理
- 定义Service: 当你创建一个
NodePort
类型的Service时,Kubernetes会在每个节点上分配一个端口(范围通常是30000-32767)。 - 选择器(Selector): Service通过标签选择器(Label Selector)来选择一组Pod,这些Pod将成为这个Service的后端。
- Endpoints: Kubernetes会自动创建一个Endpoints对象,记录所有符合选择器条件的Pod的IP地址和端口。
- 节点端口(NodePort): Kubernetes会在每个节点上开放一个指定的端口,并将这个端口的流量转发到Service的Cluster IP,然后再负载均衡到后端的Pod上。
yaml参考
LoadBalancer
ps:这里的LoadBalancer和云上的不同,是为了解决nodeport不清晰问题。
外部流量策略
- cluster
- 把流量分配给所有集群中所有节点的可用实例上
- 能够做到全局分配和高利用,但是可能会造成比较高的延迟
- 场景:适合需要整体稳定可用的
- local
- 优先把流量分给同一节点或同一区域的可用实例上
- 能够低延迟访问服务,本地优先
- 场景:适合游戏或者视频流媒体
yaml参考
kind: Service |
ExternalName
工作原理
- 定义Service: 当你创建一个
ExternalName
类型的Service时,你需要指定一个外部的DNS名称。 - DNS解析: Kubernetes的DNS服务会为这个Service创建一个CNAME记录,将Service名称解析为指定的外部DNS名称。
- 访问外部服务: 集群内的Pod可以通过Service名称访问外部的服务,Kubernetes的DNS服务会将这个名称解析为外部的DNS名称
yaml参考
不许参考,懒得cv了都基本一样就其他字段和type不同。
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Kalyan的小书房!
評論