Alpine Linux Dockerイメージでcronジョブを実行しようとしています。このイメージは、Kubernetesコンテナーにプッシュされます。 Cronの仕事は、15分ごとにコンテナを再起動することです。だから私のコマンドはpkill processname
です。
Alpine Cronジョブについて少し:Alpine Linuxの場合、cronは定期的にフォローされます。つまり、フォルダーはすでに/ 15分作成されています。 /毎時。 /毎日。 /毎週。 /毎月。そのため、スクリプトを実行するには、いずれかのフォルダーにスクリプトをコピーする必要があります。
スクリプトを作成し、Alpine FAQのページで要求されたように、ファイルに名前拡張子を付けず、フォルダー内の実行権限でコピーしました。コマンドrun-parts --test /etc/periodic/15min
を実行しようとすると、実行する必要のあるスクリプトが1つあることがわかります。ただし、そのスクリプトは実行されません。ローカルマシンでそのDockerイメージを実行しようとすると、そのスクリプトではなく、フォルダーにファイルを作成するだけの別のスクリプトで実行すると、うまく機能します。
Kubeクラスタでcrond -f -l 8
を試して実行しても、tiはまだ機能しません。
私はこの部分の助けを本当にいただければ幸いです。
スーパーユーザーへようこそ。
まず第一に、多分あなたはそれに間違った方向に直面しています。コンテナ全体を15分ごとに再起動することが目標である場合は、以下のリンクを確認する必要があります。
Kubernetesの概念 -kubernetesがどのように機能するか、および人々がそこで使用する名前についての説明。
完全を期すために、実際に定期的なタスクを実行したい場合は、特定のKubernetesドキュメントを確認してください。これらには、cronジョブの作成方法とデバッグ方法が記載されています。 cronジョブの実行を積極的に妨げているものがある可能性があるため、ドキュメントのKubernetesの制限についても読むことをお勧めします
Cronjobタスクの作成方法について履歴書をお伝えしますが、kubernetesに慣れていない場合は上記を注意深く読み、内部のリンクをたどってください。kubernetesをプレイして基本を学ぶ準備ができています。
内部ではより詳細に説明されていますが、基本的にはコマンドの例とそれをデプロイする方法を示しています。 15分に1回になるように変更し、pkillを実行します。次の内容でyamlファイルを作成する必要があります(より複雑なcronの動作については構文を確認してください)。
# cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/15 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- pkill yourprocess
restartPolicy: OnFailure
次に、を使用して展開します
kubectl apply -f [FILENAME]
次のコマンドを使用して、cronjobがデプロイされたかどうかを確認します。
kubectl describe cronjob [CRON_JOB]
上記のプロセスをより多くのスクリーンショットと例で説明した投稿
この後、これは非常に一般的な答えです。コメントを投稿してお手伝いさせていただきますが、現在Alpine Linuxのインストールにアクセスできないため、役に立たない可能性があります。 これはあなたの問題に対処するAlpine Linuxのドキュメントページです
エラーの追跡:簡単な方法
正確ではありませんが、出て行くものを絞り込むための非常に簡単な方法があります。ここには2つの可能性があります。CRON自体に問題があるか、スクリプトに問題があります(許可など)。プロセスは簡単です:
エラーの追跡:ログ
システムの問題を解決する最良の方法は、ログを確認することです。 cronのようなソフトウェアは、特に設定されていない限り、通常、ログをsyslog(通常は/ var/log/syslogにあります)に保存します。 この投稿 cronロギングフォルダについて説明しています。
Cronインスタンスがログを記録している場所が見つかり、そこに何もない場合は、cronサービスがまったく実行されていないことを意味します。 Cronの問題には、この問題に対するAlpineLinux固有のソリューションがあります。エラーが表示された場合は、エラーを確認して、問題を絞り込んでください。そうでない場合は、スクリプトが実際に実行されていないことを確認する必要があります。
cronの問題
さて、あなたはcronが正しく機能していないことを知っています。考えられるさまざまなシナリオがあります。
Cronサービスが開始されていない可能性があります。サービスが実行されているかどうかを確認します。そうでない場合は、手動で開始してください。正常に起動したか確認し、起動処理に追加してください。その方法はOSによって異なります。 Alpine Linuxでは、これでうまくいくはずです。
rc-service crond start && rc-update add crond
スクリプトを配置するフォルダーが実際に追加されていることを確認するには、メインのcron構成ファイルを確認する必要があります。
おそらく、構成行の引数にスペースが含まれているなどのエラーがあるかもしれませんが、この場合は、フォルダーでテストコマンドを使用したため、これはシナリオではないようです。
スクリプトの問題
スクリプトを実行しても目的の出力が生成されない場合は、次の手順を実行することをお勧めします。
一般的な提案
編集:たぶん私はあなたの状況を間違った方法で理解しました、そしてあなたは これのようなシナリオにいます