соединение kubernetes отказано во время развертывания - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь добиться развертывания с нулевым временем простоя, используя kubernetes, и во время моего теста сервис плохо балансирует нагрузку.

Мой манифест Кубернец:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  template:
    metadata:
      labels:
        app: myapp
        version: "0.2"
    spec:
      containers:
      - name: myapp-container
        image: gcr.io/google-samples/hello-app:1.0
        imagePullPolicy: Always
        ports:
          - containerPort: 8080
            protocol: TCP
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5
          successThreshold: 1

---

apiVersion: v1
kind: Service
metadata:
  name: myapp-lb
  labels:
    app: myapp
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: myapp

Если я зациклюсь на услуге с внешним IP, скажем:

$ kubectl get services
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
kubernetes   ClusterIP      10.35.240.1    <none>           443/TCP        1h
myapp-lb     LoadBalancer   10.35.252.91   35.205.100.174   80:30549/TCP   22m

с использованием скрипта bash:

while True
    do
        curl 35.205.100.174 
        sleep 0.2s
    done

Я получаю connection refused во время развертывания:

curl: (7) Failed to connect to 35.205.100.174 port 80: Connection refused

Приложение по умолчанию helloapp , предоставляемое Google Cloud Platform и работающее на 8080.

Информация о кластере:

  • Kubernetes версия: 1.8.8
  • Облачная платформа Google
  • Тип машины: g1-small

1 Ответ

0 голосов
/ 14 мая 2018

Похоже, ваш запрос отправляется в не запущенный модуль. Я избежал этого, добавив несколько параметров:

  • Liveness probe, чтобы убедиться, что приложение уже запущено

  • maxUnavalible: 1 для развертывания модулей по одному

У меня все еще есть некоторые ошибки, но они допустимы, потому что они случаются редко. Во время развертывания ошибка может возникать один или два раза, поэтому при увеличении нагрузки у вас будет незначительное количество ошибок. Я имею в виду одну или две ошибки на 2000 запросов во время развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...