一、集群内部通信 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是默认域名: ..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