Kubernetes minikube中的坏服务/502坏网关

Kubernetes minikube中的坏服务/502坏网关,kubernetes,containers,minikube,kubernetes-ingress,kubernetes-service,Kubernetes,Containers,Minikube,Kubernetes Ingress,Kubernetes Service,考虑到以下K8s资源(部署/吊舱、服务、入口),我希望在访问https://staging-micro.local/在我的浏览器中。我得到的是502坏网关 # describe deployment (trunc. to show only containers) Containers: cloudsql-proxy: Image: gcr.io/cloudsql-docker/gce-proxy:1.11 Port: <none>

考虑到以下K8s资源(部署/吊舱、服务、入口),我希望在访问
https://staging-micro.local/
在我的浏览器中。我得到的是
502坏网关

# describe deployment (trunc. to show only containers)
Containers:
   cloudsql-proxy:
    Image:      gcr.io/cloudsql-docker/gce-proxy:1.11
    Port:       <none>
    Host Port:  <none>
    Command:
      /cloud_sql_proxy
      -instances=myproject:us-central1:project-staging=tcp:5432
      -credential_file=/secrets/cloudsql/credentials.json
    Environment:  <none>
    Mounts:
      /secrets/cloudsql from cloudsql-instance-credentials-volume (ro)
   adv-api-django:
    Image:      gcr.io/google_containers/echoserver:1.9
    Port:       8000/TCP
    Host Port:  0/TCP
    Environment:


# describe service
Name:                     staging-adv-api-service
Namespace:                staging
Labels:                   app=adv-api
                          platformRole=api
                          tier=backend
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"adv-api","platformRole":"api","tie...
Selector:                 app=adv-api-backend,platformRole=api,tier=backend
Type:                     LoadBalancer
IP:                       10.103.67.61
Port:                     http  80/TCP
TargetPort:               8000/TCP
NodePort:                 http  32689/TCP
Endpoints:                172.17.0.14:8000,172.17.0.6:8000,172.17.0.7:8000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>


# describe ingress
Name:             staging-api-ingress
Namespace:        staging
Address:          10.0.2.15
Default backend:  default-http-backend:80 (172.17.0.12:8080)
Rules:
  Host                 Path  Backends
  ----                 ----  --------
  staging-micro.local  
                       /   staging-adv-api-service:http (172.17.0.14:8000,172.17.0.6:8000,172.17.0.7:8000)
#描述部署(trunc.仅显示容器)
容器:
cloudsql代理:
图片:gcr.io/cloudsqldocker/gce代理:1.11
端口:
主机端口:
命令:
/云sql代理
-instances=myproject:us-central1:project staging=tcp:5432
-凭证文件=/secrets/cloudsql/credentials.json
环境:
挂载:
/来自cloudsql实例凭据卷(ro)的机密/cloudsql
adv-api-django:
图片:gcr.io/google_containers/echoserver:1.9
端口:8000/TCP
主机端口:0/TCP
环境:
#描述服务
名称:暂存adv api服务
命名空间:暂存
标签:app=adv-api
platformRole=api
层=后端
注释:kubectl.kubernetes.io/last-applicated-configuration:
{“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“标签”:{“应用”:“adv api”,“平台角色”:“api”,“tie…”。。。
选择器:app=adv-api后端,platformRole=api,tier=backend
类型:负载平衡器
IP:10.103.67.61
端口:http 80/TCP
目标端口:8000/TCP
节点端口:http 32689/TCP
终点:172.17.0.14:8000172.17.0.6:8000172.17.0.7:8000
会话关联:无
外部流量策略:群集
活动:
#描述入口
名称:分级api入口
命名空间:暂存
地址:10.0.2.15
默认后端:默认http后端:80(172.17.0.12:8080)
规则:
主机路径后端
----                 ----  --------
微本地
/暂存adv api服务:http(172.17.0.14:8000172.17.0.6:8000172.17.0.7:8000)
请注意,我在主机(运行minikube)上的
/etc/hosts
中有一个条目
192.168.99.100 staging micro.local
,这是正确的
minikube ip
。如果我删除该服务,点击
staging micro.local/
将给出默认后端的
404 Not Found
响应

我的期望是入口将主机名
staging micro.local
和路径
/
映射到服务,该服务正在侦听端口80。然后,该服务将请求转发到端口8000上的3个选定容器之一。echoserver容器正在侦听端口8000,并返回一个带有请求的HTTP响应当然,事实并非如此

最后是
cloudsql代理
容器:这一点不应该涉及,但我之所以包括它,是因为我想在sidecar容器存在时验证服务是否有效。然后我可以将
echoserver
替换为我的主应用程序容器。我已经用
echoserver
进行了测试,并得到了t他得到了同样的结果

日志显示,
echoserver
正在正确启动


我找不到任何关于echoserver的更全面的文档,所以我对它监听的端口不是100%。

我猜你用错了echoserver:1.9目标容器端口,因为默认情况下它在
8080
端口上响应。看看这个


我已经在我的环境中测试了它,在
8080
端口上成功地实现了容器响应。

这似乎是正确的。我想我对容器的行为是乐观的