让Rancher支持上的k8s支持TCP转发

k8s默认只支持http协议转发,最近公司有个项目是基于TCP协议的,为了上其在k8s上顺利的对外提供服务因此这里需要对k8s进行一些设置。

网上找到一些理论介绍:

由于我这里是采用rancher部署的k8s所以文章中提到的一些操作不太一样,但是理论知识都在上面了。具体操作如下:

  • 查看ingress-nginx-controller是否开启了 tcp-serverudp-server
kubectl -n ingress-nginx edit daemonsets.apps nginx-ingress-controller

在这里插入图片描述

如果没有上图标记的配置则需要自行加上!!好在rancher默认已经有这两个配置项,我们只需要确认一下即可。

- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
  • 定义configmap
# 生成yaml文件,由于我这里是用Deployment进行的项目管理,所有实际上这个tcp-services.yaml文件会被嵌入到Deployment.yml文件中去。
cat >tcp-services.yaml<<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  5195: "tfxing-test/tfxing-socket:5195"
  # 格式为<ingress-controller-svc-port>:"<namespace>/<service-name>:<port>"。
  # 配置的意思是tfxing-test命名空间下的5195端口映射到ingress-controller service的5195端口,即可通过ingress-controller的service ip加5195端口访问到实际的服务
EOF

# 查看集群中的内容
kubectl -n ingress-nginx edit cm tcp-services

在这里插入图片描述

  • 暴露端口
kubectl -n ingress-nginx edit daemonsets.apps nginx-ingress-controller

在这里插入图片描述

  • 设置流量转发规则
kubectl -n ingress-nginx edit service ingress-nginx-controller-admission

在这里插入图片描述

经过以上操作等待ingress-nginx-controller 配置完成既可以通过集群内的任意宿主机IP地址就可以访问5195端口了!

上面的配置如果是纯K8S操作的话还是比较繁琐负载的,稍不注意可能会导致整个集群出问题。好在我们是用rancher对k8s进行管理,所以以上操作都可以在图像界面中完成。


接下来将以截图的形式进行展示:

  • 确认是否开启tcp、udp支持

在这里插入图片描述

  • 配置端口暴露

在这里插入图片描述

  • 配置流量转发

在这里插入图片描述

图像界面的操作也搞定!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐