检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
服务加入Istio后,如何获取客户端真实源IP? 问题现象 服务启用Istio后,访问日志中无法获取到客户端源IP。 解决方案 本文以绑定ELB类型Service的nginx应用为例,详细步骤如下: ELB侧开启获取客户端IP 独享型ELB默认开启源地址透传功能,无需手动开启。
app: nginx type: LoadBalancer 执行以下命令创建服务。 kubectl create -f nginx-elb-svc.yaml 配置验证 登录ELB控制台,查看Service对应的ELB(本示例中名为james)。 单击ELB名称,并切换至“监控”,可以看到ELB的连接数为0。
负载均衡器基础属性 负载均衡器类型 路由对接的负载均衡器类型,支持对接共享型ELB实例和独享型ELB实例,并且支持自动创建ELB实例 参数名 取值范围 默认值 是否允许修改 作用范围 k8s annotation: kubernetes.io/elb.class 支持elbv3局点:performance
负载均衡器基础属性 负载均衡器类型 服务对接的负载均衡器类型,支持对接共享型ELB实例和独享型ELB实例,并且支持自动创建ELB实例 参数名 取值范围 默认值 是否允许修改 作用范围 k8s annotation: kubernetes.io/elb.class 支持elbv3局点:performance
为负载均衡类型的Service配置自定义EIP 通过CCE自动创建的带有EIP的ELB,可以通过添加Service的annotation(kubernetes.io/elb.custom-eip-id)完成ELB的EIP的自定义配置。 前提条件 已创建Kubernetes集群,且集群版本满足以下要求:
负载均衡器自动创建配置 自动创建负载均衡器 负载均衡器自动创建配置 参数名 取值范围 默认值 是否允许修改 作用范围 k8s annotation: kubernetes.io/elb.autocreate 结构体json 无 允许 CCE Standard/CCE Turbo
负载均衡器自动创建配置 自动创建负载均衡器 负载均衡器自动创建配置 参数名 取值范围 默认值 是否允许修改 作用范围 k8s annotation: kubernetes.io/elb.autocreate 结构体json 无 允许 CCE Standard/CCE Turbo
访问Prometheus,在“Graph”页面中,查看NGINX Ingress控制器指标。 图3 查看NGINX Ingress控制器监控指标 表1 NGINX Ingress控制器监控指标 指标 指标类型 说明 nginx_ingress_controller_bytes_sent
主要配置ELB相关选项,如"kubernetes.io/elb.class","kubernetes.io/elb.id","kubernetes.io/elb.pass-through" loadBalancerIP 否 String service对接ELB时的ELB IP。
io/elb.class: performance # ELB类型 kubernetes.io/elb.id: 65318265-4f01-4541-a654-fa74e439dfd3 # 已有ELB的ID kubernetes.io/elb.protocol-port:
Turbo集群中: 1. 客户自行安装nginx-ingress的场景,判断nginx-ingress应用的镜像版本是否小于1.2.1 2. 使用CCE提供的nginx-ingress插件,判断插件版本号是否小于等于2.1.0 漏洞修复方案 1. 升级ingress-nginx版本至1.2.1; 2
Nginx Ingress管理 通过控制台创建Nginx Ingress 通过Kubectl命令行创建Nginx Ingress 用于配置Nginx Ingress的注解(Annotations) Nginx Ingress高级配置示例 父主题: 路由(Ingress)
Ingress控制器插件并在重新安装时使用独享型ELB。 Nginx Ingress使用独享型ELB时,默认开启源地址透传功能,无需其他配置即可获取客户端源IP。 Nginx Ingress使用共享型ELB时,获取客户端源IP的操作步骤如下: 以Nginx工作负载为例,未配置源IP访问前,使用以下命令查看访问日志,其
name: nginx annotations: kubernetes.io/elb.id: <your_elb_id> kubernetes.io/elb.class: performance kubernetes.io/elb.session-affinity-mode:
见集群内部无法使用ELB地址访问负载。 集群外无法访问ELB 可能是由于ELB配置异常或后端服务器存在异常,详情请参见集群外无法访问ELB。 ELB配置类 ELB配置被修改 请参见ELB配置为什么会被修改。 ELB的后端被自动删除 请参见服务发布到ELB,ELB的后端为何会被自动删除?。
访问类型:选择负载均衡型Service。 选择器:单击“引用负载标签”,选择上一步中创建的工作负载并单击“确定”。 负载均衡器:必须使用独享型ELB,您可以选择已有的ELB或自动创建新的ELB。 健康检查:开启健康检查(不开启则默认为健康检查成功)。 图1 负载均衡配置 前往ELB控制台
负载均衡器配置:监听器配置 客户端连接空闲超时时间 客户端连接空闲超时时间,在超过keepalive_timeout时长一直没有请求, 负载均衡会暂时中断当前连接,直到下一次请求时重新建立新的连接。 参数名 取值范围 默认值 是否允许修改 作用范围 k8s annotation:
图4 查看日志 步骤三:查看NGINX Ingress控制器插件日志 登录CCE控制台,进入一个已有的集群,在左侧导航栏中选择“日志中心”。 选择“插件日志”页签,选中插件为“NGINX Ingress控制器”。关于该页面的操作详情,请参见LTS用户指南。 图5 查看NGINX
负载均衡器配置:独享型elb自动创建配置 负载均衡器名称 自动创建的独享型负载均衡器名称。 参数名 取值范围 默认值 是否允许修改 作用范围 name 1-255个字符 无 允许 CCE Standard/CCE Turbo 支持网络类型 自动创建的独享型负载均衡器属性:inner为私网
部署成功后,登录集群节点,将服务域名和nginx-ingress的ELB服务地址添加到节点本地hosts文件。nginx-ingress的ELB服务地址即为3.c查询的ADDRESS IP地址。 export NGINXELB=xx.xx.xx.xx echo -n "${NGINXELB} test