
有几种方式可以在外部访问服务:

5.3.1 使用 NodePort 类型的服务
NodePort service 可以让 Kubernetes 在所有节点上保留一个端口, 并将传入的连接转发给 pod.
创建 NodePort 类型的服务
默认情况下 type = ClusterIP, 只能内部访问

查看 NodePort 类型的服务
$ kubectl get svc hello-svc2NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEhello-svc2 NodePort 10.98.169.210 <none> 80:30000/TCP 46s

访问服务的方式:

节点上可能没有被调度 pod.

从某个节点来的外部连接不一定调用该节点的 pod.
更改防火墙规则, 让外部客户端访问我们的 NodePort 服务
云平台的配置.
5.3.2 通过负载均衡器将服务暴露出来

创建 LoadBalance 服务

通过负载均衡器连接服务
查看, EXTERNAL-IP:
$ kubectl get svc hello-lbNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEhello-lb LoadBalancer 10.111.52.50 <pending> 80:30170/TCP 3m17s


注意:

5.3.3 了解外部连接的特性
了解并防止不必要的网络跳数
不使用内部重定向 (该节点没有指定 pod)
- spec.externalTrafficPolicy 字段
- 没有指定 pod 的节点, 该连接被挂起


记住客户端 IP 是不记录的
- 源网络地址转换 (SNAT)
- local 策略可以保留客户端 IP
