up::
コンテナオーケストレーションツール。
クラスターという複数の大きなリソース管理集合体があり、
クラスターはマスターノードと通常ノード=workerノードを持ち、
マスターノードから他ノードを管理し、
ノード内で各ポッドを使用し、
ポッドでコンテナを纏めている。
ノードはマシン。
マスターノード
- etcd
- データストア
- kube-api-server
- control planeノードを動かすためのAPIサーバー
- APIのサーバー部分
- kube-scheduler
- ポッドを実行するノード=workerノードの選定
- 選定
- kube-controller-manager
- APIサーバーの宣言による実行管理
- APIの実行部分
- cloud-controller-manger
- kubernetesと任意のクラウド環境との連携
- 外部接続
workerノード
- kubelet
- コンテナ・ボリューム・ポッドネットワークなどの設定管理
- 設定管理
- kube-proxy
- クラスター内の各workerノードで動作しているネットワークプロキシ(他workerノードとの連携)
- ノード連携
マニフェスト
kubernetesで実現したいことを書くファイル。
.yaml。
dockerfileのようなもの。
機能
サービス検出、負荷調整
ポッドにはそれぞれラベルがある。ラベルはkubernetesのサービスに設定しておき、負荷がかかったらマッチするポッドを見つけて負荷分散を行う。
サービスはkube-proxyを使う。
ストレージ自動化
kubernetesにはポッド内のコンテナで様々なストレージを利用するためのボリュームプラグインがある。
これによりマニフェストファイルの記述からボリューム作成、利用準備が自動で行われる。ストレージオーケストレーション。
- 空の共有ボリュームを払い出し、同一ポッド内のコンテナでデータ共有
- kubernetesの秘密情報、認定情報をボリュームとしてマウント、仕様
- kubertenesクラスタ外部のクラウドストレージ使用
もっと細かいことをしたいならCSI(Cloud Storage Interface)でプラグイン作成可能。
デプロイ管理
宣言的API。マニフェストファイルであるべき状態を定義すると、kubernetesが自動で実現・維持を行う。
自己回復
宣言的APIアーキテクチャにより自己回復も可能。
- 起動ポッド数の維持
- 外部負荷分散システムの再作成、設定値の復元
- iptables, ipvsなどの設定値復元
- ネットワーク上の位置を特定するサービスディスカバリ機能
スケジューリング
kube-scheduler。
様々な情報を元にどのworkerノードにポッドを実行させるか決定する。
- ポッド内のコンテナ軍が必要とするリソース情報
- 各ノードのCPU
- ノードに設定されたラベル情報
優先実行や分散配置など様々なユースケースに対応できる。
自動スケジューリング機能は自動ビンパッキング機能ともいう。
秘密情報と設定の管理
それ用のツールが付属。
Secret。コンテナからの使用時、ストレージではなくメモリに保存。
ConfigMap。Base64でエンコードして安全性確保。
実際に値を利用する際はボリュームマウント、環境変数、マニフェスト上の変数などを利用する。
クラウド・プロバイダー間の互換性
kubernetesのデプロイ、管理、運用をクラウドプロバイダーが行うサービス、kubernetesマネージドサービスという物がある。
普通はこれを使ってAWSやらAzureやらに任せる。