技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

Kubernetesさまざまなデプロイ形式について

Kubernetesさまざまなデプロイ形式について

Kubernetesはさまざまなデプロイ形式をサポートしています。

自動復旧やスケーリング、コンテナ群のアップデートなど、デプロイに関する作業の一部はKubernetesによって自動化されています。

Kubernetesについてはこちら

Deployment

Deploymentは、Pod群を一定数を維持しながらクラスタ上に展開するのに有用なリソースです。

Deployment機能で優秀なのがセルフヒーリングです。

セルフヒーリングは障害の発生などによりクラスタ全体で設定された数のPodが正常に稼動していない場合に、自動的に新たなPodを実行し復旧を試みる機能です。

障害時に自動で修復作業をしてくれるのでサービスの可用性を向上してくれます。

f:id:lhiroki1205:20201222023623p:plain

さらに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ストア