2017-08-18 7 views
1

私はKubernetesを使用してDockerサービスを実行しています。これは、毎日再起動が必要な不具合のあるサービスです。複数の理由から、プログラムで問題を解決することはできず、毎日ドッカーを再起動するだけで問題は解決します。 私がKubernetesに移行したとき、私は "docker restart [mydocker]"を行うことができないことに気付きました。しかし、ドッカーはreCreate戦略を採用しているため、Kubernetesが新しいものを作成するためにはポッドを削除するだけです。展開中のポッドを再起動(削除)するためのKuronnetesのCronjob

KubernetesでCronTaskを使用して、Podを削除するこのタスクを自動化するか、または再起動する別のタスクを自動化できますか?

お手数ですがありがとうございます。

編集:私の現在のデプロイメントYML:

スケジュールされたジョブポッドは、それが可能なジョブを再起動することはcronの動作に構築され、時間と組み合わせる:

apiVersion: v1 
kind: Service 
metadata: 
    name: et-rest 
    labels: 
    app: et-rest 
spec: 
    ports: 
    - port: 9080 
     targetPort: 9080 
     nodePort: 30181 
    selector: 
    app: et-rest 
    tier: frontend 
    type: NodePort 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: et-rest 
    labels: 
    app: et-rest 
spec: 
    strategy: 
    type: Recreate 
    template: 
    metadata: 
     labels: 
     app: et-rest 
     tier: frontend 
    spec: 
     containers: 
     - image: et-rest-image:1.0.21 
     name: et-rest 
     ports: 
     - containerPort: 9080 
      name: et-rest 
     volumeMounts: 
     - name: tz-config 
      mountPath: /etc/localtime 
     volumes: 
     - name: tz-config 
     hostPath: 
      path: /usr/share/zoneinfo/Europe/Madrid 
+0

サービスはどの言語で書かれていますか?サービスを「自殺」させる方が、外部のコンポーネントに頼るのではなく、毎回サービスを自殺させるほうが、より簡単で良いでしょう。 – whites11

+0

ありがとうございますがコメントとして、プログラムで再起動することはできませんし、コンテナ自体から問題を解決することはできません。 – icordoba

答えて

3

あなたがスケジュールされたジョブのポッドを使用することができますあなたが必要とする動作につながるか、X時間ごとにアプリを再起動します。

apiVersion: batch/v2alpha1 
kind: ScheduledJob 
metadata: 
    name: app-with-timeout 
spec: 
    schedule: 0 * * * ? 
    jobTemplate: 
    spec: 
     activeDeadlineSeconds: 3600*24 
     template: 
     spec: 
      containers: 
      - name: yourapp 
      image: yourimage 
+0

ありがとうございます。これをymlファイルに追加できますか? Kubernetes docsで読むと、activeDeadlineSecondsはポッドを削除しますが、ポッドは作成されません。あなたは確認していただけますか?ありがとう。 https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ – icordoba

+0

ああ、申し訳ありません:私の悪い:私は自動再起動のための予定されたジョブを掲示していたはずです:投稿の更新 –

+0

マイナーチェンジ後CronJob(v1.5を開始するScheduledJobではない)を「適用」することができました。スケジュールされていますが、実行されたときにサービスを開始しません(おそらく、0 * * *の真夜中を待っていますか?)。どのように私はymlを適用する最初の時間を開始することができます任意のアイデア?ありがとう。 – icordoba

関連する問題