ポッドの再起動をスケジュールする方法

19
Leonardo Carraro 2018-09-20 09:52.

時間に基づいてポッドを自動的に再起動することはできますか?

たとえば、クラスターのポッドを毎朝午前8時に再起動したいとします。

6 answers

4
Nicola Ben 2018-09-20 17:15.

そのための特定のリソースがあります: https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/

ここに例があります:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: your-cron
spec:
  schedule: "*/20 8-19 * * 1-5"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: your-periodic-batch-job
        spec:
          containers:
          - name: my-image
            image: your-image
            imagePullPolicy: IfNotPresent
          restartPolicy: OnFailure

新しいポッドを起動するときに古いポッドを置き換える場合は、に変更spec.concurrencyPolicyReplaceます。を使用Forbidすると、古いポッドがまだ実行されている場合、新しいポッドの作成はスキップされます。

44
OhJeez 2019-10-14 21:25.

cronジョブを使用しますが、ポッドを実行するのではなく、デプロイを毎日再開するKubernetes APIコマンドをスケジュールします(kubectl rollout restart)。そうすれば、何か問題が発生した場合でも、古いポッドがダウンしたり削除されたりすることはありません。

ロールアウトは新しいReplicaSetを作成し、それらが起動するのを待ってから、古いポッドを強制終了し、トラフィックを再ルーティングします。サービスは中断されることなく継続されます。

RBACを設定して、クラスタ内から実行されているKubernetesクライアントがKubernetesAPIへの必要な呼び出しを実行する権限を持つようにする必要があります。

---
# Service account the client will use to reset the deployment,
# by default the pods running inside the cluster can do no such things.
kind: ServiceAccount
apiVersion: v1
metadata:
  name: deployment-restart
  namespace: <YOUR NAMESPACE>
---
# allow getting status and patching only the one deployment you want
# to restart
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: deployment-restart
  namespace: <YOUR NAMESPACE>
rules:
  - apiGroups: ["apps", "extensions"]
    resources: ["deployments"]
    resourceNames: ["<YOUR DEPLOYMENT NAME>"]
    verbs: ["get", "patch", "list", "watch"] # "list" and "watch" are only needed
                                             # if you want to use `rollout status`
---
# bind the role to the service account
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: deployment-restart
  namespace: <YOUR NAMESPACE>
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: deployment-restart
subjects:
  - kind: ServiceAccount
    name: deployment-restart
    namespace: <YOUR NAMESPACE>

そして、cronjob仕様自体:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: deployment-restart
  namespace: <YOUR NAMESPACE>
spec:
  concurrencyPolicy: Forbid
  schedule: '0 8 * * *' # cron spec of time, here, 8 o'clock
  jobTemplate:
    spec:
      backoffLimit: 2 # this has very low chance of failing, as all this does
                      # is prompt kubernetes to schedule new replica set for
                      # the deployment
      activeDeadlineSeconds: 600 # timeout, makes most sense with 
                                 # "waiting for rollout" variant specified below
      template:
        spec:
          serviceAccountName: deployment-restart # name of the service
                                                 # account configured above
          restartPolicy: Never
          containers:
            - name: kubectl
              image: bitnami/kubectl # probably any kubectl image will do,
                                     # optionaly specify version, but this
                                     # should not be necessary, as long the
                                     # version of kubectl is new enough to
                                     # have `rollout restart`
              command:
                - 'kubectl'
                - 'rollout'
                - 'restart'
                - 'deployment/<YOUR DEPLOYMENT NAME>'

必要に応じて、展開がロールアウトされるのをcronjobで待機させる場合は、cronjobコマンドを次のように変更します。

command:
 - bash
 - -c
 - >-
   kubectl rollout restart deployment/<YOUR DEPLOYMENT NAME> &&
   kubectl rollout status deployment/<YOUR DEPLOYMENT NAME>
12
Ryan Lowe 2019-04-12 14:27.

常に再起動ポリシーがあるポッドのもう1つの迅速で汚いオプション(どのcronジョブは処理しないはずです-を参照してください)https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#writing-a-job-spec)は、単に時間をテストし、指定されたスケジュールでポッドを再起動するlivenessProbeです

。起動後、1時間待ってから、毎分時間を確認します。時間が3(AM)の場合はプローブに失敗し、再起動します。それ以外の場合は合格です。

livenessProbe:
  exec:
    command:
    - exit $(test $(date +%H) -eq 3 && echo 1 || echo 0)
  failureThreshold: 1
  initialDelaySeconds: 3600
  periodSeconds: 60

時間の粒度は、日付を返してテストする方法次第です;)

もちろん、実際の活性プローブとして活性プローブをすでに使用している場合、これは機能しません¯\ _(ツ)_ /¯

3
Dmitry 2020-04-21 00:50.

@ Ryan Loweからアイデアを借りましたが、少し変更しました。24時間以上経過したポッドを再起動します

      livenessProbe:
        exec:
          command:
             - bin/sh
            - -c
            - "end=$(date -u +%s);start=$(stat -c %Z /proc/1 | awk '{print int($1)}'); test $(($end-$start)) -lt 86400"
1
Andre Albert 2018-09-20 17:04.

による https://iquestion.pro/q/so58760289kind: CronJob持ってjobTemplateを作成することができますcontainers。したがって、CronJobはこれらのコンテナをactiveDeadlineSeconds1日で開始します(再起動するまで)。あなたの例によると、それはschedule: 0 8 * * ?午前8時です

0
Mosd 2020-11-12 23:41.

@Ryan Loweの回答から、既存のアプリが構成に追加したい場合:

oc set probe dc/myapp --liveness --initial-delay-seconds=1800 --period-seconds=600 --failure-threshold=1 -- bash -c 'exit $(test $(date +%H) -eq 8 && echo 1 || echo 0)'

https://www.mankier.com/1/oc-set-probe

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

VSBは本日2年前にリニューアルしました。それは乗り物でした。

VSBは本日2年前にリニューアルしました。それは乗り物でした。

VSB Facebookにいて、Snapchatが何に使用されているのかまだ理解していないと、クラブの老人になるかもしれませんが、Facebookには、世界を癒し、あなたと私にとってより良い場所にするための1つの機能があります。人類全体。Facebookの過去の記憶機能は、長い間忘れられていたものや、「否定性を取り除く」フィルターがないように見えるので、決して追体験したくない瞬間を思い起こさせるかわいいものの1つです。

「愚かな」BMWドライバーは、警察にすべての識別情報を提供した後、離陸します

「愚かな」BMWドライバーは、警察にすべての識別情報を提供した後、離陸します

警察から逃げるのは悪い考えです。特にあなたが立ち止まり、運転免許証を渡して、座ってあなたの情報を処理する時間を与えた後はなおさらです。しかし、その脱出がビデオでキャプチャされたこのBMWドライバーのように、人々はまだ常に愚かなことをしています。

悪魔とエイリアニストが今夜あなたの注意を争う

悪魔とエイリアニストが今夜あなたの注意を争う

トムエリスはルシファー(写真:フォックスネットワーク)、ダニエルブリュールはエイリアニスト(写真:カタヴェルメス/ターナーネットワークス)1月22日月曜日のテレビの世界で起こっていることです。すべての時間は東部です。

ドーラ・ミラージュは、ブラックパンサーの最新の短編映画で手直しされる力です

ドーラ・ミラージュは、ブラックパンサーの最新の短編映画で手直しされる力です

画像:マーベルマーベルの漫画では、ドーラミラージュは、ワカンダの王位とその王であるブラックパンサーを守るために誓ったエリートのすべて女性の戦士のチームです。しかし、マーベルの次のブラックパンサー映画の最新の特集から判断すると、ドーラミラージュは大画面ではるかに何かになるでしょう。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

活性化関数

活性化関数

活性化関数は、ニューラルネットワークの設計における重要な部分の1つです。モデルのパフォーマンスを向上させるには、これらの関数をよく理解する必要があります。

準備をしなさい、NASAがノーザンテリトリーからロケットを打ち上げます!

NASAは初めて、米国外の商用打ち上げサイトから打ち上げられます!

準備をしなさい、NASAがノーザンテリトリーからロケットを打ち上げます!

今日はNASA、オーストラリア、そして全世界にとって重要な日です。NASAはAESTの午後11時15分に、オーストラリアから27年ぶりのロケットを打ち上げます。さらに重要なことに、アメリカ以外の商業サイトから打ち上げるのはこれが初めてです。

宇宙:衛星、破片、戦争

宇宙:衛星、破片、戦争

どのプレーヤーがどの方向に動くかがはっきりしないサッカーの試合を想像してみてください。さて、私がこれから始める理由は、あなたがそのスペースを訪れていない可能性が非常に高いからです。私も訪れていません。

ガリレオは私たちのプロジェクトを誇りに思っていただろう

ガリレオは私たちのプロジェクトを誇りに思っていただろう

今週末、12人のガリレオプロジェクトのメンバーが私の家の裏庭に集まりました。プロジェクトが1年前に考案されて以来、新しい望遠鏡を通して基本的な質問への答えを見つけるというガリレオガリレイの遺産に触発されて、歴史的な1週間の終わりを祝いました。

Language