新しいopenshiftのしくみを調べてみた

Post on 01-Jul-2015

2.945 Views

Category:

Technology

9 Downloads

Preview:

Click to see full reader

DESCRIPTION

第22回 PaaS勉強会で発表した資料です

TRANSCRIPT

新しいOpenShiftのしくみを調べてみた第22回PaaS勉強会

@jacopen Kazuto Kusama

PaaSNTT CommunicationsCloudn

Based on

2012/06/21 第7回 Cloud Foundry輪読会

http://www.slideshare.net/jacopen/openshift-13407714

2013/08/23 第13回 Cloud Foundry輪読会

http://www.slideshare.net/jacopen/open-shift-25522848

日本で一番最初にOpenShiftの 勉強会をやったのは、

Cloud Foundry輪読会!

クラウドファウンドリーとオープンシフトゎ……

ズッ友だょ……!!

Kubernetes

Kubernetes

• Googleが開発したコンテナ管理ツール • 複数ホストに渡るコンテナの管理ができる • PaaSではなく、あくまでもScheduler

Software Design 2014年12月号にKubernetesの記事かきました

PaaSはデベロッパーのワークフローを助ける

Kubernetesには… • 書いたコードをDockerイメージにする仕組みが無い • チームコラボレーションの機能が無い。そもそも複数ユーザーで使えない

• ログ収集の機能が弱い • メトリクス収集機能が弱い

あくまでもSchedulerであり、PaaSではない。弱いところをカバーしたPaaSがあればいいのにな。

第20回の懇親会で

某氏「そういえば新しいOpenShiftは試しました?あれ、かなりKubernetesですよ」

ぼく「え、マジっすか。じゃあ次回やります」

というわけでやります

新しいOpenShift

!? V4 → V3?

OpenShift Origin Release 4

2.x Architecture https://github.com/openshift/origin-server

OPENSHIFT v3

OpenShift v3 Platform

• OpenShiftの3代目アーキテクチャ

• Docker, Kubernetes, Atomicを取り込んだ、まったく新しいアーキテクチャになった

• これまでのOriginとは別リポジトリで開発されている

• Golang!

https://github.com/openshift/origin

まだまだalpha

動かしてみよう

セットアップ

$ hack/build-go.sh #goの実行環境が必要

ソースからビルド

$ wget https://github.com/openshift/origin/releases/download/v0.1/openshift-origin-v0.1-deef796-linux-amd64.tar.gz

precompile済バイナリのダウンロード

or

セットアップ

$ openshift start

起動

これだけで、OpenShift / Kubernetes / etcdなど必要なものが全て立ち上がります。(バイナリ1個なのに・・・)

セットアップ

$ export OPENSHIFT_DEV_CLUSTER=true$ vagrant up

Vagrantを使う手も

DEMO

OpenShiftコマンド

今の所、openshiftのバイナリ1つでサーバーにもクライアントにもなる。

$ openshift start [master|node] #サーバーが起動する$ openshift kube #Kubernetesのkubecfg

かなりKubernetes

Kubernetesの構成

Proxy

docker

Kubelet

Container ContainerContainer

pod pod pod

Kubernetes Node (Minion)Kubernetes Master

API Server

Scheduler

Kube Controller

Replication Controller

etcd

OpenShiftの構成

Proxy

docker

Kubelet

Container ContainerContainer

pod pod pod

Kubernetes Node (Minion)Kubernetes Master

API Server

Scheduler

Kube Controller

Replication Controller

etcdOpenShift Master

API Server

Deployment Controller

Build Controller Kubernetes masterを

OpenShift masterがラップ

API(抜粋)

OpenShift API http://localhost:8080/osapi/v1beta1/builds http://localhost:8080/osapi/v1beta1/deployments http://localhost:8080/osapi/v1beta1/routes http://localhost:8080/osapi/v1beta1/projects http://localhost:8080/osapi/v1beta1/users http://localhost:8080/osapi/v1beta1/accessTokens

Kubernetes API http://localhost:8080/api/v1beta2/pods http://localhost:8080/api/v1beta2/services http://localhost:8080/api/v1beta2/replicationControllers

DEMO

概念

Kubernetesの概念はそのまま残ります

• Pod • Service • ReplicationController

概念

OpenShiftによって追加されるもの

• Build • Template • Deployment • Route • Project • User • Image/ImageRepository

全部解説すると時間がかかりすぎるので

Request Routing

Kubernetes (Scheduler)

Router Router State API

Router State

URLに応じて、振り先のコンテナを変えるリクエストルータ。ステートの追加・削除・変更を行うAPIも。

Image build

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

2.xと同じように、Gitによるデプロイが可能。

コードからDocker Imageを作成(Image build)

Docker repository

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

生成されたDocker Imageは、内部のDocker Repositoryに保存される。作ったイメージを公開もできるらしい

Multi tenancy

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

複数ユーザーで使える機能(PaaSなので必須だよね!)

Account(User?),Project,Rolesなどの概念を持つ

Account Project

Role

Event

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

クラスタ内の様々なイベント(ホストに繋がらない、ルータのエラー、nodeの削除等々)を収集。Policy Engineでアクションの規定などができる

Account Project

Role

Event aggregator API Event Bus

Policy Engine

Logging / Metrics

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

コンテナのログ収集や、リソースのメトリクス収集の仕組みもできるようだ(journaldを使う)

Account Project

Role

Event aggregator API Event Bus

Policy EngineLogging

Resouce Usage Metrics Application Metrics

2.xのカートリッジはどうなるの?

OpenShift on OpenShift

OpenShiftで必要なコンポーネントは、OpenShiftと同じインフラで動き、管理される。Kubernetesが管理するコンテナとして各コンポーネントが動作する

⇒ PaaSを運用している身からすると、すごくいい考えだと思う。PaaSを提供するためのコンポーネント運用は結構大変

まとめ• OpenShift v3は、まだま始まったばかり。すぐに使えるというものではない

• Kubernetesをコアに据えるなど、上手くDockerの流れに乗ろうとしているなという印象

• Flynn や Deisと比べて、出来ることはあまり変わらないが、開発力が圧倒的なので最有力候補か?

• まだモノが出来上がっていなくて消化不良なので、継続して追っていきたい

top related