Kubernetesとは....
kubernetes
KubernetsとはGoogleが開発した、コンテナ運用の自動化をする為のコンテナオーケストレーションシステム。
1. Dockerホストの管理 2.サーバーリソースの空き具合を考慮したコンテナ配置 3.スケーリング 4.複数のコンテナ郡へのアクセスを取りまとめるロードバランサー 5.死活監視
この辺をkubernetesなら自動化できます。
あるアプリケーションをKubernetes上にデプロイする際、Kubernetesに対して「アプリケーションやそれを構成するコンテナ群はこういう状態であるべき」というような理想状態をYAML(YAMLAin'tMarkupLanguage)やJSON(JavaScriptObjectNotation)形式の「マニフェスト」と呼ばれる設定ファイルの形で宣言すると、それを実現・維持するための具体的な作業をKubernetesがよしなに行ってくれます。
kubernetes概念
Kubernetesで実行されるアプリケーションは様々なリソースと協調して動作することで成立しています。
リソースとはアプリケーションのデプロイ構成するための部品のようなものです。
超ざっくり概要図
Control Planesとはk8sの心臓部分で動作を担います。別名AdminMasterとも呼ばれます。
kube-apiserver: k8sAPIを公開する etcd: k8sクラスタ情報の保存場所、key/valueストア kube-scheduler: Pod(コンテナ)をワーカーノードに割り当てる kube-controller-manager: k8sの操作全般を担当(Podを起動したり、障害を検知したり) cloud-controller-manager: クラウド(AWS/GCP)の機能と連携する
Node: 実際にコンテナが動作する環境。別名ワーカーとも呼ばれます。
kubelet: 各ノードで実行されるエージェントマスターノードとやりとりして指示に従う kube-proxy: NodeのNWルールを追加、削除、変更する コンテナランタイム: コンテナを実行するためのソフトウェア(Dockerとか)
KubernetesクラスとNode
KubernetesクラスタKubernetesの様々なリソースを管理する集合体のことを指します。クラスタが持つリソースで最も大きな概念がNode(ノード)と言います。
Pod
Pod(ポッド)はコンテナの集合体の単位で、少なくとも1つのコンテナを持ちます。
Dockerとkubernetes
2017年10月のDockerCon EC2017でDockerとkubernetesの統合が発表されました。
他のコンテナサービスとの比較
Kubernetes以外のコンテナサービスで有名どころでいえば以下のようなサービスがあります。
ECS Fargate
これらとの違いについては以下の動画がわかりやすかったです。
参考
今さら人に聞けないKubernetes入門!AWS環境で動かす25分の高速学習【有名ツールのみ使用】 - YouTube
Amazon.co.jp: イラストでわかるDockerとKubernetes Software Design plus eBook : 徳永 航平: 本
[挫折したエンジニア向け] Kubernetesの仕組みをちゃんと理解する (入門/基本編) - YouTube
K8S Architecture. What is Kubernetes (K8S)? | by Keshiha | Medium