世界一適当な技術ブログ

日々学んだ内容をとにかくにブログ形式でアウトプットします。(技術系中心)基本自分用備忘録です。

Kubernetesとは....

kubernetes

KubernetsとはGoogleが開発した、コンテナ運用の自動化をする為のコンテナオーケストレーションシステム。

1. Dockerホストの管理
2.サーバーリソースの空き具合を考慮したコンテナ配置
3.スケーリング
4.複数のコンテナ郡へのアクセスを取りまとめるロードバランサー
5.死活監視

この辺をkubernetesなら自動化できます。

あるアプリケーションをKubernetes上にデプロイする際、Kubernetesに対して「アプリケーションやそれを構成するコンテナ群はこういう状態であるべき」というような理想状態をYAML(YAMLAin'tMarkupLanguage)やJSON(JavaScriptObjectNotation)形式の「マニフェスト」と呼ばれる設定ファイルの形で宣言すると、それを実現・維持するための具体的な作業をKubernetesがよしなに行ってくれます。

kubernetes概念

Kubernetesで実行されるアプリケーションは様々なリソースと協調して動作することで成立しています。

リソースとはアプリケーションのデプロイ構成するための部品のようなものです。

f:id:lhiroki1205:20201031175915p:plain

超ざっくり概要図

f:id:lhiroki1205:20201223182856p:plain

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(ノード)と言います。 f:id:lhiroki1205:20201031181342p:plain

f:id:lhiroki1205:20210415102705p:plain 参考:K8S Architecture

Pod

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

f:id:lhiroki1205:20201031181426p:plain

Dockerとkubernetes

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

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

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

ECS
Fargate

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

www.youtube.com

参考

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

https://www.amazon.co.jp/%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8BDocker%E3%81%A8Kubernetes-Software-Design-plus-%E5%BE%B3%E6%B0%B8-ebook/dp/B08PNMRXKN/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=Docker%E3%81%A8Kubernetes&qid=1608282794&sr=8-1

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

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