集群外部如何访问pod或service

245 阅读1分钟

NodePort

通过设置NodePort映射到宿主机(物理机/VM),同时设置Service的类型为NodePort,每个端口只提供一种服务,如果节点的IP地址发生变化,需要处理这种情况。

apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  type: NodePort
  selector:
    app: myapp
  ports:
    - port: 80
      targetPort: 80
      # 默认情况下,Kubernetes会从某个范围内分配一个端口号(30000-32767)
      nodePort: 30007

LoadBalancer

使用支持外部负载均衡器的云提供商的服务是,设置‘type’为‘LoadBalancer’,将为Service提供负载均衡器。将会生成一个IP地址,所有流量都会转发到指定的服务。每一个用LoadBalancer暴露的服务都会有他自己的IP地址,且每一个用到的LoadBalancer都需要付费。

apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  selector:
    app: myapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9377
  clusterIP: 10.0.173.135
  loadBalancerIP: 78.179.78.45
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
      - ip: 100.101.11.124

参考:kubernetes.io/zh/docs/con…