我正在学习 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")
container not found
错误代码通常表示 kubectl 无法与您尝试交互的 pod 或容器建立通信。这可能是因为 Pod 尚未准备好接收命令。
问题可能是容器尚未启动。在调试容器的部署问题时,建议直接与其 pod 交互,因为它代表距离容器最近的部署单元。借助以下命令识别 Pod:
kubectl describe pod <podname\>
kubectl logs <podname\>
还可以通过以下命令检查 pod 是否存在于正确的命名空间中。如果没有指定命名空间,Kubectl 命令将针对默认命名空间中的对象运行。
Kubectl get pods –namespace <namespace name\>
根据上述命令的输出可能可以知道此错误的原因,您可以检查以下解决步骤:
一旦识别出 pod,您就可以确定 pod 是否处于就绪状态以接受连接。
这也可能是由于缺乏资源而导致 Pod 被驱逐所致。
有可能是网络问题或者pod不存在。另请参阅 Azeez Lukman 的 Datree 文章了解更多信息。
另请参阅 Azeez Lukman 的 Datree 文章 了解更多信息。