网站首页 文章专栏 04service.md
04service.md
创建于:2021-07-04 07:51:22 更新于:2024-11-21 13:08:34 羽瀚尘 393

最简配置

apiVersion: v1
kind: Service
metadata:
  name: front-tensorflow
  labels: 
    app: tensorflow
spec:
  ports: 
  - port: 6081
    targetPort: 6081
  selector:
    app: tensorflow
  • spec.selector筛选出app=tensorflow的的pod
  • spec.ports[].targetPort将pod端口暴露在service端口上

用ingress时采用这种配置。

NodePort

apiVersion: v1
kind: Service
metadata:
  name: front-tensorflow
  labels: 
    app: tensorflow
spec:
  ports: 
  - port: 6081
    targetPort: 6081
    nodePort: 30000
  selector: 
    app: tensorflow
  type: NodePort

spec.type指定为NodePort,并定义spec.ports[].nodePort 用节点端口时采用这种配置。

其他

spec.type有以下四个选项

  • ClusterIP(默认) - 在集群中内部IP上暴露服务。此类型使Service只能从集群中访问。
  • NodePort - 通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个 NodePort 服务。
  • LoadBalancer - 使用云提供商的负载均衡器(如果支持),可以向外部暴露服务。外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务。
  • ExternalName - 通过返回 CNAME 和它的值,可以将服务映射到 externalName 字段的内容,没有任何类型代理被创建。这种类型需要v1.7版本或更高版本kube-dnsc才支持。

参考: