Как запустить скрипт Shell с командами s sh с помощью задания cron в kubernetes - PullRequest
1 голос
/ 20 февраля 2020

Я хочу запустить скрипт оболочки, в котором есть s sh команды в файле, используя задание cron в kubernetes

test. sh

#!/bin/bash

echo copying files from edge node to batch pods;
ssh -q userid@<hostname>"kubectl config use-context testnamespace";
ssh -q userid@<hostname>"kubectl scale statefulsets testpod --replicas=1";

когда я выполняю его вручную, перейдя в модуль pod, он выдаёт мне ошибку "ssh command not found", а при запуске задания выдает сообщение permission denied.

может кто-нибудь помочь мне решить эту проблему.

1 Ответ

0 голосов
/ 27 февраля 2020

Это сообщение (ssh command not found) указывает на отсутствие клиента sh в вашем модуле. В комментариях вы упоминаете docker, поэтому я предполагаю, что вы используете изображение docker.

Чтобы установить S SH в ваш контейнер docker, вы должны запустить apt-get или yum или любой другой менеджер пакетов в соответствии с нашим Linux Distribution, и это должно быть указано в вашем Dockerfile.

Вот пример того, как этого добиться:

# A basic apache server. To use either add or bind mount content under /var/www

FROM ubuntu:12.04

MAINTAINER Kimbro Staken version: 0.1

RUN apt-get update && apt-get install -y apache2 && apt-get clean && rm -rf /var/lib/apt/lists/*

ENV APACHE_RUN_USER www-data

ENV APACHE_RUN_GROUP www-data

ENV APACHE_LOG_DIR /var/log/apache2

EXPOSE 80

CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

В этом примере мы устанавливаем apache на образ Ubuntu. В вашем сценарии вам нужно запустить что-то похожее на это:

RUN apt-get update && apt-get install -y openssh-client && apt-get clean && rm -rf /var/lib/apt/lists/*
...