Kubernetesオブジェクトとは?
クラスタの状態を表現する。
- どんなコンテナアプリケーションが動いているか。
- 利用可能なリソースはどれだけか。
- アプリケーションの振る舞いに関するポリシー
フィールド
コントロールプレーンは理想状態と現実状態が一致するように管理します。
spec:理想状態
kubectlやプログラムにより変更する。
status:現実状態
kubernetesによって更新されます。
オブジェクト作成時の必須フィールド
apiVersion
どのバージョンのKubernetes APIか(例:v1など)
kind
どの種類のオブジェクトか(例:Pod、Deployment)
metadata
オブジェクトを一意に識別するための情報(例:name、UID、namespace)
spec
理想状態。内容はオブジェクトごとに異なります。
オブジェクト管理手法
Kubernetesオブジェクトはいずれか一つの手法で管理することが推奨されています。公式でも複数手法を組み合わせないように言われています。
命令型コマンド(開発)
開発用コマンドです。直接クラスター内の現行オブジェクトに対して処理を行う。
例
1 |
kubectl create namespace [ネームスペース名] |
命令型オブジェクト設定(本番)
kubectlコマンドに処理内容、任意のオプション、そして最低一つのファイルを指定する。ファイルが対象になります。
例
1 |
kubectl create -f [ファイル名] |
宣言型オブジェクト設定(本番)
ユーザーはローカルに置かれている設定ファイルを操作する。ユーザーはファイルに対する操作内容を記述しない。ディレクトリが対象になります。
例
1 |
kubectl apply -f [ディレクトリ名] |
ワークロードリソースとは?
複数のPodを作成・管理するためのリソース
例
ReplicaSet
コンテナを集めたものです。指定したレプリカ数のPodを常に保証する。(スケールする。)基本はこれの上位リソースのDeploymentを使うのでReplicaSetを使うということはない。(ただ、Deploymentを理解する前にReplicaSetについても知っておくのは良い。)
フィールド
replicas
稼働させたいPodの数
pod templates
Podを作成するときのテンプレート
selector
対象となるPodを特定するため。pod templatesの中のラベルと一致している必要がある。
Deployment
ReplicaSetの集合でReplicaSetの世代管理ができます。PodとReplicaSetのアップデート機能(ローリングアップデート、ロールバックなど)を提供
主な機能
- Replicasetのロールアウト
- 不安定な場合の前バージョンへのロールバック
- スケールアップ、ダウンする。
使用頻度
かなり高くほとんどのアプリケーションがDeploymentで管理
フィールド
ほとんどReplicaSetと同じ
DaemonSet
Podをすべてのノードで稼働
StatefulSet
Deploymentと似ているが少し違う。同じPodの集合ではあるが、StatefulSetはPodをスケールする際に名前が一定になります。
ステートフルなアプリケーションを管理
Job
Podの作成と失敗時の対応を定義
CronJob
定期的にJobをスケジュール
Podテンプレート
ワークロードリソースが作成管理するPodの情報
例
- コンテナイメージ
- コンテナ名
- ボリューム
- リソース
この記事へのコメントはありません。