tectonicはkubernetesの構築・管理基盤である -概要の章-/-構築の章-

56

Upload: masahito-zembutsu

Post on 21-Jan-2018

2.423 views

Category:

Software


0 download

TRANSCRIPT

Page 1: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
Page 2: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Tectonic

概要編Bare Metal on

環境構築編

今日の内容

「Tectonic」とは何か?と、環境構築に必要なTerraform、Matchbox、Ignitionの関連性をご紹介します。

• 個人的な動機

• なぜ Tectonic なのか?

• Tectonic の機能と仕組み

• Tectonic インストールまでの流れ

• Terraform で環境構築

• Matchbox と Ignition

TectonicはKubernetesの構築・管理基盤である

• Q&A

Page 3: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

資料について

資料の情報は、発表時点(2017年11月14日現在)のものです。

公開資料には、発表時と異なる表現を用いている場合があります。

想定している読者は、Kubernetes 環境構築や運用に興味のある方です。

Page 4: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Tectonic 概要編

Page 5: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
Page 6: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

6

“個人的”な動機・課題Motivation behind to try Tectonic

そもそものスタート地点は、自分のPC上で作成したアプリケーションの移動と管理。

APP

Page 7: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

7

“個人的”な動機・課題Motivation behind to try Tectonic

アプリに手を加えず複数のサーバで動かすためには、コンテナと2つの技術要素があります。

APP APP APP APP APP APP APP APP APP APP APP

Page 8: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

8

“個人的”な動機・課題Motivation behind to try Tectonic

1つは(クラスタ上での)ノード管理、つまりIPアドレスや正常性、リソース監視が可能なこと。

APP APP APP APP APP APP APP APP APP APP APP

ノード管理CLUSTER NODE MANAGEMNT

UP UP UP UP UP

Page 9: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

9

“個人的”な動機・課題Motivation behind to try Tectonic

そしてもう1つがスケジューリング。どのノードで、どれだけリソースを割り当てるか自動処理。

APP APP APP APP APP APP APP APP APP APP APP

スケジューリング

ノード管理CLUSTER NODE MANAGEMNT

SCHEDULING

Page 10: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

10

“個人的”な動機・課題Motivation behind to try Tectonic

現状、これらを動的に処理するオーケストレーション・ツールが、用途別に複数出始めています。

APP APP APP APP APP APP APP APP APP APP APP

スケジューリング

ノード管理CLUSTER NODE MANAGEMNT

SCHEDULING

Page 11: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

11

クラスタ・ノードも良い感じに管理したい

アプリの集合体である「サービス」管理は自動化が整いつつありますが、大変なのはノード。

APP APP APP APP APP APP APP APP APP APP APP

ノード管理

スケジューリングSCHEDULING

CLUSTER NODE MANAGEMNT

UP UP UP DOWN DOWN

MAINTAIN DESIRED STATE

Page 12: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

ところで、さくらインターネットといえば、石狩と言えば…?

ISHIKARI

HOKKAIDO

Page 13: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

ここで突然のさくらインターネット株式会社

石狩には自社データセンタがあり、多くのサーバ群あります。これを上手く活用できないものか?

データセンタと物理サーバ群

HOKKAIDO

ISHIKARI

Page 14: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

※専用サーバのイメージ

Page 15: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

良い感じにコンテナを安定して動かしてスケールできませんかね?

ここで登場した選択肢が、ベアメタル(物理・専用サーバ)にも対応している Tectonic だったのです。

Page 16: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Supported by CoreOS

https://coreos.com/tectonic/

Page 17: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

17

なぜ Tectonic なのか?Why I choose Tectonic

クラウド・物理環境問わず、Kubernetesクラスタ管理が可能であり、かつ運用負担が低いのが Tectonic。

• 物理サーバを良い感じに使いたい

• 簡単にkubernetesを管理したい

• kubernetesの可用性を担保したい

• サーバのセキュリティを保ちたい

• サポートが欲しい??? 「力が欲しいか・・・」

Page 18: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Tectonicの特長(CoreOS、曰く)

※ https://coreos.com/tectonic/

•高速、安全なデプロイKubernetes環境の正しいセットアップと維持を簡単にし、

コンテナ化アプリケーションを効率的、安全、確実に実行

•運用コストの低減Operatorにより、Kubernetesの各コンポーネントの自己保守で

手動調整を不要に

•インフラの管理を簡単にTectonic Consoleを通して複数のインフラの一括管理や操作

AWS、Azure、VMware、OpenStack , bare metalの各環境に対応

18

Page 19: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

DockerCon EU 2017

また、containerdがKubernetesにデプロイ可能になる発表も。ようやく手元のアプリが、簡単にスケールできるはず!(期待

Docker イメージは OCI 規格に従っており、かつ、Kubernetes のプライマリ・イメージ形式です。これを業界団体 CNCF との強調の元、これまでのDocker Swarm に加え、Kubernetes 環境上へデプロイに対応する予定の発表がありました。

Page 20: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Enterprise-ready Kubernetes

Tectonic ships with CoreOS's signature Automated Operations, enables portability across private and public cloud providers,

and is always upstream open source.

TectonicはCoreOSの署名自動運用を提供し、プライベートとパブリック・クラウド・プロバイダを横断する移動性を可能とし、

常に上流はオープンソースです。

Page 21: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

21Tectonicのシステム構成の全体図です。Kubernetesとホスト側の管理およびインターフェースを提供します。

APP APP APP

Provisioner

Mathbox

Controller Worker 1 Worker 2 … Worker N

GUI

gRPC

etcd

kubectl

- Service

- Deployment

APP APP APP

Pod

APP APP APP

Pod

Ingress network (by flannel)

High Availability (by operator)

Terraform for Bare Metalwith Matchbox provider

Pod

Supported by

Tectonic Console(GUI) Prometheus GUI Grafana GUI

service service

API

Page 22: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

22Tectonicで環境構築をすると、自動的に可用性を持つKubernetesノード(Master/Slave)とクラスタを構築します。

APP APP APP

GUI

gRPC

etcd

kubectl

- Service

- Deployment

APP APP APP

Pod

APP APP APP

Pod

Ingress network (by flannel)

High Availability (by operator)

Pod

Supported by

Tectonic Console(GUI) Prometheus GUI Grafana GUI

service service

API

Mathbox

Terraform for Bare Metalwith Matchbox provider

Page 23: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

23ノードの自動構築にはMatchboxというプロビジョニング用サーバを使い、この構成管理でTerraformを使います。

APP APP APP

Provisioner

Mathbox

Controller Worker 1 Worker 2 … Worker N

GUI

etcd

kubectl

- Service

- Deployment

APP APP APP

Pod

APP APP APP

Pod

Ingress network (by flannel)

High Availability (by operator)

Terraform for Bare Metalwith Matchbox provider

Pod

Supported by

Tectonic Console(GUI) Prometheus GUI Grafana GUI

service service

API

Provisioner

Mathbox

Controller Worker 1 Worker 2 … Worker N

Terraform for Bare Metalwith Matchbox provider

gRPC

Page 24: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

24自動的にPrometheusの監視アラート設定、Grafanaのリソースグラフ等が設定され、kubectlでも操作できます。

APP APP APP

GUI

gRPC

etcd

APP APP APP

Pod

APP APP APP

Pod

Ingress network (by flannel)

High Availability (by operator)

Pod

Supported by

service service

API

Mathbox

Terraform for Bare Metalwith Matchbox provider

GUI

kubectl

- Service

- Deployment

Tectonic Console(GUI) Prometheus GUI Grafana GUI

Page 25: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Tectonicの機能

• 安全なネットワークFlannel と Calico で安全なネットワーク・ポリシーをセットアップ

• etcdのディザスタ・リカバリHA高可用性に対応した etcd のデプロイと、バックアップ・復旧機能

• 自動オペレーションCoreOSの自動オペレーションで、インフラの更新と維持を簡単に

• Container Linux Operating Systemコンテナ向けに開発された軽量 Linux ディストリビューション

• Logging & Auditing監査対象は基本的にインフラの全てであり、API経由でも追跡可能

• Kubernetesの高可用性Kubernetes環境の複数のmasterとworkerを簡単にデプロイ

• Tectonic Consoleインフラ管理を管理されたダッシュボードですべて管理

• 企業統制と管理RBACや既存のLDAP、SAMLとの統合

• Prometheus MonitoringPrometheusでクラスタとアプリケーションを管理

• Prometheus AlertManagerTectonic Consoleからインフラ全体のアラートを設定

25※ https://coreos.com/tectonic/

Page 26: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

26

Tectonicの位置付け

このようにTectonicはKubernetesと同じ場所に位置し、Cloud Independenceとは独立性を表しています。

https://www.slideshare.net/CoreOS_Slides/tuesday-keynote/4

Page 27: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
Page 28: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

CoreOSのロゴを見るとこんな印象を受けます。ちなみに Tectonic とは地殻ですが、語源は「建設・構築」です。

Page 29: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Tectonic DEMO

Page 30: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

$ export KUBECONFIG=~/.kube/config$ kubectl get nodesNAME STATUS ROLES AGE VERSIONnode1.example.com Ready master 1d v1.7.5+coreos.1node2.example.com Ready node 1d v1.7.5+coreos.1node3.example.com Ready node 22h v1.7.5+coreos.1

専用の管理画面もありますが、kubectl から直接の操作も可能です。

Page 31: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

こちらは管理コンソール。ここでクラスタ上のサービスやPodほか、様々な情報を一元管理できます。

Page 32: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

32ノード追加時にGrafanaでシステムのキャパシティを表示したところ。

Page 33: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

33Prometheusの監視も自動的に入っており、このようにアラートのTarget設定も自動的に行われます。

Page 34: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

34

APP APP APP

Provisioner

Mathbox

Controller Worker 1 Worker 2 … Worker N

GUI

gRPC

etcd

kubectl

- Service

- Deployment

APP APP APP

Pod

APP APP APP

Pod

Ingress network (by flannel)

High Availability (by operator)

Terraform for Bare Metalwith Matchbox provider

Pod

Supported by

Tectonic Console(GUI) Prometheus GUI Grafana GUI

service service

API

Page 35: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

概要の章・まとめ

•TectonicはKubernetes構築・管理基盤Kubernetes のプロダクション稼働(24時間365日の運用)のための

必要な要素(可用性・監視・ノード管理・等々)がパッケージされている。

そのため、ゼロから全てを設計・構築する必要がない。

•ベアメタル環境(物理サーバ)にも対応クラウド・サービス上での Kubernetes クラスタ構築のみならず、

Tectonic 自身が物理サーバでの動作環境構築(プロビジョニング)に

公式に対応している。

Page 36: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
Page 37: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Terraform Provider for Bare Metal with Matchbox

Page 38: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

ベアメタル向け環境構築の流れ

Tectonicをセットアップすると、自動的にKubernetesも入ります。

CoreOS Tectonicアカウント作成

https://account.coreos.com/login

Tectonic installerダウンロードと展開

Matchbox 0.6+のインストールTLS証明書のセットアップ

gRPC API 有効化

Mathcboxv0.6+

Terraform for Bare Metalwith Matchbox provider

Bare Metal Machine

ネットワーク設定PXE/iPXE/GRUB

Page 39: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

ベアメタル向け環境構築の準備

もう少し粒度を高めると、このような具体的作業が必要です。

CoreOS Tectonicアカウント作成

https://account.coreos.com/login

Tectonic installerダウンロードと展開

Matchbox 0.6+のインストールTLS証明書のセットアップ

gRPC API 有効化

PXE boot環境の構築DHCP/ TFTP / DNS

DNS設定

(kubernetes controller, Tectonic Ingress worker}

Bare metal マシン準備

MACアドレス確認PXE Boot 設定

Terraform 本体およびMatchbox プロバイダの

セットアップ

Mathbox環境変数設定SSH エージェント設定

Terraform plan / applyBare Metal マシン電源投入

Page 40: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

ベアメタル向け環境構築の準備

その中でも特に重要なのが、Matchboxです。ベアメタル環境の初期構築のためのOSイメージと設定ファイルを配布します。

CoreOS Tectonicアカウント作成

https://account.coreos.com/login

Tectonic installerダウンロードと展開

Matchbox 0.6+のインストールTLS証明書のセットアップ

gRPC API 有効化

PXE boot環境の構築DHCP/ TFTP / DNS

DNS設定

(kubernetes controller, Tectonic Ingress worker}

Bare metal マシン準備

MACアドレス確認PXE Boot 設定

Terraform 本体およびMatchbox プロバイダの

セットアップ

Mathbox環境変数設定SSH エージェント設定

Terraform plan / applyBare Metal マシン電源投入

Page 41: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

41

Matchbox

Matchboxはベアメタル・マシンに対し、Tectonicの役割に応じたOSと初期設定(プロビジョニング)を行います。

Matchbox

Bare Metal Machine

Page 42: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

42

Matchbox

ベアメタル・マシンはOSが入っておらず、PXE boot/iPXE/GRUB で起動後に OS 初期設定を行います。

Matchbox

Bare Metal Machine

port: 8080HTTP Endpoint

MACアドレスに応じてインストールする環境の

設定ファイルを送信

Page 43: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

43

Matchbox

この MAC アドレスの情報や、Tectonic 関連の情報を管理するファイルを自動生成するのが Terraform です。

Matchbox

Terraform for Bare Metalwith Matchbox provider

Bare Metal Machine

port: 8080HTTP Endpoint

port: 8081gRPC API Endpoint

MACアドレスに応じてインストールする環境の

設定ファイルを送信

Page 44: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

44

Matchbox

ベアメタル・マシンがブートすると、初期化プログラムIgnitionを実行(Cloud Config と同じですが、初回のみ実行)

Matchbox

Terraform for Bare Metalwith Matchbox provider

Bare Metal Machine

port: 8080HTTP Endpoint

port: 8081gRPC API Endpoint

MACアドレスに応じてインストールする環境の

設定ファイルを送信

Ignition Ignition

Page 45: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

45

Matchbox

Tectonicの役割(コントローラかワーカー)に応じて、ベアメタル・マシンに対するセットアップが自動的に行われます。

Matchbox

Terraform for Bare Metalwith Matchbox provider

Bare Metal Machine

port: 8080HTTP Endpoint

port: 8081gRPC API Endpoint

MACアドレスに応じてインストールする環境の

設定ファイルを送信

Controller(s) Worker(s)

Ignition Ignition

私はみんなのためにWorkerに

なる!なるべーく、諦めなーい!

これが私たちの運命…

がんばろうね

やめろー!

Page 46: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Matchbox Ignition

Page 47: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

47

Tectonic環境構築の流れ

もうすこし具体的な流れや、関連ファイルの関係性がこちらです。

Matchbox

Terraform for Bare Metalwith Matchbox provider

Bare Metal Machine

❶ terraform plan

terraform.tfvars

• 様々なノード情報• コントローラのホスト名とMACアドレス• ワーカーのホスト名とMACアドレス• ログイン情報・パスワードのハッシュ

❷ 関連ファイル生成

/var/lib/matchbox/+ /profiles/+ /Ignition/

❸ マシン起動

PXE boot

DHCP IP &iPXE用 URL

PXE Chainloading

Profiles(JSON)

Ignition(YAML)

dnsmasq(TFTP)

IgnitionIgnition

(YAML)

❺役割に応じた環境自動構築

iPXE boot

❹ terraform apply

❻ remote-exec

gRPCAPI

Page 48: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

構築の章・まとめ

•Matchbox -> Ignition が環境構築の要物理ノードのOS初期化・環境設定を行うのは、プロビジョニング専用の

サービス Matchbox を使い、ネットワーク上で自動環境構築を行う。

そして、Ignition が Matchbox の提供する設定情報を参照し、適切な

環境構築を行えるようにする。

•Terraform が環境構築の情報を提供設定ファイル上の変数設定を参照し、 “terraform plan/apply” コマンド

で Matchbox や Ignition が参照する YAML や JSON ファイルを生成し、

各ノード起動後は、SSH ログインと(必要に応じて)追加設定を自動実行。

Page 49: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
Page 50: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Tectonic 環境構築編

Page 51: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

51

Page 52: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

詳細な手順は、またいずれ、どこかで

Page 53: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

振り返り

Page 54: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Tectonic

概要編Bare Metal on

環境構築編

今日の内容

• 個人的な動機

• なぜ Tectonic なのか?

• Tectonic の機能と仕組み

TectonicはKubernetesの構築・管理基盤である

• Tectonic インストールまでの流れ

• Terraform で環境構築

• Matchbox と Ignition

Bare Metal 環境にも対応する

Page 55: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

Questions?

Page 56: TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-

参考References

Tectonichttps://coreos.com/tectonic/

Install on bare metal with Terraformhttps://coreos.com/tectonic/docs/latest/install/bare-metal/metal-terraform.html

coreos / matchboxhttps://github.com/coreos/matchbox

Matchbox Documentationhttps://coreos.com/matchbox/docs/latest/

Ignition Documentationhttps://coreos.com/ignition/docs/latest/