0

我想papermill在 pod 中运行命令并获取错误(如果有)。这必须由使用bash operatori Airflow 的 Airflow 工作人员完成。

我已经尝试根据需要运行命令,我尝试从我自己的工作人员运行多个 bash 命令,这些命令是为了在工作人员内部执行的。但这只是让我觉得这样的事情是可能的。虽然,如果有任何更好的方法可以解决这个问题,我全神贯注。

要运行的 bash 命令是:

papermill check1.ipynb check1_output.ipynb -p params '{"aviral":"srivastava", "apoorv":"srivastava"}'

手动,我exec在我的 pod 中然后运行这个命令。我想在气流的 dag 中将此作为 bash 命令。

4

1 回答 1

0

kubectl在 a 中使用,pod您需要在pod.

您可以使用安装kubectl.

我认为 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"]

或者为容器定义命令和参数,kubectl并在启动时使用它来安装pod

如果你想在 Kubernetes Deployment 中使用它,部分.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;
...

您也可以使用本指南Install and Set Up kubectlkubectl exec -it <pod_name> bash进入 pod 并手动安装,但它会在容器重启时消失

于 2019-05-27T14:28:57.570 回答