docker
GoogleCloudPlatform
kubernetes
rancher

Rancher2.0 Tech Preview2について

More than 1 year has passed since last update.

2018年1月24日にRancher LabsよりRancher2.0 Tech Preview2がリリースされました。

Tech Preview1のリリースから約4ヶ月の短期間ですが、大幅に変わっています。

一つずつ見ていきましょう。


Rancher2.0 Tech Preview2の主な特徴


  1. Rancher Serverは100%Go言語で書かれて、MySQLデータベースがなくなりました。

  2. Rancher Serverを従来のDockerホストや既存のKubernetesクラスタに展開できます。

  3. Rancher Kubernetes Engine(RKE)やGoogle Kubernetes Engine(GKE)などのマネージドKubernetesサービスを使用して、新しいKubernetesクラスタを作成できます。 Rancherは、RKEとGKEの両方のクラスタプロビジョニングを自動化します。将来的には、EKSやAKSなどのマネージドKubernetesサービスのサポートも追加します。

  4. 統一されたクラスタ管理インターフェイスから、すべてのKubernetesクラスタを管理できます。 Rancherは、これらのKubernetesクラスターがホストされている場所に関係なく、すべてのKubernetesクラスター間で集中管理された認証と認可を実装します。

  5. Rancherは、すべてのKubernetesクラスタに簡単なワークロード管理インターフェースを提供します。これはまだ進行中の作業です。直感的なRancher 1.0スタイルのコンテナ中心のインターフェイスを引き続き提供しています。アプリケーションカタログ、CI/CDやモニタリングの統合、洗練された統計、ログ集中管理など、多くの先進的なワークロード管理機能を追加しています。


Compare Tech Preview1 Architecture & Tech Preview2 Architecture

Tech Preview1まであったMySQLが無くなったり、コンポーネントも変わりました。Tech Preview 1と2のアーキテクチャを比較して見ていきましょう。


Tech Preview1 Architecture

tp1.png

コンポーネント
概要

Rancher Server
Rancher Serverは、Rancher2.0からDockerからKubernetesの仕組みとなり、クライアント、ホスト、インポートしたKubernetesクラスタを管理します。ステートレスなコンポーネントです。

Rancher Controller
Rancher Controllerは、Embedded Kubernetesクラスタの生成とGKEのような既存のKubernetesクラスタをインポートします。そして、以下のコンポーネントで構成されています。
・Websocketプロキシ:RancherエージェントまたはRancher UIからコアコントローラへの要求を出す
・Compose executor:composeファイルを解釈して実行します。
・Core controller:サービス、ロードバランサ、DNSなどのRancher constructsを実装して、Kubernetes Podsに登録する
・Core controllerはRancherにおいてJavaで書かれた唯一のコンポーネントです。他のすべてのコンポーネントはGoで書かれています。

Rancher Database(MySQL)
Rancher Database(MySQL)は、Rancher1.0系と同様Rancher Server用のデータベースとなります。

Netes-agent
Netes-agentは、Rancherコンテナー群の定義を取得してKubernetes Podとして実装して、管理下にあるすべてのKubernetesクラスタに接続します。

Auth Proxy
Auth Proxyは、クライアントからのKubectlコマンドやkubernetes APIの窓口となります。

Embedded Kubernetes Master
Embedded Kubernetes Masterは、マルチテナントAPIサーバ、コントローラマネージャ、スケジューラで構成されています。全てがステートレスで、障害に強いコンポーネントです。

Rancher agent
Rancher agentはWebsocketプロキシ経由でRancher Serverに接続します。Websocketプロキシはポート8080でリッスンしてポート8081でRancher Serverに接続します。Websocket接続により、エージェントは全二重通信を実行できます。さらに、コンソールセッション、統計情報、およびログエントリもまた、ホストからRancher Serverに配信されます。エージェントは1分ごとにステータスパケットをRancher Serverに送信します。ステータスパケットには、すべてのコンテナとそのステータスのリストを含んでいます。多数の欠落したステータスパケットにより、ホストは、「再接続」状態となります。

Kubelet
Kubeletは、kubernetesのコンポートです。Podの起動や管理を行います。

Docker Daemon
Docker Daemonは、Kubeletと連携してコンテナーの起動、実行を行います。


Tech Preview2 Architecture

Rancher2tp2archi.png

コンポーネント
概要

Rancher API Server
Embedded Kubernetes APIサーバとetcdデーターベース上に構築されています。次の機能を装備しています。
1.ユーザ管理機能。Rancher API Serverは、Active DirectoryやGitHubのような外部の認証プロバイダに対応するユーザIDを管理します。
2.認可。Rancher API Serverは、アクセス制御とセキュリティポリシーを管理します。
3.プロジェクト。プロジェクトは、クラスタ内の複数のnamespaceをグループ化したものです。
4.ノード。Rancher API Serverは、全クラスタ内の全ノードのIDを追跡します。

Cluster Controller and Cluster Agents
Cluster ControllerとCluster Agentsは、Kubernetesを管理するために必要なビジネスロジックを実装します。Rancherインストール全体に対するグローバルな全ロジックは、Cluster Controllerによって実装されます。別のCluster Agentインスタンスは、対応するクラスタに必要なロジックを実装します。
Cluster Agentは、次のアクティビティを実行します。
1.ワークロード管理。例えば、各クラスタにPodを作成したり、デプロイします。
2.グローバルポリシーで定義されているロールとバインディングをすべてのクラスタに適用する。
3.クラスタからRancher Serverにイベント、統計、ノード情報や状態を伝播します。
Cluster Controllerは、次のアクティビティを実行します。
1.クラスタおよびプロジェクトへのアクセス制御ポリシーを構成します。
2.必要となるDockerマシンドライバとRKEやGKEのようなKubernetesエンジンを起動して、クラスタのセットアップを行います。

Auth Proxy
Auth Proxyは、全てのKubernetes API呼び出しをプロキシして、ローカル認証、Active DirectoryやGitHubのような認証サービスと統合します。Kubernetes APIを呼び出すたびに、Auth Proxyは、呼び出し元を認証し、Kubernetes Masterへ呼び出しを転送する前に適切なKubernetesの偽装ヘッダーを設定します。Rancherは、サービスアカウントを使用してKubernetesクラスタと通信します。

RKE/GKE Kubernetes Master
Kubernetes Masterはkubernetesのコンポーネントで、API Server、Scheduler、Controller、etcd等の機能を有しています。図では、RKEとGKEですが、将来的にはEKS、AKS等も利用できる予定です。

Kubelet
Kubeletは、kubernetesのコンポートです。Podの起動や管理を行います。


Get Started with Rancher 2.0

下表にあるLinuxホストを準備します。

項目
スペック

OS
64-bit Ubuntu 16.04

Mem
at least 4GB of memory

Disk
80GB +

Docker
Install the latest stable version of Docker on the host.

1.最新版Dockerのインストール


コマンド

$ wget -qO- https://get.docker.com/ | sh


2.Rancher2.0 Tech Preview2のインストール


コマンド

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/server:preview


3.ブラウザアクセス

https://hostIP/

※初期Username「admin」初期Password「admin」

rancher2.0tp2.png


Rancher2.0 Tech Preview2の主要機能

rancher2tp2_02.png

「Create a Cloud Cluster」については、Rancher2.0 ServerからGKE、EKS、AKSにkubernetesクラスタを作成できます。

※2018年2月現在では、GKEのみ可能。

「Create a RKE Cluster」については、RKE(Rancher Kubernetes Engine)を利用してAWS、Azure、DigitalOcean、Packet、VMware(※2018年2月現在)と連携してKubernetesクラスタを作成できます。

「Import an Existing Cluster」については、Tech Preview1からの機能で、既存のKubernetesクラスタをRancher2.0 Serverにインポートして管理することができます。

上記主要機能については、別途検証結果を投稿したいと思います。


参考資料


Rancher2.0 Tech Preview2


RKE(Rancher Kubernetes Engine)