Service文件实例

ClusterIP

通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的 ServiceType。
需要启动 Kubernetes proxy 服务才能使外部可以访问。

apiVersion: v1
kind: Service
metadata:  
  name: demo-service
selector:    
  app: nginx-pod
spec:
  type: ClusterIP
  ports:  
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
  - name: https
    port: 443
    targetPort: 443
    protocol: TCP

NodePort

在所有节点(虚拟机)上开放一个特定端口,任何发送到该端口的流量都被转发到对应服务。
通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求[NodeIP]:[NodePort],可以从集群的外部访问一个 NodePort 服务。

apiVersion: v1
kind: Service
metadata:
  name: demo-service
  namespace: demo-space
  labels:
    name: demo-service
spec:
  type: NodePort
  selector:
    app: nginx-pod
  ports:
    - protocol: TCP
      port: 8081       # k8s集群通讯端口
      targetPort: 80   # 容器暴露的端口
      nodePort: 30080  # 所有节点主机对外暴露的端口

LoadBalancer

使用云提供商的负载局衡器,可以向外部暴露服务。外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务

apiVersion: v1
kind: Service
metadata:
  name: demo-service
  namespace: demo-space
  labels:
    name: demo-service
spec:
  type: LoadBalancer
  selector:
    app: nginx-pod
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
  clusterIP: 10.0.171.239
  loadBalancerIP: 78.11.24.19
status:
  loadBalancer:
    ingress:
      - ip: 146.148.47.155

外部 IP

如果外部的 IP 路由到集群中一个或多个 Node 上,Kubernetes Service 会被暴露给这些 externalIPs。 通过外部 IP(作为目的 IP 地址)进入到集群,打到 Service 的端口上的流量,将会被路由到 Service 的 Endpoint 上。 externalIPs 不会被 Kubernetes 管理,它属于集群管理员的职责范畴。

apiVersion: v1
kind: Service
metadata:
  name: demo-service
  namespace: demo-space
  labels:
    name: demo-service
spec:
  selector:
    app: nginx-pod
  ports:
    - protocol: TCP
      port: 8081
      targetPort: 80
  externalIPs:
    - 192.168.1.50
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值