【发布时间】:2021-11-05 17:41:30
【问题描述】:
我创建了一个 Dockerfile 用于在 Docker 中运行 Jupyter。
FROM ubuntu:latest
FROM python:3.7
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
CMD ["jupyter", "notebook", "--allow-root", "--ip=0.0.0.0"]
我的 requirements.txt 文件如下所示:
jupyter
git+https://github.com/kubernetes-client/python.git
我运行了docker build -t hello-jupyter .,它构建得很好。然后我运行docker run -p 8888:8888 hello-jupyter,它运行良好。
当我运行 Docker 映像 hello-jupyter 时,我可以在网络浏览器 (127.0.0.1:8888) 中打开 Jupyter notebook。
现在我想将 Jupyter 作为 Kubernetes 部署运行。我创建了这个 deployment.yaml 文件:
apiVersion: v1
kind: Service
metadata:
name: hello-jupyter-service
spec:
selector:
app: hello-jupyter
ports:
- protocol: "TCP"
port: 8888
targetPort: 8888
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-jupyter
spec:
replicas: 4
selector:
matchLabels:
app: hello-jupyter
template:
metadata:
labels:
app: hello-jupyter
spec:
containers:
- name: hello-jupyter
image: hello-jupyter
imagePullPolicy: Never
ports:
- containerPort: 8888
我在 shell 中运行了这个命令:
$ kubectl apply -f deployment.yaml
service/hello-jupyter-service unchanged
deployment.apps/hello-jupyter unchanged
当我检查我的 pod 时,我看到了崩溃循环
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-jupyter-66b88b5f6d-gqcff 0/1 CrashLoopBackOff 6 7m16s
hello-jupyter-66b88b5f6d-q59vj 0/1 CrashLoopBackOff 15 55m
hello-jupyter-66b88b5f6d-spvl5 0/1 CrashLoopBackOff 6 7m21s
hello-jupyter-66b88b5f6d-v2ghb 0/1 CrashLoopBackOff 6 7m20s
hello-jupyter-6758977cd8-m6vqz 0/1 CrashLoopBackOff 13 43m
Pod 的状态为崩溃循环,我无法在 Web 浏览器中打开 Jupyter。
deployment.yaml 文件有什么问题? deployment.yaml 文件只是在四个不同的 pod 中运行 Docker 镜像 hello-jupyter。为什么 Docker 镜像在 Docker 中运行,而不在 Kubernetes pod 中运行?
这是我的一个 pod 的日志:
$ kubectl logs hello-jupyter-66b88b5f6d-gqcff
[I 18:05:03.805 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/traitlets/traitlets.py", line 537, in get
value = obj._trait_values[self.name]
KeyError: 'port'
我确实在我的 deployment.yaml 文件中指定了一个端口。我不确定为什么会在日志中出现此错误。
【问题讨论】:
-
向我们展示 pod 的日志。
-
@KlausD。我包括了一个日志
-
看起来您的代码中存在错误或缺少配置。
标签: python docker kubernetes jupyter-notebook jupyter