• 検索結果がありません。

Kubernetesの基礎

N/A
N/A
Protected

Academic year: 2021

シェア "Kubernetesの基礎"

Copied!
29
0
0

読み込み中.... (全文を見る)

全文

(1)

Kubernetesの基礎

Internet Week 2018

2018

年11月28日

日本アイ・ビー・エム株式会社

クラウド事業本部 高良 真穂

(2)

発音/略称/Logo

綴り Kubernetes

発音

koo-ber-net-ees

略称

K8s

K

ubernete

s

12345678

クーベネティスのロゴ

(3)

K8s

は一言で何ができる?

K8s

は、コンテナのアプリ運用のためのOSS

1.

コンテナの組み合わせ利用

2.

スケールアウト

3.

ロールアウト&ロールバック

4.

永続ストレージ利用

5.

自己修復(可用性)

6.

クラスタの分割利用

7.

監視&ログ分析

(4)

k8s共通とベンダー個別の階層構造

コンテナ層

(共通)

docker コンテナのビルド、レジストリへの登録&取出し

オーケストレータ層

(共通)

kubectl ロールアウト、負荷分散、リソース制限、コンテナ間連携

インフラ層

(ベンダー個別)

クラスタ構成、レジストリ操作、FW/LB設定、ストレージ操作

IKS bx cs, ICP bx pr, GKE gcloud container,

Master

Node

Worker

Node

Public Network Container Registry Services

Cloud

Service

StorageService Load Balancer

Firewall

k8sクラスタ制御

kubectl

コマンド

User

Server

Worker Node

仮想サーバーを

ベースに構成される

(5)

コマンド・カットの階層構造View

• K8s

は、ベンダー個別のインフラ機能を共通化 (抽象化) して、共通のオ

ペレーション環境を提供する。

• K8s

は、HA構成、負荷分散、監視、オートスケールなどの機能を提供

コンテナのビルド

デプロイ&負荷分散

アプリケーション層 コンテナ層 (Docker) オーケストレータ層 (Kubernetes) インフラ層 (クラウドVSI, オンプレ物理サーバーなど)

アプリのビルド

クラスタ環境の構成

Java, Node.js, Python, Ruby, PHP

C, Go などのコンパイル、リンクなどビルド ビルドしたアプリのコンテナ化、リポジトリ登録 WAS,DB2,MQなどのコンテナ化ミドルウェア利用

各社クラウド、ソフトウェア製品 ICCS, ICP, GKE, AKE, RedShiftなどの

k8s kubectlコマンドを利用

開発言語固有のコマンド docker build …

kubectl create –f xxx.yaml

gcloud container create…

各社クラウドのIaaS機能

オンプレのOpenStack や Vmware 利用 物理サーバー利用

(6)

階層の中でのKubernetesの概念的な位置づけ

• Docker

はSwarmとKubernetesの統合を発表

DockerCon EU 2017

Physical Infrastructure

Layer 1

Virtual Infrastructure

Layer 2

Operating System

Layer 3

Container Engine

Layer 4

Orchestration/Scheduling

Service Model

Layer 5

Development Workflow

Layer 6

Docker Swarm

IBM Cloud

Bare Metal Network

Storage

IBM

Cloud

Private

EKS

GKE

IKS

クラウドサービス 統合ソフトウェア

(7)

コンテナのオーケストレーション・ツールの人気

この調査結果ではKubernetesが首位

(8)

ココを抑えれば

もう怖くない

(9)

k8s

の三大構成要素

K8sの3大構成要素は3つ

マスターノード

k8s

クラスタの制御

パブリック・クラウドの場合はマネージド

ワーカーノード

アプリのコンテナ稼働環境、ノード数可変

コンテナ・レジストリ イメージの保管場所

Master

Node

Worker

Node

Public

Network

クライアント

Container

Registry

コンテナ

イメージ登録

クラスタ

操作

User

(10)

k8s共通とベンダー個別の階層構造

コンテナ層

(共通)

docker コンテナのイメージをビルド、レジストリへの登録&取出し

オーケストレータ層

(共通)

kubectl

ロールアウト、負荷分散、リソース制限、コンテナ間連携

インフラ層

(ベンダー個別)

クラスタ構成、レジストリ操作、FW/LB設定、ストレージ操作

Master

Node

Worker

Node

Public Network Container Registry Services

Cloud

Service

StorageService Load Balancer

Firewall

k8sクラスタ制御

kubectl

コマンド

User

Server

Worker Node

仮想サーバーを

ベースに構成される

(11)

アプリのデプロイ

サービスを開始するまでの作業は3ステップ

1.

アプリのコードを開発してDockerコンテナ化

2. Dockerイメージをレジストリへ登録

3.

マニフェスト(YAML)を利用してデプロイ

プライベート レジストリ パブリック レジストリ イメージを ダウンロード

アプリ開発者

サービス運用

技術者

イメージを アップロード

push

pull

マニフェスト

YAML

(12)

YAML

の定義は? 基本これだけ

Nginx

のマニフェスト

apiVersion: apps/v1

kind: Deployment

metadata:

name: ms-apl-ws

spec:

replicas: 3

selector:

matchLabels:

app: ms-apl-x

template:

metadata:

labels:

app: ms-apl-x

spec:

containers:

- name: application-x

image: appl-x:1.18

ports:

- containerPort: 80

apiVersion: v1

kind: Service

metadata:

name: apl-x

spec:

selector:

app: ms-apl-x

ports:

- protocol: TCP

port: 80

コンテナの可用性を制御

コンテナのイメージ名

サービス

ロードバランサー

APL-X

でアクセス可能

$ kubectl apply –f manifest.yml

実行はこれだけ

(13)

ポッドはコンテナを内包して実行

コンテナ

は、ポッドによって起動される

ポッド

は、内部IPアドレスを持つ、一つの仮想マシンの様な存在、ポッド単位で起動と破棄さ

れ、永続データは保持できない一時的な存在

コントローラー

は、ポッドの起動停止、回復などの制御を受け持つ

アプリ

コンテナ

ポッド

コントローラー

Webサーバ

コンテナ

ポッド

ポッド

IPアドレスを持つ

コンテナ実行単位

docker

やrktなど

コンテナ

Worker

Node

Worker

Node

Worker

Node

ポッド数を維持 その他資源との

接続を制御

仮想サーバー

(14)

• Pod

は、なんの短縮形?

Pod is not “Point Of Delivery”

(15)

クラスタ内部ネットワーク

ポッドはクラスタ・ネットワークに、ポッドが接続され、Worker Nodeの境界を越えて通信できるノード横断ネット

しかし、ポッドのIPアドレスでは外側と通信はできない内部専用、ポッド作成ごとにIPアドレスを自動付与

Node #1

User Private VLAN User Public VLAN

Node #2 Node #3 Docker Container Pod 8c8lj Docker Container Pod dqbr2 Docker Container Pod t7jfh

ポッド・ネットワーク

Node IP: 10.132.253.38 Node IP: 10.132.253.30 Node IP: 10.132.253.17 Pod IP: 172.30.11.51 Pod IP: 172.30.180.147 Pod IP: 172.30.170.233

ReplicaSet ID:

7f868cb77d

ポッドの

IPアドレス

(16)

内部ロードバランサー

k8sは、ポッドのクラスタの代表IPを作り要求を分配するサービスを提供

kubectl

コマンドからYAMLを投入して

”サービス”

を定義する

サービス作成時に、

内部DNS

にサービス名を登録、クライアントからDNS名で参照可能

フロントエンドの接続先バックエンドは、YAMLの定義

セレクタ”

で指定

Container express1:1.0 ポッド Pod IP: 172.30.11.58 ポッド Pod IP: 172.30.180.239 ポッド Pod IP: 172.30.170.159 Container ポッド Pod IP: 172.30.11.46

アプリケーション

クライアント

(クラスタ内)

クラスタの代表IP

Cluster IP: 172.21.127.174 Port: 3000

すべて、Cluster-NetworkのIPアドレスです。

Container express1:1.0 Container express1:1.0 デプロイメント レプリカ数 3 他のコンテナから要求 をポッド分散する フロントエンド バックエンド サービス • ポッドは起動と破棄で再起 動が無い • 起動時にIPアドレスが付与 • 起動のたびにIPが変わる

サービスが必須な理由

(17)

外部公開用ロードバランサー

k8sクラスタから外へ公開するロードバランサのサービスを提供

NodePort

ノードのポート番号で公開、KubeProxyと連携して複数のポッドへアクセスを分配します

LoadBalancer

クラウドプロバイダのロードバランサを使用して外部にサービスを公開

Ingress

各社クラウドの実装でロードバランサーとHTTPSなどの機能で公開

ポッド

外部向け代表IP

Container nginx インターネット上 フロントエンド サービス ポッド Container nginx ポッド Container nginx バックエンド

内部クラスタの代表IP

Cluster IP: 172.21.127.174 Port: 3000 name: express-app-svc サービス Container express1:1.0 ポッド Pod IP: 172.30.11.58 ポッド Pod IP: 172.30.180.239 ポッド Pod IP: 172.30.170.159 Container express1:1.0 Container express1:1.0 NodePort LoadBalancer Ingress

SW名で例えば

ウェブサーバ nginx

アプリ PHP + FPM

キャッシュやデータベース

Redis, MySQLなど

デプロイメント デプロイメント

(18)

オートスケール

CPUの使用率の閾値越えで、ポッド数を増加して処理能力を増強

反対に閑散な状態となれば、ポッド数を縮小

ノードの増強は手動のケースありに注意、ノードは余裕をもって運用は必須

デプロイメント + HPA コントローラ

Worker

Node

Worker

Node

Worker

Node

デプロイメント + HPA コントローラ

Worker

Node

Worker

Node

Worker

Node

ポッド

ポッド

ポッドのCPU使用率

が閾値を超えると

レプリカ数

を増やして増強

ポッド

ポッド

ポッド

コンテナ

コンテナ

コンテナ

コンテナ

コンテナ

追加

(19)

自己回復

ノード障害に対して、サービスは無停止で継続可能

ワーカーノードの障害に対して、必要数のポッドを起動して処理能力を補う

N+1

構成の様に能力的に余裕もった設計が必要であるが、ポッドの再配置は自動

デプロイメント コントローラ

Worker

Node

Worker

Node

Worker

Node

デプロイメント コントローラ

Worker

Node

Worker

Node

Worker

Node

ポッド

ポッド

ポッド

ポッド

コンテナ

コンテナ

コンテナ

コンテナ

起動

喪失

障害

停止

障害

停止

(20)

永続ストレージの利用

K8s

のコンテナ環境ではデータをストレージに永続的に保管できます。

クラウド・プロバイダのストレージ・サービスを利用できます。

YAML

ファイルに、”kind: PersistentVolume” や “kind: PersistentVolumeClaim” とすることで、既存

ボリュームをマッピングしたり、新規に作成するなどの永続ストレージの利用ができます。

クラウド・プロバイダや既存ストレージ系プロトコルのための複数のプラグインが提供されています。

Master

Node

Worker Node

Cloud

Service API

StorageService

ポッド Worker Node DBサービス コンテナ ポッド

k8sクラスタ制御

kubectl

コマンド

User

参考 https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes DBサービス コンテナ

(21)

名前空間によるクラスタの仮想化

名前区間毎にCPUとメモリの利用制限を設定

ネットワークポリシーを設定してアクセス制限

RBACとサービスアカウントによるアクセス権管理

Worker

Node

Worker

Node

Worker

Node

(22)

分散環境のモニタリングと洞察

Kubernetesは2つの機能を組み込み済み

ログ分析

メトリクス監視

時系列データベース

全文検索エンジン

アプリケーション

Node

Cloud

Master

情報発生源

監視対象

メトリクス・コレクタ

ログ・コレクター

稼働状態

監視

ログ分析

と監視

可視化ツール

可視化ツール

クラウドサービスでは、各社クラウド基盤のログ分析&稼働監視と連携しています。

(23)

ブラウザで閲覧する視覚化ツール

Kibana

(ログ分析)

Grafana

(稼働分析)

・Elasticsearchの視覚化ツール

・ログ分析など、対話的に操作しながらの発見に向く

・豊かな表現形式に対応

・時系列DB (time series database)の視覚化ツール

influxDB, Prometheus, Graphiteなどの時系列データを視覚化 ・設定を保存して繰り返し利用するダッシュボードに向く ・シンプルな操作

(24)

© IBM Corporation 24

ここで、ご紹介したのは

Kubernetesの一部の機能であり

説明者により選定されたものです。

(25)

メガクラウド各社

Kubernetes

(26)

2017

年は

クラウド各社がk8s対応

した年となった

• GCP

• Google Kubernetes Engine (GKE)

• 2014年6月 オープンソース化とGCPのサポートを発表

• KubernetesをCNCFへ移管

• IBM

クラウド

IBM Cloud Kubernetes Service (IKS)

• 2017

年3月23日 IBM Cloud (当時 Bluemix)で提供開始を発表

ソフトウェア

IBM Cloud Private (ICP)

v2.1 提供

• 2017年10月24日 発表 オンプレのサーバーに導入できるソフトウェア製品

• 無料で利用できるIBM Cloud Private Community Editionのダウンロード提供

• Azure

• Azure Container Service (AKS)

• 2017年10月24日 発表

• AWS

• Amazon Elastic Container Service for Kubernetes (Amazon EKS)

• 2017年11月29日発表

KCSP

認定制度

による互換性確保

(27)

© IBM Corporation 27

Kubernetes

広めて勢力図を

変えるぞ

参道して

シェアを取りに

行くぞ!

複合環境でも

便利♪

豊富な資金力で 独走を維持するぞ ロックインから 解放だ! チャンス♪

K8s

でクラウド・レースの展開に

変化があるかもしれない

(28)

まとめ

• Kubernetes

はコンテナの運用基盤

オンプレ&クラウドで共通のオペレーションで運用できる

必要なインフラ機能が提供され、高効率な運用を実現

(29)

Kubernetes

ハンズオンへ

参照

関連したドキュメント

1)まず、最初に共通グリッドインフラを構築し、その上にバイオ情報基盤と

11 福岡県 株式会社NIKUJILLE 4290001094736 見本市・展示会への出展を通じた高品質和牛の海外富裕層顧客獲得 12

The complexity of dynamic languages and dynamic optimization problems. Lipschitz continuous ordinary differential equations are

Desk Navigator グ ループ 通常業務の設定」で記載されているRidoc Desk Navigator V4への登録 方法に加えて新製品「RICOH Desk

1.共同配送 5.館内配送の 一元化 11.その他.  20余の高層ビルへの貨物を当

申込共通① 申込共通② 申込共通③ 申込共通④ 申込完了

古安田層 ・炉心孔の PS 検層結果に基づく平均値 西山層 ・炉心孔の PS 検層結果に基づく平均値 椎谷層 ・炉心孔の

[r]