方法:

1.通过Ingress暴露

2.通过新建负载均衡SVC


通过ingress适用于http协议的暴露,基于7层来实现

负载均衡SVC适用于4层协议的暴露,比如nacos、es、数据库等


以下是我在工作当中的具体实践,现实需求是我们阿里云搭建了一套K8S集群,同时也想尝试阿里云的SAE服务,需要将我们的elasticsearch、redis、nacos进行对外暴露,让SAE也能访问K8S的服务,同时K8S也能访问自身的服务。

1.自己新建一个传统型负载均衡

阿里云如何开放K8S内的SVC给集群外的机器访问_负载均衡

2.进入K8S集群,新建服务,选择负载均衡

阿里云如何开放K8S内的SVC给集群外的机器访问_redis_02

A.类型选择“负载均衡”

B.然后私网访问,如果是对外则选择公网访问

C.使用已有的SLB,注意这里不要新建,否则就不能一个负载均衡暴露多个TCP端口了

D.选择负载均衡实例,这里一定要选择“强制覆盖已有监听”,负责无法添加服务

E.外部流量策略:  这里是local和cluster;  local的好处是可以拿到外部机器的真实IP,但是如果集群内的服务需要通过负载均衡IP则无法访问。cluster则在集群内部和外部都能通过负载均衡IP正常访问,但是无法获取机器的真实IP

G.选择对应的端口进行关联



PS:

开始用的模式是local,结果集群内访问

php74-55d6948f8c-5c2bk:/# curl 172.16.1.84:9200

curl: (7) Failed to connect to 172.16.1.84 port 9200 after 1004 ms: Couldn't connect to server