热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Istio:upstreamconnecterrorordisconnect/resetbeforeheader

Istio:upstreamconnecterrorordisconnectresetbeforeheader

按照官方文档跑 bookinfo 例子,访问 productpage 的时候提示: upstream connect error or disconnect/reset before header

通过命令查看 productpage 的 istio proxy 的日志,日志都是 info 级别,通过调整 level 可以查看到更多 Envoy 的详细日志,打开方式可以通过 port-forward 来访问:

kubectl port-forward productpage-v1-6c5578cc4-z8dgq 15000:15000

curl 命令强制开启 trace 日志:

curl -X POST 127.0.0.1:15000/logging?level=trace

在此访问 productpage 页面,并查看 istio proxy 的日志,可以发现如下错误:

[2018-10-07 15:00:51.379][29][debug][router] external/envoy/source/common/router/router.cc:252] [C0][S13874950066935357807] cluster 'outbound|9091||istio-telemetry.istio-system.svc.cluster.local' match for URL '/istio.mixer.v1.Mixer/Report'                                                                    
[2018-10-07 15:00:51.379][29][debug][router] external/envoy/source/common/router/router.cc:303] [C0][S13874950066935357807] router decoding headers:      
':method', 'POST'                                                                                                                                         
':path', '/istio.mixer.v1.Mixer/Report'                                                                                                                   
':authority', 'mixer'                                                                                                                                     
':scheme', 'http'                                                                                                                                         
'te', 'trailers'                                                                                                                                          
'grpc-timeout', '5000m'                                                                                                                                   
'content-type', 'application/grpc'                                                                                                                        
'x-istio-attributes', 'CkMKCnNvdXJjZS51aWQSNRIza3ViZXJuZXRlczovL3Byb2R1Y3RwYWdlLXYxLTZjNTU3OGNjNC16OGRncS5kZWZhdWx0'                                      
'x-envoy-internal', 'true'                                                                                                                                
'x-forwarded-for', '10.1.1.100'                                                                                                                           
'x-envoy-expected-rq-timeout-ms', '5000'                                                                                                                  
                                                                                                                                                          
[2018-10-07 15:00:51.379][29][debug][client] external/envoy/source/common/http/codec_client.cc:25] [C67] connecting                                       
[2018-10-07 15:00:51.379][29][debug][connection] external/envoy/source/common/network/connection_impl.cc:572] [C67] connecting to 10.1.1.59:9091  

并且提示 timeout:

[2018-10-07 15:00:52.382][29][debug][pool] external/envoy/source/common/http/http2/conn_pool.cc:174] [C67] connect timeout   

并且通过查看 Envoy 的配置(通过 curl 10.1.1.100:15000/config_dump 获取):

         "http_filters": [                                                                                                                              
            {                                                                                                                                             
             "name": "mixer",                                                                                                                             
             "config": {                                                                                                                                  
              "transport": {                                                                                                                              
               "check_cluster": "outbound|9091||istio-policy.istio-system.svc.cluster.local",                                                             
               "network_fail_policy": {                                                                                                                   
                "policy": "FAIL_CLOSE"                                                                                                                    
               },                                                                                                                                         
               "report_cluster": "outbound|9091||istio-telemetry.istio-system.svc.cluster.local",                                                         
               "attributes_for_mixer_proxy": {                                                                                                            
                "attributes": {                                                                                                                           
                 "source.uid": {                                                                                                                          
                  "string_value": "kubernetes://productpage-v1-6c5578cc4-z8dgq.default"                                                                   
                 }                                                                                                                                        
                }                                                                                                                                         
               }                                                                                                                                          
              },                                                                                                                                          
              "service_configs": {                                                                                                                        
               "default": {}                                                                                                                              
              },                                                                                                                                          
              "default_destination_service": "default",                                                                                                   
              "mixer_attributes": {                                                                                                                       
               "attributes": {                                                                                                                            
                "destination.port": {                                                                                                                     
                 "int64_value": "9080"                                                                                                                    
                },                                                                                                                                        
                "context.reporter.uid": {                                                                                                                 
                 "string_value": "kubernetes://productpage-v1-6c5578cc4-z8dgq.default"                                                                    
                },                                                                                                                                        
                "destination.namespace": {                                                                                                                
                 "string_value": "default"                                                                                                                
                },                                                                                                                                        
                "destination.ip": {                                                                                                                       
                 "bytes_value": "AAAAAAAAAAAAAP//CgEBZA=="                                                                                                
                },                                                                                                                                        
                "destination.uid": {                                                                                                                      
                 "string_value": "kubernetes://productpage-v1-6c5578cc4-z8dgq.default"        

根据 listener 的 filter 和日志可以判断出,Envoy 再访问 istio-policyistio-telemetry 的时候超时,通过 kubectl exec -it 登录到 istio-policyistio-telemetry 容器里面查看 ip ,也验证 10.1.1.59 是容器 ip,再 productpageistio-proxy 容器里无法访问到 istio-policy 的容器 ip,而直接 ping istio-policy.istio-system.svc.cluster.local 得到的 ip 却是 10.152.183.219 ,令人费解。

初步推断是 networking 出问题了。

可以查看 bridge

sudo brctl show

可以看到信息:

bridge name     bridge id               STP enabled     interfaces
cbr0            8000.c64875066a1c       no              veth019bd18c
                                                        veth1c0d2c9b
                                                        veth1c61c1f5
                                                        veth354f63c2
                                                        veth3dcf1b58
                                                        veth5e48d40c
                                                        veth5ecef8bd
                                                        veth64c402e3
                                                        veth6cdd40a2
                                                        veth734c71a0
                                                        veth83002aa8
                                                        veth84f9ea9e
                                                        veth89b6dca2
                                                        veth9a2e7811
                                                        vetha39fd5f9
                                                        vethaa60e8e9
                                                        vethb049a2ee
                                                        vethb1790152
                                                        vethbcfdb892
                                                        vethcb714c1d
                                                        vethce18a83b
                                                        vethcee858ed
                                                        vethd59ca64b
                                                        vethe7e21373
docker0         8000.02428d87c40c       no

cbr0 是存在的,基本说明是 bridge 出问题了,搜索 syslog

grep -i cni /var/log/syslog

可以看到错误信息:

Oct  9 07:36:27 pzhang microk8s.daemon-kubelet[27091]: W1009 07:36:27.967830   27091 cni.go:188] Unable to update cni config: No networks found in /etc/cni/net.d
Oct  9 07:36:33 pzhang microk8s.daemon-kubelet[27299]: W1009 07:36:33.291419   27299 cni.go:188] Unable to update cni config: No networks found in /etc/cni/net.d

所以需要解决为什么 microk8snetwork-plugin 出问题,需要继续 Google …

Google 到官方文档: https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/ kubenet 并不会创建 CNI ,所以上面的 warning 无关紧要。

通过 sudo nsenter -p -n ping 10.1.1.53 在一个 container 去 ping 另外一个 container 是不通的,通过 tcpdump 也只能看到信息: 1412 14:27:46.087292 10.1.1.50 10.1.1.53 ICMP 98 Echo (ping) request id=0x3ed4, seq=29/7424, ttl=64 (no response found!)

最后要给 microk8s 提交 issue 的时候,被告知要提交 microk8s.inspect 的结果,出现警告:

WARNING:  IPtables FORWARD policy is DROP. Consider enabling traffic forwarding with: sudo iptables -P FORWARD ACCEPT

执行 iptables -L

Chain FORWARD (policy DROP)                                                                                                                               
target     prot opt source               destination                                                                                                      
DOCKER-ISOLATION  all  --  anywhere             anywhere                                                                                                  
DOCKER     all  --  anywhere             anywhere                                                                                                         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED                                                                 
ACCEPT     all  --  anywhere             anywhere                                                                                                         
ACCEPT     all  --  anywhere             anywhere                                                                                                         
DOCKER-USER  all  --  anywhere             anywher

执行 sudo iptables -P FORWARD ACCEPT 打开 FORWARD 后,网络就一切 OK 了。

估计因为安装的是 ubuntu-server 版本,默认 iptables 开启了防火墙规则,以后碰到网路问题多注意 iptables


以上所述就是小编给大家介绍的《Istio: upstream connect error or disconnect/reset before header》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • 1、PLSQLDeveloper记住登陆密码在使用PLSQLDeveloper时,为了工作方便希望PLSQLDeveloper记住登录Oracle的用户名和密码&#x ... [详细]
  • [BUUCTF] xman_2019_nooocall
    xman_2019_nooocall总结可以输入shellcode,但是又不能使用任何系统调用。因此,可以使用侧信道攻击,通过一些现象、反馈等猜测出flag。侧信道常用的反馈有错误 ... [详细]
author-avatar
key920721
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有