kubectl explain svc.spec.type

ClusterIP

默认
自动分配一个仅 Cluster 内部可以访问的 ip (svc 网段)

spec:
type: ClusterIP
clusterIP: 10.11.0.180
ports:
- port: 80
targetPort: 80
protocol: TCP

headless svc 无头服务

clusterIP: None
svc 创建后不会被分配 cluster IP,而是会以 DNS 记录的方式暴露出它所代理的 Pod

NodePort

在 ClusterIp 基础上为 svc 在每台 node 上绑定一个随机端口, 默认:30000-32767
可以使用 node_ip:port 访问该服务

spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
nodePort: 30080

LoadBalancer

在 NodePort 基础上,借助 cloud provider 创建一个外部负载均衡器
将请求转发到 node_ip:port

Externalname

把集群外部的服务引入到集群内部,在集群内部直接使用
没有任何类型代理被创建

apiVersion: v1
kind: Service
metadata:
name: baidu-en-svc
spec:
type: ExternalName
externalName: www.baidu.com

以 CNAME 对应解析记录