vashon's docs
  • Kubernetes
  • Kubernetes之etcd数据库
  • Kubernetes中pod的创建流程
  • k8s一键部署脚本
  • TKE操作笔记01
  • TKE操作笔记02
  • TKE操作笔记03
  • TKE操作笔记04
  • TKE学习笔记
  • TKE上搭建EFK日志采集系统
  • TKE上搭建prometheus
  • TKE升级node节点版本
  • TKE上部署treafik2
  • k8s之dns解析
  • TKE网络模式之vpc-cni
  • harbor搭建企业docker私有镜像仓库
  • Traefik1.7.17的部署使用
  • TKE中configMap的使用
  • TKE集群中deployment使用vpc-cni模式
  • TKE中使用lb直连获取客户端真实IP
  • TKE上搭建集群Dashboard
  • TKE中在节点上获取容器资源配置
  • TKE挂载COS桶容器目录权限如何设置
  • TKE中挂载文件到CFS子目录
  • TKE上部署metrics-server
  • TKE之初识容器探测器
  • 自制CA证书设置ssl证书
  • TKE上动态部署jenkins-slaves
  • Kubernetes之RBAC权限管理
  • Kubernetes之调度篇
  • Kubectl命令行jsonpath的使用
  • Kubernetes插件之ip-masq-agent
  • linux定位问题常用命令
  • 关于kubernetes垃圾回收那点事
  • Kubernetes在pod中配置hosts解析域名
  • Kubernetes之helm部署使用
  • kubeadm部署k8s
  • TKE使用自建NFS持久化存储
  • 二进制部署k8s
  • TKE上关于postStart和preStop使用
  • DockerFile学习
  • linux常用命令
  • k8s中通过ExternalName访问外部服务副本
  • docker常用命令
  • 搭建Docker私有仓库
  • crictl调试Kubernetes节点
  • 强制删除Terminating的ns
  • kubernetes之StatefulSet控制器
  • kubewatch监控k8s集群资源变更
  • 日志聚合工具Loki
  • 关于kubernetes证书的那点事
  • 如何阅读k8s源码
  • k8s之securityContext
  • Kubernetes之多集群的访问
  • k8s之externaltrafficpolicy保留客户端源ip
  • fluent-bit收集不同业务日志
由 GitBook 提供支持
在本页
  • Deployment使用lb直连
  • StatefulSet使用lb直连

这有帮助吗?

TKE中使用lb直连获取客户端真实IP

上一页TKE集群中deployment使用vpc-cni模式下一页TKE上搭建集群Dashboard

最后更新于4年前

这有帮助吗?

我们在使用TKE的过程中会遇到一个这样的场景,就是我在服务端想获取到有哪些客户端在访问我,并且获取到客户端的真实ip。但是在k8s集群中经过多次的网络的转发,一般是无法获取到客户端真实ip。

为了满足这个常见TKE这边提供了lb直连pod的方式来获取客户端真实的ip,其实tke中能够实现这个方案的主要还是基于在vpc-cni的网络模式下实现的,因为vpc-cni模式可以使pod处于和node节点,vpc同一个网络下,而lb也是在vpc的网络中,因此这边lb就可以直接将请求转发到pod上,下面我们来说一下如何在tke中使用这种模式。

这边还是分为2种类型的工作负载来进行实践操作。

Deployment使用lb直连

一般我们创建deploy类型的pod,关联创建svc的时候是无法选择直连lb的类型的,因为这边直连需要pod选择vpc-cni网络模式才可以,我们这边先手动创建一个正常的deployement,再去手动修改svc和pod的网络模式即可

我们这里在控制台创建了一个pod

我们可以测试一下非直连的pod,通过10.168.1.5这个机器上发起访问,发现pod日志并没有对应的客户端ip信息

下面修改对应的svc类型为直连模式,勾选这个采用负载均衡直连pod的模式

修改下对应的pod为vpc-cni网络模式,在pod中加上参数

annotations:
        tke.cloud.tencent.com/networks: tke-route-eni

现在pod的网络模式已经是vpc-cni了,并且svc也是直连了,下面我们来访问下,看日志能否看到client的ip

经过测试是可以获取到客户端的ip的。

StatefulSet使用lb直连

StatefulSet因为支持在界面创建vpc-cni的网路模式,所以我们只需要在控制台配置就行。

我们不选择vpc-cni模式是没有lb直连选项的

勾选了vpc-cni模式才会出现lb直连选项,所以我们需要在创建的时候选择vpc-cni,并选择lb直连

下面我们来测试下创建好的sts的直连nginx服务

经过测试,这这边创建好的sts类型的nginx的pod也可以获取到客户端的真实ip

upload-image
upload-image
upload-image
upload-image
upload-image
upload-image
upload-image
upload-image
upload-image
upload-image
upload-image
upload-image
upload-image