K8S Services解释
· 阅读需 2 分钟
从我个人角度来看,service 是 k8s 最容易出问题的地方。网络不通是最常见的问题,想要排查网络,就要对 service 有一个深入的理解。
在 Kubernetes 中,Service
是一种抽象,定义了一组逻辑上相同的 Pod,并提供了稳定的网络服务入口。Service
有三种主要类型,分别是:
- ClusterIP(默认类型)
-
功能 : 该类型的服务只在 Kubernetes 集群内部可访问。它会为 Service 分配一个虚拟 IP 地址(ClusterIP),可以被集群内的其他服务通过该 IP 访问。
-
用途 : 适用于集群内部的服务通信,不暴露给外部。
-
示例应用场景 : 微服务之间相互调用。
- NodePort
-
功能 : 将 Service 暴露为每个节点(Node)上的静态端口(30000-32767),通过节点的 IP 地址和该端口,外部客户端可以访问服务。它仍然会分配一个
ClusterIP
,所以集群内部也能访问该服务。 -
用途 : 外部客户端通过集群的任意节点 IP 和指定的端口访问服务。
-
示例应用场景 : 简单的外部访问,用于开发或测试环境。
- LoadBalancer
等于是在 nodePort service 之外又套了一个 loadBalancer,意味着创建了 loadBalancer,同时也创建了 nodePort 和 ClusterIP。
在生产环境中,出于安全考虑,应该用 Ingress 或者 loadBalancer service 处理外部请求,而不是 nodePort。