k8s的service类型有哪些类型?有什么区别?
在 Kubernetes 中,Service 是一种抽象的概念,用于将客户端请求路由到一组具有相似的功能的 Pod。Service 需要指定类型来描述从 Pod 到客户端的连接方式。
查看创建service的创建命令:
kubectl create service -h
有一下提示:
可以看到有四种类型。
clusterip Create a ClusterIP service externalname Create an ExternalName service loadbalancer Create a LoadBalancer service nodeport Create a NodePort service
- ClusterIP
ClusterIP 是默认的 Service 类型。它将创建一个虚拟的 IP 地址,用于连接客户端和 Pod。这个 IP 地址只能在集群内部使用,无法从集群外访问。这种类型通常用于后端服务,如数据库或缓存服务。
- NodePort
NodePort 允许从集群外部访问 Service,通过将提供的端口号映射到 Pod 的 IP 地址上,同时也会将该端口暴露到集群节点的 IP 地址上。这种类型通常用于开发和测试,不建议在生产环境中使用。
- LoadBalancer
LoadBalancer 可以在云环境中自动创建外部负载均衡器,并将客户端请求路由到 Pod。该类型的 Service 通常用于公共云或私有云环境中,可以将流量平衡到多个集群节点上,从而提高服务的可靠性和可用性。这种服务直接可以将端口映射到宿主机,直接使用外部网络访问。
- ExternalName
ExternalName Service 允许 Service 对外暴露一个外部名称,这个名称可以被解析为外部服务的 DNS 名称。该类型的 Service 不会在集群中创建任何负载均衡器或 IP,而是将请求直接转发到指定的外部服务