Kubernetes Pod Объект сбой в бесконечном цикле при попытке развернуть приложение Dockerized Django с базой данных PostgreSQL - PullRequest
0 голосов
/ 24 мая 2018

Я работаю над своим проектом Django и пытаюсь развернуть его в кластере Kubernetes (провайдер Google Cloud).Мне удалось создать все файлы, необходимые для настройки кластера:

  • Развертывание приложения Django + Сервис. Файлы .yml
  • Развертывание Postgres DB + Сервис + PersistentVolumeClaim (который динамически создаетОбъект PersistentVolume и использует хранилище PD на облачных узлах по умолчанию) + Секретные файлы .yml
  • Файл Docker + Docker Compose (У меня нет большого опыта работы с Docker, поэтому в них может быть что-то не так, возможно, в этом проблемано я не могу понять это)

По какой-то причине, когда я пытаюсь применить их, мои POD, в частности POD-приложения Django, терпят крах в бесконечном цикле.Кроме того, мой Postgres Pod не дает сбоя, но не работает eather.

Может кто-нибудь помочь мне понять, что я делаю неправильно?Вот мое репозиторий на github: https://github.com/…/mast…/agents/config/kubernetes/postgres

Лучше всего предположить, что я не установил правильную конфигурацию DATABASES в файле settings.py, и что мое приложение Django не может найти DATABASE HOST, указанный в settings.py.Если у кого-то есть какие-либо предложения, пожалуйста, оставьте комментарий.

Вот изображение моего списка Pod Kubernetes:

enter image description here Вот изображение, где я описалОбъект 1st Pod:

enter image description here И вот изображение одного из моих описанных узлов:

enter image description here

* ОБНОВЛЕНИЕ *

Вот как выглядит мое сообщение об ОШИБКЕ, когда я пытаюсь запустить python src/manage.py runserver:

(web_development) cepa995@cepa995-VirtualBox:~/Agentske_Tehnologije/agents$ python src/manage.py runserver
/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
  """)
/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
  """)
Performing system checks...

System check identified no issues (0 silenced).
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f6b37e9a9d8>
Traceback (most recent call last):
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/base/base.py", line 194, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 168, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not translate host name "postgres-service" to address: Name or service not known


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 124, in inner_run
    self.check_migrations()
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/core/management/base.py", line 427, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/migrations/loader.py", line 49, in __init__
    self.build_graph()
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/migrations/loader.py", line 206, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 61, in applied_migrations
    if self.has_table():
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 44, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/base/base.py", line 255, in cursor
    return self._cursor()
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/base/base.py", line 232, in _cursor
    self.ensure_connection()
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/base/base.py", line 194, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 168, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/home/cepa995/anaconda3/envs/web_development/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not translate host name "postgres-service" to address: Name or service not known

1 Ответ

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

Ваше приложение не может подключиться к базе данных, потому что ваш сервер Postgres не может запуститься (у вас 0/1 модуль в состоянии Ready).

Вы не опубликовали его события Pod, но я думаю, что основнойпричина его объем.

В ваших спецификациях Postgres я вижу, что вы установили тип тома на ReadWriteMany, но Google Cloud не предоставляет тома с этим типом ( документация , путь "Режимы доступа") и,на самом деле, я не вижу причины, почему вам это нужно.Измените тип на ReadWriteOnce и повторно разверните базу данных, это должно помочь.

PS Чтобы получить журнал приложения в кластере, вы можете вызвать kubectl logs $podname, это гораздо более полезно PPS Когда вы публикуете текстовую информацию, используйте текстовый формат, пожалуйста.

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