如何从kubernetes群集中的气流工人中的另一个命名空间中的另一pod中运行命令



我想在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,,但它将在容器重新启动上启用

相关内容

  • 没有找到相关文章

最新更新