kubectl expose
# 创建服务
# 为一个 Pod 创建服务
kubectl expose pod <Pod名称> --name <服务名称> --port=<服务端口> --target-port=<容器端口>
1
# 为一个 Deployment 创建服务
kubectl expose deployment <控制器名称> --name <服务名称> --port=<服务端口> --target-port=<容器端口>
# 示例
kubectl expose deployment web --name svc1 --port=80 --target-port=80
1
2
3
4
2
3
4
# 参数选项
# --name选项
在创建服务时指定服务的名称,如果不指定该选项,则服务的名称默认与 控制器/Pod 的相同。
# --port选项
服务暴露的端口,可以根据需要随意指定。
# --target-port选项
容器开放的端口,需要根据容器的情况指定对应的端口,不能随意指定。
# --selector选项
自定义 service 根据哪些标签来追踪 Pod(和控制器类似)。被追踪的 Pod 必须同时具有全部的追踪标签(满足所有标签条件),而不是只满足其中一个标签。
kubectl expose deploy <控制器名称> --selector <键>=<值>
# 多个标签之间通过 逗号 来分隔
kubectl expose deploy <控制器名称> --selector <键1>=<值1>,<键2>=<值2>,...
1
2
3
4
2
3
4
# --type选项
指定服务的类型。
ClusterIP
:默认类型,为 svc 提供一个内网 IP 地址,直接通过地址访问 svc。NodePort
:将 svc 映射到节点物理机之上。当外部主机请求物理机时,物理机 转发请求给 服务,服务 再转发请求给 Pod。LoadBalancer
:将 svc 部署为一个负载均衡器,每个 svc 都会从地址池中获得一个单独的新 IP 地址。(该选项一般适用于 具有外部负载均衡器的 云提供商)
# 会将 Pod 的 Web 服务映射到物理机的 80 端口上
kubectl expose pod nginx --port=80 --type=NodePort
1
2
2
编辑 (opens new window)