Python应用程序映像在Docker中运行,但它不在Kubernets中运行



我一直试图在Kubernets上运行PythonDjango应用程序,但没有成功。该应用程序在Docker中运行良好。

这是对Kubernets:的yaml部署

apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: "2022-02-06T14:48:45Z"
generation: 1
labels:
app: keyvault
name: keyvault
namespace: default
resourceVersion: "520"
uid: ccf0e490-517f-4102-b282-2dcd71008948
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: keyvault
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: keyvault
spec:
containers:
- image: david900412/keyvault_web:latest
imagePullPolicy: Always
name: keyvault-web-5wrph
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
conditions:
- lastTransitionTime: "2022-02-06T14:48:45Z"
lastUpdateTime: "2022-02-06T14:48:45Z"
message: Deployment does not have minimum availability.
reason: MinimumReplicasUnavailable
status: "False"
type: Available
- lastTransitionTime: "2022-02-06T14:48:45Z"
lastUpdateTime: "2022-02-06T14:48:46Z"
message: ReplicaSet "keyvault-6944b7b468" is progressing.
reason: ReplicaSetUpdated
status: "True"
type: Progressing
observedGeneration: 1
replicas: 1
unavailableReplicas: 1
updatedReplicas: 1

这是我用来在Docker:中运行图像的docker compose文件

version: "3.9"

services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"

这是我用来在docker:中运行图像的docker文件

FROM python:3.9
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

Kubectl describe pod输出:

Events:
Type     Reason     Age                From               Message
----     ------     ----               ----               -------
Normal   Scheduled  51s                default-scheduler  Successfully assigned default/keyvault-6944b7b468-frss4 to minikube
Normal   Pulled     37s                kubelet            Successfully pulled image "david900412/keyvault_web:latest" in 12.5095594s
Normal   Pulled     33s                kubelet            Successfully pulled image "david900412/keyvault_web:latest" in 434.2995ms
Normal   Pulling    17s (x3 over 49s)  kubelet            Pulling image "david900412/keyvault_web:latest"
Normal   Created    16s (x3 over 35s)  kubelet            Created container keyvault-web-5wrph
Normal   Started    16s (x3 over 35s)  kubelet            Started container keyvault-web-5wrph
Normal   Pulled     16s                kubelet            Successfully pulled image "david900412/keyvault_web:latest" in 395.5345ms
Warning  BackOff    5s (x4 over 33s)   kubelet            Back-off restarting failed container

Kubectl log pod不显示任何内容:(

谢谢你的帮助。

这是一个发布的社区wiki答案,以提高可见性。请随意扩展。

根据这些意见,解决方案应如下所示。

  1. 从Compose文件中删除volumes定义:
version: "3.9"
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000"
  1. 使用CMD为Dockerfile中的映像指定启动命令:

FROM python:3.9
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD ["python3","manage.py","runserver"] 

然后将Docker Compose文件转换为Kubernetes资源。这可以通过使用Kompose或其他合适的解决方案来完成。

相关内容

  • 没有找到相关文章

最新更新