Kubernetes 启用Istio的GKE群集无法与Google服务基础架构API可靠通信
我无法可靠地允许我的支持istio的Google Kubernetes引擎集群通过连接到Google云端点(服务管理API)。部署Pod时,代理始终无法启动,导致Pod重新启动,并输出以下错误:Kubernetes 启用Istio的GKE群集无法与Google服务基础架构API可靠通信,kubernetes,google-cloud-platform,google-kubernetes-engine,google-cloud-endpoints,istio,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Google Cloud Endpoints,Istio,我无法可靠地允许我的支持istio的Google Kubernetes引擎集群通过连接到Google云端点(服务管理API)。部署Pod时,代理始终无法启动,导致Pod重新启动,并输出以下错误: INFO:从元数据服务获取访问令牌 警告:“NewConnectionError(':无法建立新连接:[Errno 111]连接被拒绝',)”:/computeMetadata/v1/instance/service accounts/default/token)断开连接后重试(重试(重试(总计=0,连
INFO:从元数据服务获取访问令牌
警告:“NewConnectionError(':无法建立新连接:[Errno 111]连接被拒绝',)”:/computeMetadata/v1/instance/service accounts/default/token)断开连接后重试(重试(重试(总计=0,连接=None,读取=None,重定向=0,状态=None))
错误:获取元数据属性失败:http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token
但是,重启后,代理报告一切正常,它能够获取访问令牌,并且我能够成功向Pod发出请求:
INFO:从元数据服务获取访问令牌
信息:从卷展栏服务获取服务配置ID
信息:从服务管理服务获取服务配置
信息:属性区:europe-west2-a
信息:属性项目\u id:我的项目
信息:属性kube_env:kube_env
nginx:[警告]使用受信任的CA证书文件:/etc/nginx/trusted-CA-certificates.crt
10.154.0.5--[23/May/2020:21:19:36+0000]“GET/domains HTTP/1.1”200 221“-”curl/7.58.0”
大约一个小时后,可能是因为访问令牌已过期,代理日志表明它再次无法获取访问令牌,我无法再向我的Pod发出请求
2020/05/23 22:14:04[错误]9#9:上游超时(110:连接超时)
2020/05/23 22:14:04[错误]9#9:无法获取服务帐户令牌
2020/05/23 22:14:04[错误]9#9:获取访问令牌意外状态:内部:无法获取服务帐户令牌
我有一个ServiceEntry资源,它应该允许代理向GKE节点上的元数据服务器发出请求:
apiVersion:networking.istio.io/v1alpha3
种类:ServiceEntry
元数据:
名称:谷歌元数据服务器
规格:
主持人:
-metadata.google.internal#GCE元数据服务器
地址:
-169.254.169.254#GCE元数据服务器
位置:外部网格
端口:
-名称:http
电话:80
协议:HTTP
-名称:https
电话:443
协议:HTTPS
我已通过exec
ing进入其中一个容器并运行以下操作确认此功能正常:
curl-H“元数据风格:谷歌”http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token
我如何防止这种行为并可靠地让代理与Google服务基础架构API通信?尽管我不完全相信这是解决方案,但使用专用服务帐户在可扩展服务代理容器内生成访问令牌似乎可以防止上述行为我能够可靠地向代理和上游服务发出请求,即使在一小时之后 我正在使用的服务帐户具有以下角色:
roles/cloudtrace.agent
角色/servicemanagement.serviceController