K8s中的external-traffic-policy是什么?
说明: 阿里云的 'EDAS 和ACK'的默认行为'不一样'
Kubernetes(二十三)Service(二)会话保持和获取客户端的ip
访问 externalTrafficPolicy 为 Local 的 Service 对应 LB 有时超时
k8s svc的externalTrafficPolicy属性 跨node不通 保留客户端源IP
kubernetes svc设置externalTrafficPolicy无法访问题
访问'没有'Endpoint的节点的NodePort,'不能通'
原因: 因为节点上'没有'相关的'ipvs转发规则',所以'无法'进行dnat,访问会'失败'
说明: 常见有'两种'行为
备注:
1、当externalTrafficPolicy取值为'Local'时
2、通过'节点IP:服务端口'的请求只会转发给'本节点上的Pod',如果节点'没有Pod'话请求会'挂起'
观察点: '没有' endpoint的节点的 'SLB IP' 的IPVS 的'规则' --> SLB的'规则'后端节点
现象: 通过k8s的'svc提供的域名',竟然'时通时不通' --> '两个实例'
kubernetes - "externalTrafficPolicy"设置为 "Local"时无响应
抓包分析当svc externalTrafficPolicy=Local 时,进入容器中的包是否进行源地址转换
kubectl explain svc.spec.externalTrafficPolicy
1、集群级别 'Cluster' --> "默认","不会保留源ip"
2、节点级别 'Local'
外部策略为'Local/Cluster',所有集群节点创建'ipvs规则'是有'区别'的
ServiceInternalTrafficPolicy特性在'1.22'的K8s中'默认'开启
Service'选择一个Pod'转发到该Pod,但Service选择的Pod'不一定在接收请求的节点上'
思考1: 'Local'可以获取到客户端源ip的'原因?'
思考2: 在集群内'没有对应endpoint'的'节点上或pod内'通过'svc ip'访问,为什么'时通时不通'?
原因: curl svc_ip:port 时,由于是'Local','ep有两个实例',但是'接收'流量的节点上没有pod
注意: 访问 svc 'Local' 的服务时,一定要注意'访问节点ip上'面要有svc关联 Pod 调度
k8s中的'实例'通常称之为'endpoint'
首先在'Cluster'模式下,ipvs模式下,流量到达'非pod 所在的节点'时,会再做一次'FULL-NAT'
细节:
1、 Kube-proxy在做'转发'时候,会做一次'SNAT' (source network address translation)
2、 所以'源IP'变成了'首先接收请求'的'节点' ip地址
需求: 查询某个 '虚拟ip' 地址的详细信息
ipvsadmn -ln -t vip:port
-g: --gatewaying, 指定LVS工作模式为'Direct-routing 直接路由'方式,是'LVS'默认工作模式
-i: --ipip, 指定LVS的工作模式为'隧道封装'模式
-m:--masquerading, 指定LVS的工作模式为'MAT'模式 --> 'NAT'和'Full-Nat'模式
conntrack -L | grep 'ip'
误区: pod服务'启动'有这个端口,但是没有通过任何形式'暴露'端口,所以'除了该pod内'都无法访问
说明: 以下讲解ACK 的'flannel' 网络插件
每一个pod里面'/etc/resolv.conf' 会'添加'一个东西: ns.svc.cluster.ip
阿里云负载均衡'SLB'服务'现在叫CLB'
遗留: kubectl explain svc.spec.sessionAffinity
原文地址:https://blog.csdn.net/wzj_110/article/details/134743610
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_23208.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。