库伯内特斯+;Django/PostgreSQL—当我将PostgreSQL数据库部署到Kubernetes集群时,如何指定它的主机
我在配置停靠的Django+PostgreSQL DB应用程序以在Kubernetes集群上工作时遇到了很多问题,我使用Google云平台创建了Kubernetes集群 当我将Docker Hub中的PostgreSQL映像和Django Web应用程序的映像部署到Kubernetes集群时,如何从my settings.py文件中指定DATABASES.default.HOST 以下是我希望我的应用程序如何工作。在本地运行应用程序时,我希望使用SQLITE DB,为此,我在settings.py文件中做了以下更改:库伯内特斯+;Django/PostgreSQL—当我将PostgreSQL数据库部署到Kubernetes集群时,如何指定它的主机,django,postgresql,docker,kubernetes,Django,Postgresql,Docker,Kubernetes,我在配置停靠的Django+PostgreSQL DB应用程序以在Kubernetes集群上工作时遇到了很多问题,我使用Google云平台创建了Kubernetes集群 当我将Docker Hub中的PostgreSQL映像和Django Web应用程序的映像部署到Kubernetes集群时,如何从my settings.py文件中指定DATABASES.default.HOST 以下是我希望我的应用程序如何工作。在本地运行应用程序时,我希望使用SQLITE DB,为此,我在settings.p
if(os.getenv('DB')==None):
print('Development - Using "SQLITE3" Database')
DATABASES = {
'default':{
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR,'db.sqlite3'),
}
}
else:
print('Production - Using "POSTGRESQL" Database')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'agent_technologies_db',
'USER': 'stefan_radonjic',
'PASSWORD': 'cepajecar995',
'HOST': , #???
'PORT': , #???
}
}
其主要思想是,当我将应用程序部署到Kubernetes集群时,Kubernetes Pod对象内部将运行一个Docker容器(我的Docked Django应用程序)。创建容器时,我还创建了环境变量DB
,并将其设置为True。所以,当我部署应用程序时,我使用PostgreSQL数据库
注意:如果有人对我如何将本地开发与生产开发分开有任何其他建议,请留下评论
下面是我的Dockerfile的外观:
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /agent-technologies
WORKDIR /agent-technologies
COPY . /agent-technologies
RUN pip install -r requirements.txt
EXPOSE 8000
version: '3'
services:
web:
build: .
command: python src/manage.py runserver --settings=agents.config.settings
volumes:
- .:/agent-technologies
ports:
- "8000:8000"
environment:
- DB=true
下面是我的docker compose文件的外观:
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /agent-technologies
WORKDIR /agent-technologies
COPY . /agent-technologies
RUN pip install -r requirements.txt
EXPOSE 8000
version: '3'
services:
web:
build: .
command: python src/manage.py runserver --settings=agents.config.settings
volumes:
- .:/agent-technologies
ports:
- "8000:8000"
environment:
- DB=true
在本地运行应用程序时,它工作得非常好。但当我尝试将其部署到Kubernetes群集时,运行我的应用程序容器的Pod对象在无限循环中崩溃,因为我不知道在生产环境中运行应用程序时如何指定DATABASES.default.HOST。当然,docker compose文件中指定的命令(command:python src/manage.py runserver--settings=agents.config.settings
)可能会产生异常,并使POD在无限循环中崩溃
注意:我已经为Kubernetes创建了所有必要的配置文件(部署定义/服务/机密/卷文件)。这是我的github链接:
任何帮助都将不胜感激!提前谢谢大家 您必须为您的postgres pod创建一个(集群ip)以使其“可访问”。创建服务时,可以通过。默认值:
。但是,将postgres(或任何db)作为一个简单的pod运行是危险的(一旦您或k8s重新创建pod或将其放大,您就会丢失数据)。您可以使用或使用正确安装
获得地址后,您可以将其放入并从settings.py访问它
'USER': 'stefan_radonjic',
'PASSWORD': 'cepajecar995',
'HOST': os.getenv('POSTGRES_HOST'),
'PORT': os.getenv('POSTGRES_PORT'),
编辑:
将其放在部署yaml()中:
在你的settings.py中
'USER': 'stefan_radonjic',
'PASSWORD': 'cepajecar995',
'HOST': os.getenv('POSTGRES_HOST'),
'PORT': os.getenv('POSTGRES_PORT'),
你必须为你的postgres pod创建一个(集群ip)以使其“可访问”。创建服务时,可以通过。默认值:
。但是,将postgres(或任何db)作为一个简单的pod运行是危险的(一旦您或k8s重新创建pod或将其放大,您就会丢失数据)。您可以使用或使用正确安装
获得地址后,您可以将其放入并从settings.py访问它
'USER': 'stefan_radonjic',
'PASSWORD': 'cepajecar995',
'HOST': os.getenv('POSTGRES_HOST'),
'PORT': os.getenv('POSTGRES_PORT'),
编辑:
将其放在部署yaml()中:
在你的settings.py中
'USER': 'stefan_radonjic',
'PASSWORD': 'cepajecar995',
'HOST': os.getenv('POSTGRES_HOST'),
'PORT': os.getenv('POSTGRES_PORT'),
以下是我的调查结果:
数据:
用户:c3RlZmFuX3JhZG9uamlj#stefan#u radonjic
passowrd:sdfsdfsd#cepajecar995
因此,postgres实例无法启动。我通过运行命令kubectl descripe pods查看事件发现了这一点
环境蟒蛇缓冲1
运行mkdir/agent技术
WORKDIR/agent技术
抄袭/代理技术
运行pip安装-r src/requirements.txt
曝光8000
CMD python src/manage.py runserver 0.0.0.0:8000--settings=agents.config.settings
以下是我的发现:
数据:
用户:c3RlZmFuX3JhZG9uamlj#stefan#u radonjic
passowrd:sdfsdfsd#cepajecar995
因此,postgres实例无法启动。我通过运行命令kubectl descripe pods查看事件发现了这一点