Kubernetesさまざまなデプロイ形式について
Kubernetesさまざまなデプロイ形式について
Kubernetesはさまざまなデプロイ形式をサポートしています。
自動復旧やスケーリング、コンテナ群のアップデートなど、デプロイに関する作業の一部はKubernetesによって自動化されています。
Deployment
Deploymentは、Pod群を一定数を維持しながらクラスタ上に展開するのに有用なリソースです。
Deployment機能で優秀なのがセルフヒーリングです。
セルフヒーリングは障害の発生などによりクラスタ全体で設定された数のPodが正常に稼動していない場合に、自動的に新たなPodを実行し復旧を試みる機能です。
障害時に自動で修復作業をしてくれるのでサービスの可用性を向上してくれます。
さらにDeploymentはPod群のスケーリングもサポートしてくれます。
例えば、以下のような設定をします。
apiVersion: apps/v1 kind: Deployment metadata: name: hoge-worker spec: replicas: 2 <===== 稼働されるPodの数を1->2に変更
そのあとにkubectlを実行するとPodが自動的にスケールします。
$kubectl apply -f hogehoge.yaml
JobとCronJob
Jobとして、最低限成功する必要のあるPod数、タイムアウトする時間、失敗時の再実行ポリシー、許容される失敗回数などを設定すると、Kubernetesはそれに従ってPodをデプロイして実行し、Podの終了ステータスからその成否を判定して再実行などの処理を行います。
さらにこのJobリソースを制御し、Cronフォーマットで実行開始時間や定期実行などの設定が可能なCronJobというリソースも利用できます。
定期実行したいような処理はCronjobにして実行時間などをセットアップすることでバッジ処理が可能になります。
CronJobとJobの違いについては以下の記事が詳しく書かれていました。 engineering.mercari.com
参考
Amazon.co.jp: イラストでわかるDockerとKubernetes Software Design plus eBook: 徳永 航平: Kindleストア