#Kubernetes Overview
Kubernetes Cluster
サーバー1台はMasterとして使って、他の複数のサーバはNodeとしてMasterに接続します。
このような組み合わせで接続されているのをKubernetes Clusterと言います。
※Nodeは3つ以上を推薦しています。
Master
Clusterを管理します。
Node
リソースを提供します。
Cluster全体のリソースを増やしたい場合はNodeを追加します。
Nodeにはkubeletが存在し、Kubernetes Masterと通信(using kubernetes API)、Nodeを管理します。
(kubeletをagentとも呼びます。)
Namespace
Cluster内のNamespaceがKubernetesのオブジェクトを独立した空間に分離(=隔離)します。
NamespaceはKubernetesの最小配布単位のPodがあり、このPodは外部からの接続が可能なように
IPアドレスを割り当てたServiceがあって接続が可能になります。
※別のNamespaceのPodへの接続はできない。
Pod
PodはKubernetes Applicationの基本実行単位であり、Deployする最小単位です。
Podには複数のContainerが入れます。
Container毎に1つのApplicationが動作するため、Podは複数のApplicationの稼働ができます。
Service
Kubernetesで動かしているサービス(PodのContainer)を外部公開します。
Podに含まれているContainerのtraffic load balancingをサポートします。
Volume
Podに問題が生じて再生成されると、その中のデータは消えてしまいます。
Volumeを作成して繋げておけば、データはVolumeに保管されるのでPodが再生成されても、データは消えません。
ResourceQuota/LimitRange
1つのNamespaceで使えるリソースの制御ができます。
例)Pod数、CPU、Memory
ConfigMap/Secret
Podの作成時、Containerの環境変数などを設定したファイルへのMountができます。
Controller
Podを管理する。
・Replication Controller/ ReplicaSet(基本的なController)
Podの状況を常に監視し、Podが多すぎるとPodを除去し、少ないとPodを開始したり、Podを管理します。
・Deployment
Application Instanceの生成と更新を担当します。
Podのバージョン管理を行います。
アップグレード時、問題が発生した場合はロールバックもできます。
・DaemonSet
1つのNodeに1つのPodが維持出来るように管理します。
・Job
1つ以上のPodを作成し、指定された数のPodが正常に終了することを保証します。
このJobを定期的に実行するときはCronJobを使います。