首页 > 解决方案 > 无法从 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 很陌生,所以我知道我错过了一些非常愚蠢的东西。任何帮助都将不胜感激。

谢谢!

标签: pythondockerkuberneteskubernetes-podpython-docker

解决方案


推荐阅读