首页 > 其他分享 >kube-ovn net/http TLS handshake timeout

kube-ovn net/http TLS handshake timeout

时间:2024-10-05 23:44:46浏览次数:8  
标签:TLS handshake http 字节 ovn0 mtu 网卡 kube ovn

问题现象

业务报错net/http: TLS handshake timeout。
容器IP跨节点访问kube-apiserver service clusterIP不通。

问题分析

k ko trace [ns]/[pod] [ip] tcp 443 | grep 对端主机ip

kube-ovn在br-int网桥上刷流表实现了kube-proxy的dnat功能。
kube-ovn监听service的endpoints,像kube-proxy一样感知变化。

模拟访问kube-apiserver
从kube-system命名空间下ovn这个sa中获取证书和token

curl -i -H "Authorization: Bearer $TOKEN” --cacert ca.crt https://xxx:443/api/v1/nodes/xxx

设置ovs端口ovn0 mtu方法

ovs-vsctl set Interface ovn0 mtu_request=1460

mtu设置在ip层,内核不考虑数据链路层的以太网头14字节。

2个主机网口mtu都是1500。
容器网卡和ovn0口mtu最大是1442,1443以上就不行了。
关闭kube-apiserver所在宿主机网口和ovn0口的gso和tso。
容器网卡和ovn0口mtu 1442场景mss是1402
kube-apiserver所在宿主机网口抓包

大包1514字节-以太网头14字节=1500字节,可以通过主机网口。
容器网卡和ovn0口mtu 1443场景mss是1403
kube-apiserver所在宿主机ovn0口抓包
大包1457字节+udp geneve封装58字节-以太网头14字节=1501字节,无法通过主机网口,因为设置不可分片,所以直接丢弃。

udp geneve封装58字节=内层以太网头14字节+geneve头16字节+udp头8字节+ip头20字节
geneve报文能否满足Linux内核网卡mtu,看内层大小+58。

kube-ovn中设置mtu是靠ovn-cni的启动参数mtu。
ovn-cni走主机网络,pod属于ds。
容器网卡mtu初始值是65435,修改ds ovn-cni启动参数mtu后会类似于deploy滚动更新那样逐个更新,但是ovn-cni pod更新完成后,不会自动更新当前节点上的mtu,直到触发cni add,例如删除pod和重建pause容器。

解决方法

容器网卡和ovn0口mtu从1460恢复成默认的1400,至少在1442以下。

标签:TLS,handshake,http,字节,ovn0,mtu,网卡,kube,ovn
From: https://www.cnblogs.com/WJQ2017/p/18448736

相关文章

  • 免费TLS--Let's Encrypt 使用说明
    Let'sEncrypt:这是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构。它为众多网站提供TLS证书,其免费证书的签发/续签可以通过脚本自动化完成。Let'sEncrypt免费证书的有效期通常为90天。官方网站为:https://letsencrypt.org/zh-cn/根据官......
  • 网站在后台启用了https协议之后重新登录就不进去后台的解决方法
    备份现有配置文件 在进行任何修改之前,请确保先备份e/config/config.php文件,以便如果修改后出现问题可以快速恢复。bash cpe/config/config.phpe/config/config.bak修改配置文件 使用文本编辑器打开e/config/config.php文件,并找到httptype这个配置项。将其值从1(......
  • HTTP请求过程
    http请求过程从源端到终端,请求报文和响应报文要经过四层关口,才可以传输,分为:应用层(如http)传输层(如TCP)网络层(如IP)链接层(设备驱动程序以及网卡)协议经过约定,使通信两端以相同规则来存储,接收,发送数据分层初探应用层应用程序将数据以相应规则进行包装,发给传输层【HTTP,......
  • delphi 12 利用TNetHTTPClient 解决post https问题注意事项
          在以前的版本中,如果需要向https接口交互数据,需要openssl的支持,特别时openssl版本太多,往往需要调试很长时间, 现在新版的DelphiXE8以上的版本,有了TNetHttpClient,可以简单的是实现和https接口的交互。usesSystem.Net.URLClient,System.Net.HttpClient......
  • 【学习笔记】TLS/SSL握手
    前言:本篇将介绍TLS握手的实际握手过程,TLS握手创建了Client和Server之间“被保护的通道”,2个单向通道用来保护批量数据的传输(通过Confidentiality、Integrity和Authentication),一个通道是从Client到Server,另一个是从Server到Client。本篇将介绍最基础的握手-即握手采用的是RSA......
  • 【C#】使用httpclient 实现HTTP请求
    ///<summary>///HTTPPOST请求///</summary>///<paramname="url">请求地址</param>///<paramname="value">参数</param>///<paramname="timeout">超时时间,默认5秒</param>///<returns>......
  • Unity编辑器扩展-基于UniTask的Http请求和下载
    publicclassHttpHelper{publicstaticasyncUniTask<(bool,string)>RequestGetUrlAsync(stringurl,booldebug=false){Debug.Log($"reqgeturl:{url}");UnityWebRequestreq=null;......
  • 快速入门Java中的HTTP请求
    1.使用java.net.HttpURLConnectionJava标准库中的HttpURLConnection是最基本的方式,用于发送HTTP请求。示例:发送GET请求发送POST请求2.使用ApacheHttpClientApacheHttpClient是一个强大的HTTP客户端库,支持高级HTTP通信功能。添加依赖如果你使用Maven,添加以下依赖到你......
  • 【HTTP(3)】(状态码,https)
    【认识状态码】状态码最重要的目的,就是反馈给浏览器:这次请求是否成功,若失败,则出现失败原因常见状态码:200:OK,表示成功404:NotFound,浏览器访问的资源在服务器上没有找到403:Forbidden,访问被拒绝(没有权限)405:MethodNotAllowed,方法不支持500:InternalServerError服......
  • 白骑士的Java教学安全编程篇 12.4 SSL/TLS在Java中的应用
            SSL(SecureSocketsLayer)和TLS(TransportLayerSecurity)是用于保护网络通信安全的协议,广泛应用于互联网中的数据传输。Java提供了强大的API来实现SSL/TLS通信,确保数据在传输过程中不被窃听和篡改。本篇博客将详细介绍SSL/TLS的基本概念及其在Java中的应用,包括......