Kubernetes 获取客户端真实 IP:externalTrafficPolicy 深度解析
概述在 Kubernetes 中获取客户端真实 IP 是一个常见需求,但由于 kube-proxy 的 SNAT 机制,往往获取到的是中间节点的 IP。externalTrafficPolicy 字段提供了解决方案。 核心知识: 🔍 Service 外部流量策略 📡 客户端 IP 保留机制 ⚖️ Cluster vs Local 模式 🎯 负载均衡权衡 适用场景: 需要记录真实客户端 IP 访问控制和安全审计 流量分析和用户画像 地域识别和限流 externalTrafficPolicy 详解什么是 externalTrafficPolicy定义: externalTrafficPolicy 是 Kubernetes Service 中控制外部流量转发策略的字段,决定流量如何路由到 Pod 以及是否保留客户端源 IP。 可选值: 值 说明 默认 Cluster 流量可转发到任意节点的 Pod ✅ 是 Local 流量仅转发到本节点的 Pod ❌ 否 配置示例: 123456789101112apiVersion: v1kind: Servicem...
解决镜像下载失败的几种方法
前言在学习、研究 Kubernetes 的过程中,经常遇到镜像拉取不了的网络问题,这并不是镜像本身的问题,而是国内的"国情"导致无法正常访问墙外资源。 这些镜像有的是 Kubernetes 团队自研的插件,也有一些是爱好者开发的第三方组件,正常来说,它们会存放于 gcr.io 或者 quay.io 中。 gcr.io 是谷歌的镜像仓库,在国内是禁止访问的 quay.io 是 Red Hat 的镜像仓库,可以访问,但速度较慢 那如何应对这种网络问题呢? 现成的镜像代理仓库k8s.gcr.io 源代理仓库这是 gcr.io/google-containers 的仓库,使用阿里云镜像: 123k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.3.0# 换成registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.3.0 也可以使用 lank8s.cn,它们的对应关系:k8s.gcr.io → lank8s.cn,gcr.io →...
记录一次 Kubernetes 网络 DNS 问题排查过程
问题总结在 Kubernetes 环境下,服务间访问遇到多个 DNS 和网络相关问题: 问题 1:Alpine 镜像 DNS 解析失败服务使用 node:xxx-alpine 镜像,服务间访问报错:getaddrinfo EAI_AGAIN 问题 2:ClusterIP 访问超时非 Alpine 镜像,使用 ClusterIP 访问频繁出现超时问题:connect ECONNRESET、read ECONNRESET 以及 axios 的 timeout 问题 3:DNS 访问报错非 Alpine 镜像,使用 DNS 访问报错:getaddrinfo ENOTFOUND 问题 4:CoreDNS I/O 超时CoreDNS 报错:[ERROR] plugin/errors: 2 . NS: read udp 10.42.2.5:38764->183.60.82.98:53: i/o timeout 详细背景见:https://github.com/k3s-io/k3s/issues/5897 问题排查过程问题 1:Alpine 镜像 DNS 解析问题问题现象:...
k8s 环境下 Nginx 做 WebSocket 负载的方案梳理
websocket server websocket server demo:https://github.com/mrniko/netty-socketio-demo Dockerfile 123456FROM maven:3.8.5-openjdk-17 as buildWORKDIR /user/src/appCOPY . .RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && mvn clean package -DskipTestsCMD mvn exec:java -f pom.xml 部署(保证pod可以被独立访问)statefulset方式 使用statefulset+headless service的方式对pod进行独立访问 DNS: pod名称-编号.headless名称.namespace.svc.cluster.local 123456789101112131415161718192021222324252627282930313233343536...
nginx大全学习网站
nginx大全学习网站
proxy_pass路径的唯一拼接规则
proxy_pass 只是HOST,不可以包含任何路径 如果proxy_pass后面没有任何URL路径信息(比如/,/xxx等),则反向代理的地址会包含location中的匹配部分,否则只会拼接匹配后的剩余路径 PS: 上面是最重要且唯一的一条规则,请记住 多种情况验证假设请求:http://localhost/online/wxapi/test/loginSwitch 第一种情况12345proxy_pass`结尾有`/location /online/wxapi/ { proxy_pass http://localhost:8080/; proxy_set_header X-Real-IP $remote_addr;} 代理后的实际地址:http://localhost:8080/test/loginSwitch 第二种情况12345proxy_pass`结尾没有`/location /online/wxapi/ { proxy_pass http://localhost:8080; pr...
关于nginx中proxy_set_header Host的设置
转自: https://blog.csdn.net/weixin_41585557/article/details/82426784 背景: nginx上配有aaa.example.com的虚拟主机,现在需要将访问http://aaa.example.com/api/x.x/client/的请求转到http://bbb.example.com/api/x.x/client/,bbb.example.com的虚拟主机在另外一台nginx上,其中x.x表示位数不定的版本号,如:1.0或1.20.345都可能。请求转过去要求url保持不变 用rewrite转发的话,url会发生变化的,那就用proxy_pass吧,于是添加了如下的配置: 123location ~ ^/api/([0-9]+)(\.[0-9]+)*/client/ { proxy_pass http://bbb.example.com;} 在现有环境的nginx里添加这段配置之后,访问却始终转不过去,查看nginx日志也只能看到是404信息,并没有更多定位问题的信息。检查了许久也没找到...
利用nginx实现客户端证书认证
生成crt/key1略 生成p12证书1openssl pkcs12 -export -clcerts -in rancher.sopei.k3s.cn.crt -inkey rancher.sopei.k3s.cn.key -out s.p12 需要把证书打包成p12格式的证书文件,然后在客户端的电脑上导入。同样的在生成p12文件的时候我们最好添加一个密码保护,这样就算证书泄露了也不会导致安全问题。 配置nginx1234# 客户端公钥证书ssl_client_certificate /path/to/root.crt;# 开启客户端证书验证ssl_verify_client on; Nginx配置Https单向认证、双向认证以及多证书配置: https://juejin.cn/post/6925361984183631885
记录 Nginx 正则规则
* 零次或者多次匹配前面的字符表达式,等效于{0,}.; zo*与“zo”和“zoo”匹配 + 一次或者多次匹配前面的字符表达式,等效于{1,};zo+与“zoo”匹配但是与“z”不匹配 ? 零次或一次匹配前面的字符或子表达式。当该字段紧随任何其他限定符(*、+、?、{n}、{n,}或{n,m})之后时,匹配模式是非常贪婪的,非贪婪模式匹配搜索到的、尽可能少的字符串,而默认的贪婪模式匹配搜索到的、尽可能多的字符串。zo? 与“z”和“zoo”不匹配;o+?只于“oooooo”中的单个o匹配。而o+与所有的“o”匹配。do(es)?与do或者does中的do匹配 ^ 匹配搜索字符串以什么开始。如果将^用作括号表达式中的第一个字符,则会对字符集求反,^\d{3}与搜索字符串开始出的3个数字匹配。[^abc]与除abc以外的任何字符匹配 $匹配搜索字符串以什么结尾,\d{3}$匹配任何3个数字结尾的 . 额这里其实是一个点号;匹配除了换行符\n之外的任何单个字符 [] 标记括号表达式的开始和结尾,[1-4]与1,2,3,4匹配。[^aAeE],除了a,A,e,E之外的匹配 ...
Orange 网关容器化改造
orange网关传统集群部署模式1、在orange.conf的 plugins中加入node,表示开启node插件(容器集群节点管理插件) 12345678910111213141516171819202122232425262728 "plugins": [ "stat", "headers", "monitor", "redirect", "rewrite", "rate_limiting", "property_rate_limiting", "basic_auth", "key_auth", "jwt_auth", "hmac_auth", "signat...
