up::

コンテナオーケストレーションツール。

クラスターという複数の大きなリソース管理集合体があり、
クラスターはマスターノードと通常ノード=workerノードを持ち、
マスターノードから他ノードを管理し、
ノード内で各ポッドを使用し、
ポッドでコンテナを纏めている。

ノードはマシン。

”Kubernetes” の基本を徹底解説 - Qiita

マスターノード

  • 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やらに任せる。