nodeport其实也是一种实现方式,但是nodeport是有一些缺陷的:
第一:占用worker主机的port,项目多,团队多,容易port冲突
第二:如果pod没有落到workerA上,但是请求是从workerA发起,当workerA宕机,请求就没法转发。
使用nginx ingress+k8s service去服务发现和负载均衡,算是比较合理的操作。(还是会存在上面第二个问题,需要在集群外的ngxin+keepalive去做高可用)
集群环境需要修改一点东西:
最新版的k8s ingress-nginx默认集群安装的时候是不带tcp和udp配置映射的。需要自己准备。
准备:tcp-services-configmap.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: tcp-services
namespace: kube-system
data:
17000: "default/echoserver:4040" #测试的tcpserver服务名称和对外端口
准备:udp-services-configmap.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: udp-services
namespace: kube-system
通过集群导入yaml功能导入
修改rke2-ingress-nginx-controller的入口参数: