【发布时间】:2020-11-09 16:32:41
【问题描述】:
我想运行一个名为 rstudio 包管理器的应用程序。它有一些终端命令要在部署后运行。有没有办法在部署文件中添加这些命令?我尝试过这种方式,但我遇到了 crashloopback 错误。我对编写部署文件完全陌生。我做错了什么或弄乱了语法吗?
apiVersion: apps/v1
kind: Deployment
metadata:
name: rspm-deployment
spec:
selector:
matchLabels:
app: rspm
replicas: 1
template:
metadata:
labels:
app: rspm
spec:
nodeSelector:
kubernetes.io/hostname: nckaoepekin.local
containers:
- env:
- name: RSPM_LICENSE
value: my_license_key
image: rstudio/rstudio-package-manager:latest
name: rstudio-package-manager
command: ["/bin/sh"]
args: ["-c", "alias rspm='/opt/rstudio-pm/bin/rspm'; rspm create repo --name=prod-cran --description='Access CRAN packages'; rspm subscribe --repo=prod-cran --source=cran; rspm sync"]
ports:
- containerPort: 4242
resources: {}
securityContext:
privileged: true
restartPolicy: Always
status: {}
---
kind: Service
apiVersion: v1
metadata:
name: rstudio-pm
spec:
selector:
app: rspm
ports:
- protocol: TCP
port: 4242
targetPort: 4242
nodePort: 31010
type: NodePort
我想添加这些终端命令(上面也指定)
alias rspm='/opt/rstudio-pm/bin/rspm'
rspm create repo --name=prod-cran --description='Access CRAN packages'
rspm subscribe --repo=prod-cran --source=cran
rspm sync
当我删除指定的命令和参数时,部署文件正在工作。但是当我添加命令和参数时,我得到了 crashloopback 错误。任何线索将不胜感激。谢谢
【问题讨论】:
-
这些命令需要在容器开始运行后运行吗?
-
是的,没错。这些命令需要在 pod 运行 @tarunkhosla 之后执行。我总是可以进入 pod 并运行这些命令。但是还有其他方法可以自动执行这些步骤吗?
-
还检查 pod 状态为 CrashLoopBackoff 之前的日志,这将显示丢失的内容或无法识别的命令。
-
kubernetes.io/docs/tasks/configure-pod-container/… 尝试使用上面链接中的 postHandler。 @悉达多
-
是的,可以应用到容器上。
标签: linux docker kubernetes deployment