Запустите приложение фляги в Куберне - PullRequest
0 голосов
/ 05 июля 2018

это может быть глупый вопрос, но как я могу заставить мой https://localhost:5000 работать через мое приложение фляги kuberenetes, чтобы оно возвращало верную информацию?

Это мой рабочий процесс:

$ eval $(minikube docker-env)
$ docker build ...
$ kubectl apply -f deploy.yaml (contains deployment & service)
$ kubectl set image...

kubectl logs... возвращает это ниже: также мои модули работают и работают, поэтому ничего не выходит из строя

 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on https://0.0.0.0:5000/  (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 443-461-677

Единственное, когда я захожу по этому адресу в браузере, он говорит, что сайт недоступен. когда я curl https://localhost:5000 или curl https://0.0.0.0:5000/ я получаю ошибку подключения не удалось. я чувствую, что моя среда / установка неправильно как-то. какие-либо советы / предложения? благодарю вас!

также вот мой файл deploy.yaml:

apiVersion: apps/v1beta1 
kind: Deployment
metadata:
  name: myapp
  namespace: test-space
spec:
  selector:
    matchLabels:
      app: myapp
  replicas: 3 
  template: 
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: secret-volume
          mountPath: /etc/secret-volume
        ports: 
        - containerPort: 80
        env:
        - name: "SECRET_KEY"
          value: /etc/secret-volume/secret-key
        - name: "SECRET_CRT"
          value: /etc/secret-volume/secret-crt
      volumes:
        - name: secret-volume
          secret: 
            secretName: my-secret3
---
apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: test-space
spec:
  type: NodePort
  selector:
    app: myapp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 5000
    nodePort: 30000

Dockerfile:

FROM python:2

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY requirements.txt /usr/src/app/

RUN pip install --no-cache-dir -r requirements.txt

COPY . /usr/src/app

EXPOSE 5000

CMD ["python", "app.py"]

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вам необходимо создать сервис с селектором меток myapp. Но есть еще один способ сделать скручивание войдя в запущенный модуль и выполните команду curl изнутри модуля.

Просто сделай

kubectl exec -it podname / bin / bash Это откроет оболочку bash Тогда вы можете сделать curl localhost: 5000

0 голосов
/ 05 июля 2018

Как вы указали Port 5000 в Dockerfile, вам нужно выставить тот же порт в контейнере в вашем Deployment. После этого вам необходимо настроить службу для использования этого порта.

Это должно выглядеть так:

apiVersion: apps/v1beta1 
kind: Deployment
metadata:
  name: myapp
  namespace: test-space
spec:
  selector:
    matchLabels:
      app: myapp
  replicas: 3 
  template: 
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: secret-volume
          mountPath: /etc/secret-volume
        ports: 
        - containerPort: 5000 #<<<PORT FIXED
        env:
        - name: "SECRET_KEY"
          value: /etc/secret-volume/secret-key
        - name: "SECRET_CRT"
          value: /etc/secret-volume/secret-crt
      volumes:
        - name: secret-volume
          secret: 
            secretName: my-secret3
---
apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: test-space
spec:
  type: NodePort
  selector:
    app: myapp
  ports:
  - protocol: TCP
    port: 5000 #<<<PORT FIXED
    targetPort: 5000
    nodePort: 30000

После этого вы можете обратиться к вам по номеру <any-kubernetes-node-IP>:30000

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