【Kubernetes ワークロードリソース】
Kubernetes ワークロードリソース
- 複数のPodを作成、管理するためのリソース
- ReplicaSet:指定したレプリカ数のPodを常に保証する
- Deployment:Pod と ReplicaSet のアップデート機能を提供
- DaemonSet:Podを全てのノードで稼働
- StatefulSet:ステートフルなアプリケーションを管理
- Job:Podの作成と失敗時の対応を定義
- Cron Job:定期的にJob をスケジュール
ReplicaSet
- 普段使用されない!! → Deploymentが奨励されている
- 数のみを保証、新しいPodのDeployまでは面倒を見てくれないため。
- 常に指定したレプリカ数のPodを保つ
- フィールド
- replicas:稼働させたいPodの数
- pod templates:Podを作成時のテンプレート
- selector:対象となるPodを特定するため(Podテンプレート内のラベルは同じである必要がある)
Deployment
- ローリングアップデートやロールバックなどのアップデート機能を提供
- 主な機能
- ReplicaSetの更新
- 不安定な場合の前のバージョンヘロールバック
- スケールアップダウン
Deployment特有のフィールド
-
strategy:更新戦略
- type:"Recreate" か "RollingUpdate" を指定
- RollingUpdateの場合には
- maxUnavailable:更新処理中に利用不可になるPodの最大数
- maxSurge:更新処理にいくつエクストラで追加できるPodの最大数
- type:"Recreate" か "RollingUpdate" を指定
- revision History:過去のバージョンとしてReplicaSetを残しておく数(デフォルトは10)
- paused:一時停止されているかどうか
- progressDeadlineSeconds:更新プログレスの最大秒数(デフォルトは600秒)
ConfigMap
- 機密性のないデータをキーと値のペアで保存し、 Podから参照可能
- コンテナイメージと環境固有の設定を切り離す
- 例)アプリケーションの接続先DBのHost, User, Port、confファイル
- 使用方法)
- コンテナの環境変数の設定
- 読み取り専用のボリュームを作成し、 コンテナから読み込む
Secret
- 機密情報(パスワード、トークン等)を保存・管理し、Podから参照可能
- 例)アプリケーションの接続先DBのパスワード、Dockerレジストリへのアクセス権限
- 使用方法)
- ボリューム内のファイルとして、 Pod内のコンテナにマウントする
- コンテナの環境変数の設定
- kubeletがDockerイメージをpullする際に使用
Service
- Podの集合を抽象化して公開
- Podの集合に対するDNS名と負荷分散
- 各PodはIPアドレスを持っているが、 Podの作成削除のたびに、アプリケーションのIPアドレスの集合が変化するので使う側が大変になる
- ServiceがDNS名を提供し、 後ろにあるIPアドレスの管理をしてくれることで、常に同じ名前を使ってアプリケーションを参照できる
その他
Kubernetesとは?基本概念をわかりやすく解説!使い方やメリットもご紹介
おわり
UdmeyのKubernetes入門 本当によかったです。
ありがとうございます。
明日からは Kubernetes完全ガイド 第2版 を進めていきます!!