报告一个部署有不健康的上游

时间:2018-04-16 19:01:38

标签: kubernetes istio

将Istio与Kubernetes一起使用,并面临两个部署之间分割流量的简单路由器的问题。只有一个部署(howdy)正确返回结果。另一个部署(你好)报告“没有健康的上游”。

这是k8s清单:

apiVersion: v1
kind: Service
metadata:
  name: greeting
  labels:
    name: greeting
spec:
  selector:
    app: greeting
  ports:
  - name: http
    protocol: TCP
    port: 8081
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: greeting-hello
  labels:
    name: greeting-hello
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: greeting
        greeting: hello
    spec:
      containers:
      - name: greeting
        image: arungupta/greeting:hello
        imagePullPolicy: Always
        ports:
        - containerPort: 8081
        readinessProbe:
          httpGet:
            path: /resources/greeting
            port: 8081
          initialDelaySeconds: 50
          periodSeconds: 5
--- apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: greeting-howdy
  labels:
    name: greeting-howdy
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: greeting
        greeting: howdy
    spec:
      containers:
      - name: greeting
        image: arungupta/greeting:howdy
        imagePullPolicy: Always
        ports:
        - containerPort: 8081
        readinessProbe:
          httpGet:
            path: /resources/greeting
            port: 8081
          initialDelaySeconds: 50
          periodSeconds: 5

路线是:

apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
  name: greeting-50-50
spec:
  destination:
    name: greeting
  route:
  - labels:
      app: greeting
      greeting: hello
    weight: 100
  - labels:
      app: greeting
      greeting: howdy
    weight: 0

有什么想法吗?

此问题也会在https://github.com/aws-samples/aws-microservices-deploy-options/issues/239

进行跟踪

1 个答案:

答案 0 :(得分:1)

我已经重现了您的部署问题,并在此过程中发现了以下错误:

警告不健康的48米(x7超过49米)kubelet,gke-cluster-1-default-pool-e44042f6-kndh准备情况探测失败:获取http://10.0.2.30:8081/resources/greeting:拨打tcp 10.0.2.30:8081:getsockopt:连接被拒绝< / p>

我建议您检查此特定配置中的docker容器是否为 在指定的(8081)端口上公开端点。我还发现pods没有注册 端点:

$ kubectl describe service
[...]
IP:                10.3.247.97
Port:              http  8081/TCP
TargetPort:        8081/TCP
Endpoints:
Session Affinity:  None
Events:            <none>

问题是应用程序没有绑定到设置为容器端口的端口, 并且应用程序没有收到连接。