Сообщается об одном развертывании с нездоровым восходящим потоком

Использование Istio с Kubernetes и столкновение с проблемой простого маршрутизатора, разделяющего трафик между двумя развертываниями. Только одно из развертываний (привет) возвращает результаты правильно. Другое развертывание (привет) сообщает «нет работоспособного восходящего потока».

Вот манифест 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


person Arun Gupta    schedule 16.04.2018    source источник


Ответы (1)


Я воспроизвел вашу проблему с развертыванием и в процессе обнаружил следующие ошибки:

Предупреждение Нездоровый 48 м (x7 более 49 м) kubelet, gke-cluster-1-default-pool-e44042f6-kndh Ошибка проверки готовности: Get http://10.0.2.30:8081/resources/greeting: наберите tcp 10.0.2.30:8081: getsockopt: в соединении отказано

Я бы порекомендовал вам проверить, открывают ли контейнеры докеров в этой конкретной конфигурации конечные точки на указанном (8081) порте. Я также обнаружил, что поды не зарегистрированы ни на одной из конечных точек:

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

Проблема в том, что приложение не привязалось к порту, который был установлен как порт контейнера, и приложение не получило соединение.

person d0bry    schedule 17.04.2018