.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ネットワークインフラなどの自動展開やスケーリングといったコンテナの運用を自動化するための、
フリーソフトウェアによって構成されるコンテナオーケストレーションプラットフォーム。

経緯

  • 当初、Googleが開発していた
  • オープンソースソフトウェアとして公開したことで、
    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

ポッドをどのノードに対してデプロイするかを選択するコンポーネント。

kube-controller-manager

Kubernetesクラスタの各種コントローラを実行するコンポーネント。

cloud-controller-manager

  • Kubernetesとプラットフォームとなっている
    クラウドプロバイダとの相互作用を担うコンポーネント。
  • 各クラウドプロバイダに特化した機能を提供し、パフォーマンスを向上する。

その他アドオン

  • Kubernetesクラスタ内での名前解決を行うDNSサーバ
  • 各種Web UIやクラスタ単位でロギングを行うコンポーネント(fluentd, etc.)
  • , etc.

ノード

kubelet

  • ノード上に常駐し、ノードの生存をクラスタに対して通知する。
  • 自身に対するポッドの割り当てが行われたかどうかを監視して
    • ボリュームのマウント、
    • コンテナのダウンロード/デプロイ、
    • ポッドの生存確認

などを行い、クラスタに通知する機能も担う。

kube-proxy

外部やapiserverからのアクセスを、
ノード上の各ポッドに対して転送し、
ポッドへのアクセスを抽象化するコンポーネント。

Docker

実際にコンテナを動作させるバックエンドに利用される。

supervisord

kubeletとdockerが正しく動作し続けるように監視及び管理するコンポーネント。

fluentd

クラスタレベルでのロギングを補助する。

ポッド

概要

  • いくつかのコンテナをグループ化したもの。
  • ポッド単位で作成、開始、停止、削除といった操作を行う。
  • 1つのコンテナを作成したいときも「コンテナが1つ含まれるポッド」を作成する。

特徴

以下の特徴がある。

  • ポッド内のコンテナは、同一ホスト上に配備される。
  • ポッド内のコンテナは、仮想NICやプロセステーブルを共有する。
    → つまり、同じIPを使えたり、互いのプロセスが見えたりする。
    • 各ポッドには固有のIPアドレスがあり、ポートスペース全体を所有している。
    • ポッド内のコンテナはストレージを共有できる。
  • ポッドには、ポッドをグループするための1つ以上のラベルを指定できる。
  • 一般的には、サーバと、そのサーバと共に実行する補助サービスを含める。
    • Webサーバ
    • APサーバ
    • DBサーバ
    • KVSサーバ

Helm Charts

  • Kubernetesは、Helmというパッケージ・マネージャを使用する。
  • Helmでは、Chartという単位でパッケージを管理する。
  • Chartとは、kubernetes のマニフェストファイル群(RC, Service, Pod)をパッケージ化したもの。

トレンド

Dockerとの関係

  • 現在は、Dockerの存在感が薄れてきている。
  • コンテナとしてもDockerに依存しない「cri-o」と言う
    軽量コンテナランタイムの1.0が2017/10/17にリリースされた。

PaaSの上モノ部分

OpenShifts2iに相当するものが色々出ており、
(microsoftのdraftやGoogleのSkaffoldなど)
玉石混合で、なにがベストプラクティスなのか固まっていない。

参考

Helm Charts

Publickey


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-06-29 (金) 18:16:22 (445d)