使用 kubectl 设置应用程序容器时出错?

问题描述 投票:0回答:1

我正在学习 kubernetes,我一直在尝试做的事情之一是使用 minikube 在本地设置 pod。我面临的问题是让应用程序容器运行。当我尝试执行到容器中时,出现以下错误:找不到容器,即使当我在 minikube 内执行 docker 镜像时,我可以看到该镜像在那里。

应用程序/部署.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      initContainers:
        - name: collectstatic
          image: surajitdas001/djangokubernetes
          imagePullPolicy: IfNotPresent
          command: ["python", "manage.py", "collectstatic", "--noinput"]
          envFrom:
            - secretRef:
                name: django-secrets
            - configMapRef:
                name: django-config
          volumeMounts:
            - name: staticfiles
              mountPath: /static/
      containers:
        - name: djangokubernetes
          image: surajitdas001/djangokubernetes
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8000
          envFrom:
            - secretRef:
                name: django-secrets
            - configMapRef:
                name: django-config
          volumeMounts:
            - name: staticfiles
              mountPath: /static/
        - name: nginx
          image: nginx
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
          volumeMounts:
            - name: nginx-conf
              mountPath: /etc/nginx/conf.d
              readOnly: true
            - name: staticfiles
              mountPath: /static/
              readOnly: true
      volumes:
        - name: nginx-conf
          configMap:
            name: nginx-conf
        - name: staticfiles
          emptyDir: {}

应用程序/secret.yml

apiVersion: v1
kind: Secret
metadata:
  name: django-secrets
type: Opaque
data:
  SECRET_KEY: dGVzdF9zZWNyZXQ=
  DATABASE_NAME: ZXRs
  DATABASE_PASSWORD: cG9zdGdyZXM=

docker 镜像

REPOSITORY                                TAG       IMAGE ID       CREATED         SIZE
surajitdas001/djangokubernetes            1.0       88e89267c5b0   3 days ago      1.12GB

 kubectl exec -it app-deployment-5fb8b55c54-gncff -- /bin/bash

Defaulted container "djangokubernetes" out of: djangokubernetes, nginx, collectstatic (init)
error: unable to upgrade connection: container not found ("djangokubernetes")
docker kubernetes minikube
1个回答
0
投票

container not found
错误代码通常表示 kubectl 无法与您尝试交互的 pod 或容器建立通信。这可能是因为 Pod 尚未准备好接收命令。

问题可能是容器尚未启动。在调试容器的部署问题时,建议直接与其 pod 交互,因为它代表距离容器最近的部署单元。借助以下命令识别 Pod:

kubectl describe pod <podname\>

kubectl logs <podname\> 

还可以通过以下命令检查 pod 是否存在于正确的命名空间中。如果没有指定命名空间,Kubectl 命令将针对默认命名空间中的对象运行。

  Kubectl get pods –namespace <namespace name\>

根据上述命令的输出可能可以知道此错误的原因,您可以检查以下解决步骤:

  1. 一旦识别出 pod,您就可以确定 pod 是否处于就绪状态以接受连接。

  2. 这也可能是由于缺乏资源而导致 Pod 被驱逐所致。

  3. 有可能是网络问题或者pod不存在。另请参阅 Azeez Lukman 的 Datree 文章了解更多信息。

另请参阅 Azeez Lukman 的 Datree 文章 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.