K8S入门到精通06-基于Rinted的Service负载均衡

Service提供负载均衡实现

K8S入门到精通06-基于Rinted的Service负载均衡_第1张图片

这里我们直接使用Service的负载均衡,不再将端口直接暴露在宿主机节点上,集群内部通过k8s内部网络相互访问。由tomcat-service这个特殊的pod来实现流量转发与负载均衡。

修改tomcat-service.yml如下:

apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
  labels:
    app: tomcat-service # Service也是一个特殊的pod,需要设置lables
spec:
#  type: NodePort # Service类型
  selector:
    app: tomcat-cluster # 指定绑定的pod
  ports:
  - port: 8000 # Service在k8s集群内部暴露的端口
    targetPort: 8080 # 被映射的容器暴露端口
#    nodePort: 32500 # 集群每个Node节点上对外暴露的端口

仅需注释如下两行内容

#  type: NodePort # Service类型
#    nodePort: 32500 # 集群每个Node节点上对外暴露的端口

变更service

kubectl apply -f tomcat-service.yml

在NFS共享目录中增加测试index.jsp,验证负载均衡效果

# 在Master节点(NFS Server)中执行如下命令
mkdir /data/www-data/test/
echo "IP:<%=request.getLocalAddr()%>" > /data/www-data/test/index.jsp
# 查看Service内部IP
kubectl get service tomcat-service
# 使用curl测试,10.103.113.6为上一步中获取的ClusterIP
curl 10.103.113.6:8000/test/index.jsp
# 返回处理请求的pod容器的ip
# IP:10.244.1.17

端口转发工具-Rinetd

上一步中10.*段的IP为K8S集群内部通信使用的IP,如何将这些IP提供的端口映射到外部呢?

  • Rinetd是Linux操作系统中为重定向传输控制协议工具
  • 可将源IP端口数据转发至目标IP端口
  • 在Kubernetes中用于将service服务对外暴露

rinted安装

rinted源码无法从官网下载,资源以事先准备好

这里我们使用Master节点作为端口转发宿主机,所有rinted安装在Master节点(192.168.0.31)上,以下命令均在该节点执行。

# 解压rinted源码
tar -zxf rinetd.tar.gz
cd rinetd/
# 修改rinted运行映射的端口范围
sed -i 's/65536/65535/g' rinted.c
# 创建rinted依赖目录
mkdir -p /usr/man/
# 安装C语言编译器
yum install -y gcc
# 编译并安装
make && make install

配置rinted

增加配置文件/etc/rinetd.conf

# 宿主机映射监听的IP+端口(0.0.0.0表示所有IP)、映射目的IP+端口
# 10.103.113.6即tomcat-service使用的ClusterIP
0.0.0.0 8000 10.103.113.6 8000

运行rinted

rinetd -c /etc/rinetd.conf

查看映射情况

使用netstat -nptl可以看到rinetd开启了8000端口

使用如下地址可在浏览器中访问rinted+service提供的服务

http://192.168.0.31:8000/test/index.jsp
K8S入门到精通06-基于Rinted的Service负载均衡_第2张图片

总结

目前我们已经学习了k8s集群对外暴露服务的两种方式

  1. 使用Service提供的NodePort,在每一个Node节点开启端口映射,实现流量的转发
  2. Rinted+Service,使用Rinted设置对外暴露的IP+端口,通过Service实现访问的负载均衡

一般而言,Rinted+Service性能上会略胜一筹,大型集群应用优先考虑选择该种方式。

版权说明

本文章内容为马士兵教育《架构师高级技能kubernetes入门到精通》课程的学习笔记

百度网盘上相关源码资料包 提取码:xdji

你可能感兴趣的:(K8S入门到精通-学习笔记)