「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ネットワークインフラなどの自動展開やスケーリングといったコンテナの運用を自動化するための、
フリーソフトウェアによって構成されるコンテナオーケストレーションプラットフォーム。
経緯 †
- オープンソースソフトウェアとして公開したことで、
MicrosoftやRed Hatといった多くのIT企業が開発に参加表明。
- 2017年初頭に、Kubernetesをサポートする
Public Cloud は Google Cloud Platformのみだった。
- 2017年2月に、Microsoft AzureがKubernetesの公式サポートを表明、
クラウド業界は次第にKubernetesにシフトするようになった。
- オラクルやVMwareといった企業もCNCFに参加を表明
- GoogleやMicrosoft Azureとは競合関係にあるAWSも参加
- 2017年10月に、DockerがKubernetesサポートすることを発表。
- 2018年1月時点でLinux Foundationの傘下にあるCNCFが管理する
オープンソースプロジェクトとなっている。
アーキテクチャ †
- ネットワークで接続された複数のLinux上にクラスタを構築することで動作する。
- クラスタは主に複数のマスター (master) とノード (node) から構成される。
- マスターがクラスターの管理を行い、
- コンテナは各ノード上にデプロイされる。
- マスターやノードを構成するコンポーネントは下記のようになっている。
- マスターとノードのコンポーネントは同一のマシン上に存在してもよく、
最小の構成では1台からなるKubernetesクラスタが構築出来る。
マスター †
kube-apiserver †
Kubernetes APIを外部に公開するためのコンポーネント。
etcd †
Kubernetesクラスタの情報を保存する分散キーバリューストア。
kube-scheduler †
Podをどのノードに対してデプロイするかを選択するコンポーネント。
kube-controller-manager †
Kubernetesクラスタの各種コントローラを実行するコンポーネント。
cloud-controller-manager †
- Kubernetesとプラットフォームとなっている
クラウドプロバイダとの相互作用を担うコンポーネント。
- 各クラウドプロバイダに特化した機能を提供し、パフォーマンスを向上する。
その他アドオン †
- Kubernetesクラスタ内での名前解決を行うDNSサーバ
- 各種Web UIやクラスタ単位でロギングを行うコンポーネント(fluentd, etc.)
- , etc.
ノード †
kubelet †
- ノード上に常駐し、ノードの生存をクラスタに対して通知する。
- 自身に対するPodの割り当てが行われたかどうかを監視して
- ボリュームのマウント、
- コンテナのダウンロード/デプロイ、
- Podの生存確認
などを行い、クラスタに通知する機能も担う。
kube-proxy †
外部やapiserverからのアクセスをノード上の各Podに対して転送し、
Podへのアクセスを抽象化するコンポーネント。
Docker †
実際にコンテナを動作させるバックエンドに利用される。
supervisord †
kubeletとdockerが正しく動作し続けるように監視及び管理するコンポーネント。
fluentd †
クラスタレベルでのロギングを補助する。
Dockerとの関係 †
現在は、Dockerの存在感が薄れてきている。
参考 †
Publickey †