技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

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(ノード)と言います。

参考:K8S Architecture

Pod

Pod(ポッド)はコンテナの集合体の単位で、少なくとも1つのコンテナを持ちます。

Dockerとkubernetes

2017年10月のDockerCon EC2017でDockerとkubernetesの統合が発表されました。

他のコンテナサービスとの比較

Kubernetes以外のコンテナサービスで有名どころでいえば以下のようなサービスがあります。

ECS
Fargate

これらとの違いについては以下の動画がわかりやすかったです。

www.youtube.com

参考

今さら人に聞けないKubernetes入門!AWS環境で動かす25分の高速学習【有名ツールのみ使用】 - YouTube

Amazon.co.jp: イラストでわかるDockerとKubernetes Software Design plus eBook : 徳永 航平: 本

[挫折したエンジニア向け] Kubernetesの仕組みをちゃんと理解する (入門/基本編) - YouTube

K8S Architecture. What is Kubernetes (K8S)? | by Keshiha | Medium