无法从 docker 容器创建 kunerbetes pod

问题描述

我创建了一个简单的 Python 应用程序,它可以从 sql 数据库读取并显示一个值。我为应用程序和 sql DB 创建了单独的 docker 容器,应用程序按预期运行。下面是我的应用程序的 Dockerfile。我将凭据作为环境变量传递给 python 应用程序。

FROM laudio/pyodbc:1.0.4

workdir /pythonappsource

ARG A_DB_SERVER_NAME=""
ARG A_DB_NAME=""
ARG A_DB_USERNAME=""
ARG A_DB_PASSWORD=""

ENV DB_SERVER_NAME=$A_DB_SERVER_NAME
ENV DB_NAME=$A_DB_NAME
ENV DB_USERNAME=$A_DB_USERNAME
ENV DB_PASSWORD=$A_DB_PASSWORD

ADD PythonApp.py .

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

我现在正在尝试将 docker 容器添加到 kubernetes pod。 sql DB pod 运行良好,没有任何问题。但是 python 应用程序的 pod 没有启动。它因以下错误而崩溃:

回溯(最近一次调用最后一次): 文件“PythonApp.py”,第 3 行,在 cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for sql Server};SERVER=;PORT=1433;DATABASE=;UID=;PWD=') pyodbc.OperationalError: ('HYT00','[HYT00] [Microsoft][ODBC Driver 17 for sql Server]登录超时过期 (0) (sqlDriverConnect)')

我创建了一个服务来将数据库公开给 python 应用程序。以下是该服务的代码

    apiVersion: v1
    kind: Service
    Metadata:
      name: db-service
    spec:
      ports:
        - protocol: TCP
          port: 1433
          targetPort: 1433

下面是python应用的部署文件

apiVersion: apps/v1
kind: Deployment
Metadata:
  name: pythonapp-depl
  labels:
    app: pythonapp-depl  
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pythonapp-depl
  template:
    Metadata:
      labels:
        app: pythonapp-depl
    spec:
      containers:
      - image: repository:image
        name: pythonapp-depl
        env:
        - name: DB_USERNAME
          valueFrom:
             secretKeyRef:
               name: db-secret
               key: db_username
        - name: DB_PASSWORD
          valueFrom:
             secretKeyRef:
               name: db-secret
               key: db_password
        - name: DB_SERVER_NAME
          valueFrom:
             configMapKeyRef:
               name: db-configmap
               key: database_url
        - name: DB_NAME
          valueFrom:
             configMapKeyRef:
               name: db-configmap
               key: database_name

我对 kubernetes docker 很陌生,所以我知道我错过了一些非常愚蠢的东西。感谢任何帮助。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...