- Dockerとかコンテナとかについての記載はせず、GKEについての記載のみする(あくまで自分のメモ程度)
- 気が向いたらDockerとかk8sについての記事も書こうかな・・・
GKE
- k8sをGoogleCloudで簡単に使えるようにしたサービス
- 2種類のモードがある
- 標準モード(standard)
- Autopilotモード
standardモード
料金
- クラスタの管理料金
- ノードの管理料金
特徴
- ワーカーノードのリソース情報を含んだ設定を定義しておく必要がある
Autopilotモード
料金
- vCPUの料金
- ポッドメモリの料金
- エフェメラルストレージ(一時的に利用するストレージ)の料金
特徴
- ワーカーノードが自動で管理される
- コンテナが要求するリソース分のワーカーノードが自動で用意される
- つまり、作業者がワーカーノードを管理しなくても自動でオートスケーリングを実現させる
ワークロード
- ワークロードとは、Kubernetes上で実行中のアプリケーション
- ワークロードが1つのコンポーネントからなる場合でも、複数のコンポーネントが協調して動作する場合でも、KubernetesではそれらはPodの集合として実行される
- Kubernetesでは、Podはクラスター上で実行中のコンテナの集合として表される
- Podには定義されたライフサイクルがある
- たとえば、一度Podがクラスター上で実行中になると、そのPodが実行中のノード上で深刻な障害が起こったとき、そのノード上のすべてのPodは停止してしまうことになる
- Kubernetesではそのようなレベルの障害を最終的なものとして扱うため、たとえノードが後で復元したとしても、ユーザーは新しいPodを作成し直す必要がある
引用:https://kubernetes.io/ja/docs/concepts/workloads/
- ワークロードリソースの種類
- ReplicaSet
- Deployment
- DaemonSet
- StatefulSet
ReplicaSet
- 期待するPodの数を定義するためのリソース
- アプリケーションの可用性が向上
- Deploymentで内部的にReplicaSetが使われている
Deployment
- Podの複数レプリカを管理する
- Podの更新やロールバックを簡単に行えるようにできる
- アプリケーションのバージョンアップやロールバックなどの継続的な展開が容易になる
覚えときたい設定値
- MaxUnavailable
- 停止状態になる最大Pod数
- MaxSurge
- 宣言したPod数を超えて作れるPod数
StatefulSet
- 各Podに一意な識別子を割り当て、順序付けられた起動やシャットダウン、永続化されたストレージへのアクセスなど、状態を維持する必要があるアプリケーションに適している
- データベース、メッセージングキュー、キャッシュストアなどのアプリケーションに適している
- Stateful: 状態を維持すること
DaemonSet
- クラスタ内の全てのノードに対して単一のPodをデプロイするリソース
- 全てのノードに対してデーモンプロセスを実行するためのPodを簡単にデプロイできる
- ログ集約、ネットワークデーモン、ストレージデーモンなど、クラスタ全体で実行する必要があるタスクに適している
- Daemon: コンピューター上で常駐するバックグラウンドプロセスのこと