Files
k8s-note/k8s知识笔记/三、serveice/2、clusterip类型.conf
2025-10-16 23:17:27 +08:00

56 lines
2.2 KiB
Plaintext

一、集群内部通信
1.1、ClusterIP类型的Service
ClusterIP是Kubernetes中Service的默认类型。
它为Service分配一个虚拟IP地址, 这个IP地址只能在集群内部访问。
ClusterIP类型的Service通常用于集群内部的服务发现和负载均衡。
例如, 假设有一个名为my-service的Service, 它的ClusterIP地址 是10.96.0.1。集群内的Pod可以通过访问这个IP地址来与my-service通信, 而不需要知道my-service背后的Pod的具体IP地址。
1.2、svc选中pod的逻辑
pod 是处于就绪状态
pod 的标签和 svc 的 selector 匹配(是serviced的标签子集)
pod 与 svc 在同一命名空间下
1.4 svc在集群内会被解析成一个集群内域名, cluster.local是默认域名:
<service-name>.<namespace>.svc.cluster.local
例如, 如果有一个名为my-service的Service, 它位于default命名空间下, 那么它的集群内域名就是my-service.default.svc.cluster.local
集群内的Pod可以通过这个域名来访问my-service
1.5、internalTrafficPolicy
ClusterIP类型的Service有一个internalTrafficPolicy字段, 用于控制集群内部流量的路由策略。
该字段有两个可选值: Local和Cluster。
Local: 只将流量路由到与请求源节点相同节点上的Pod。这种策略可以减少跨节点的网络延迟, 但可能导致某些节点上的Pod过载, 而其他节点上的Pod闲置。
Cluster: 将流量路由到集群中所有匹配的Pod, 无论它们位于哪个节点上。这种策略可以实现更均匀的负载分布, 但可能增加跨节点的网络延迟。
1.6、示例配置文件
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: default
spec:
type: ClusterIP
clusterIP: 10.96.0.1
ports:
- port: 80 # Service暴露的端口
targetPort: 8080 # 后端Pod监听的端口
selector:
app: my-app # 选择标签为app=my-app的Pod作为后端
二、命令行示例
# 基于文件创建Service
kubectl apply -f my-service.yaml
# 试运行并生成yaml文件
kubectl create svc clusterip myapp --tcp=80:80 --dry-run -o yaml > myapp-clusterip.yaml