我想在POD中运行papermill
命令并获取错误(如果有(。这必须使用bash operator
I气流从气流工人那里完成。
我已经尝试根据需要运行命令,我尝试从自己的工人中运行多个bash命令,这些命令本来可以在工人内部执行。但这只是给了我这样的想法,即这样的事情是可能的。虽然,如果有更好的方法可以解决这个问题,我都是耳朵。
要运行的bash命令是:
papermill check1.ipynb check1_output.ipynb -p params '{"aviral":"srivastava", "apoorv":"srivastava"}'
手动,我在我的POD中exec
,然后运行此命令。我想在气流的dag中使其成为bash命令。
要在pod
中使用kubectl
,您需要在pod
中使用二进制文件。
您可以使用kubectl
的安装创建Docker映像。
我认为Dockerfile看起来可能是这样:
FROM ubuntu:14.04
# Install.
RUN
sed -i 's/# (.*multiverse$)/1/g' /etc/apt/sources.list &&
apt-get update &&
apt-get -y upgrade &&
apt-get install -y build-essential &&
apt-get install -y software-properties-common &&
apt-get install -y byobu curl git htop man unzip vim wget &&
rm -rf /var/lib/apt/lists/* &&
# Installing kubectl using native package management
apt-get install -y apt-transport-https &&
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - &&
echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee -a /etc/apt/sources.list.d/kubernetes.list &&
apt-get update &&
apt-get install -y kubectl
# Add files.
ADD root/.bashrc /root/.bashrc
ADD root/.gitconfig /root/.gitconfig
ADD root/.scripts /root/.scripts
# Set environment variables.
ENV HOME /root
# Define working directory.
WORKDIR /root
# Define default command.
CMD ["bash"]
或为容器定义命令和参数,并在pod
开始时使用它来安装kubectl
。
如果您想从Kubernetes部署中使用它,则.yaml
的部分可能看起来像:
...
spec:
containers:
- name: ubuntu-with-kubectl
image: ubuntu
command: ["/bin/sh","-c"]
args:
- apt-get update && apt-get install -y apt-transport-https;
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -;
echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' | tee -a /etc/apt/sources.list.d/kubernetes.list;
apt-get update;
apt-get install -y kubectl;
...
您也可以使用kubectl exec -it <pod_name> bash
进入POD,然后使用本指南安装并设置Kubectl,,但它将在容器重新启动上启用。