23
5. コンテナーのデプロイ 2017/12/19 (⽕) ⽇本アイ・ビー・エム ⽇本アイ・ビー・エム システムズ・エンジニアリング IBM Cloud 中級者向けハンズオン・セミナー

05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

5. コンテナーのデプロイ

2017/12/19 (⽕)⽇本アイ・ビー・エム⽇本アイ・ビー・エムシステムズ・エンジニアリング

IBM Cloud中級者向けハンズオン・セミナー

Page 2: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation2

このセッションでの対象本セッションではLinuxコンテナーを対象にセッションを進めます

q ビジネス要件にあわせたコンピューティング環境を提供しますq ⽤途に合わせて様々なコンピューティング環境を⾃由に選択し、アプリ開発を⾏えます

Ø パフォーマンスの最⼤化Ø コントロール⾃由度の保持

Ø 既存の資産やツールの活⽤ Ø Linuxコンテナーの活⽤Ø Kubernetesのサポート

Ø Cloud Foundryを活⽤したPaaS基盤を提供

Ø Apache OpenWhiskをベースとしたオープンな実装のサーバーレス環境を提供

ベアメタル 仮想サーバー コンテナー CFランタイム サーバーレス

IBM Cloud Infrastructureの範囲 IBM Cloud Platformの範囲

パフォーマンス & コントロール 開発スピード&スケーラビリティーポータビリティー

Page 3: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation3

ご注意

この資料は⽇本アイ・ビー・エム株式会社および⽇本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受けておりません。資料の内容には正確を期するよう注意しておりますが、この資料の内容は2017年12⽉現在の情報であり、製品の新しいリリース、修正などによって動作/仕様が変わる可能性があります。当資料は、資料内で説明されている製品の仕様を保証するものではありません。従って、この情報の利⽤またはこれらの技法の実施はひとえに使⽤者の責任において為されるものであり、資料の内容によって受けたいかなる被害に関しても⼀切の補償をするものではありません。また、IBM、IBMロゴおよびibm.comは、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点でのIBMの商標リストについてはhttp://www.ibm.com/legal/copytrade.shtmlをご覧ください。

Page 4: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation4

⽬次1. IBM Cloud Container Service概説

Page 5: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation5

1. IBM Cloud Container Service概説

Page 6: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation6

コンテナー関連のサービス

IBM Cloud Container Registry

IBM Cloud Container Service

Kubernetes Cluster

プライベート・レジストリーの提供

コンテナー実⾏環境の提供

CaaS (Container as a Service)として以下のサービスが現在*提供されています

※ 2017年12⽉現在

Page 7: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation7

Linuxコンテナーとは?Linuxのnamespaceとcgroupにより実装される、軽量で隔離されたユーザー空間のことをLinux コンテナー (Linux Container)と呼びます

ハイパーバイザー型仮想化

HardwareHypervisor

VirtualMachine

OperatingSystem

Bins/libs

App App

VirtualMachine

OperatingSystem

Bins/libs

App App

OperatingSystemContainer

Container

Bins/libs

App App

Hardware

Bins/libs

App App

Hypervisor(option)

コンテナー型仮想化

ü HWレベルの仮想化ü OSカーネルを専有ü 仮想マシンごとに隔離

ü OSレベルの仮想化ü OSカーネルを共有ü プロセスをグループ化

して隔離

[引⽤] https://www.slideshare.net/BodenRussell/realizing-linux-containerslxc

アーキテクチャー・レベルの違いLinuxコンテナーの実装技術

q namespaces¦ リソースを分割するためのLinuxカーネルの機能¦ 以下の6種類のレベルでリソースを分割できる

n MNT(mount points, file systems, etc.)n UTS (host & domain name)n PID (process)n IPC (System V IPC resources)n NET (NICs, routing, etc.)n USER USER (UID + GID)

q cgroups¦ プロセス・グループのリソースの利⽤を制限・隔

離するLinuxカーネルの機能n CPU, メモリ, ディスクI/Oなど

Page 8: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation8

参考:OSレベルの仮想化技術⼀覧

出典:http://en.wikipedia.org/wiki/Operating-system-level_virtualization

Page 9: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation9

Dockerとは?Docker社(旧dotCloud)が開発するオープンソースのコンテナー管理ソフトウェア

q 「アプリケーションのデプロイ先としてコンテナーの利⽤」を中⼼としたつくり¦ Linuxコンテナーを単なる「軽量な仮想マシン」として捉えず、アプリケーションのデプロイ先として利⽤

することにフォーカスを置いた実装

q REST APIやdockerコマンドなどの利⽤しやすいインターフェースの提供¦ シンプルな実装でLinuxコンテナー利⽤の敷居を下げたのがDockerの1つの功績

q ポータビリティー(移植容易性)を実現¦ Dockerfileによりイメージの作成⼿順をコード化し、いつでもどこでも同じイメージを作成できる¦ Linuxコンテナーであれば、どのようなLinuxディストリビューションにもイメージを持ち込み、実⾏する

ことができるn 但し、Linuxとしてのアーキテクチャーの違い (z/Linux, pLinux)は吸収できない

Page 10: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation10

コンテナー管理のソフトウェア: Kubernetes

qGoogle社が開発したフレームワークをオープンソースとして公開¦ IBM, Microsoft社, Docker社などが開発を⽀援

qMaster NodeがWorker Nodeを管理するMaster-Slave構成¦ Master NodeにAPIエンドポイントがあり、操作を受けつける¦ Worker Node上で指定した操作に基づきコンテナーが稼働する

qDockerが提供しきれていない、以下の運⽤関連の機能を提供¦ オートヒーリング : コンテナーが異常終了したことを検知し再起動させる¦ スケーリング : 起動しているコンテナーの数を⾃由に変更できる¦ スケジューリング : コンテナーを任意のホストに割り振る¦ ロードバランス : 複数のコンテナーにリクエストを振り分けて負荷分散する¦ サービスディスカバリー : サービスへのルーティングを⾃動で提供する

IBM Cloud Platform上でKubernetes Clusterを構築・提供するためのサービス

“k8s”と省略して呼ばれることも多いです

Page 11: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation11

Kubernetesのアーキテクチャー

qマスター・ノード (Master Node)¦ Cluster 全体を管理・制御します¦ ワーカー・ノード上で稼働するコンテナー環境を管理します¦ 以下のコンポーネントで構成されています

nAPI ServernCluster state storenController-Manager ServernScheduler

q ワーカー・ノード¦ アプリケーション・コンテナーの稼働ホストです¦ 以下のコンポーネントで構成されています

nKubeletnContainer runtimenKube Proxyn(オプション) Dashboard, Ingress controllerなど

マスター・ノード (Master Node)とワーカー・ノード (Worker Node)で構成されます

マスター・ノード

マスター・ノード

ワーカー・ノード

Page 12: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation12

⽤語解説q ポッド

¦ アプリケーションのコンテナーのデプロイ先¦ ポッド内でネットワーク、ネームスペースを共有

q デプロイメント¦ レプリカ・セットでポッドの数を管理¦ ローリングアップデートやロールバックの機能を提供

q レプリカセット¦ ポッドのレプリカ数を管理するための仕組み

q ノード¦ アプリが動くマシン(仮想マシン)¦ マスター・ノードとワーカー・ノードがある

q サービス¦ ポッドに対しアクセスするためのネットワーク・ポリシー¦ L7のIngressやL4のLoadBalancer, NodePortなどの種類がある

Page 13: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation13

IBM Cloud Container Registry

q 以下の4つの地域でサービスを提供中 (2017年12⽉時点)¦ ⽶国南部, 英国, ドイツ, シドニー

q IBM提供の以下のイメージが提供

q 固有の名前空間を作成することで、プライベート・レジストリーを構成できる¦ ストレージとトラフィックに対して利⽤量に応じた課⾦が⾏われる

n 無料枠: ストレージ 0.5GB⽉, トラフィック(Outbound) 5GB⽉n 無料枠を超過した場合、ストレージ 0.5GBごとに$0.05, トラフィック5GBごとに$0.08

q Vulnerability Advisor機能を提供 (次ページ参照)

¦ ibm-websphere-extreme-scale ¦ ibm_wa_agent¦ ibmliberty¦ ibmnode

¦ ibm-backup-restore¦ ibm-integration-bus¦ ibm-mq¦ ibm-node-strong-pm

IBM Cloud上のプライベート・レジストリーを提供するサービス

Page 14: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation14

脆弱性アドバイザー (Vulnerability Advisor)

q 以下のセキュリティー通知に基づき、イメージの脆弱性を確認します

Dockerイメージに対し、導⼊されたパッケージに対する脆弱性がないかをスキャンし結果を表⽰/指摘するための機能を提供します

ベースとなるOSイメージ セキュリティー通知のソースAlpine Git - Alpine Linux and Circl CVE SearchCentOS CentOS announce archives and CentOS CR announce archivesDebian Debian security announcementsRed Hat Enterprise Linux (RHEL) Red Hat RHSA announce archivesUbuntu Ubuntu Security Notices

IBM Cloud環境

イメージのPush

脆弱性アドバイザー

スキャン実施

安全!!

レジストリー

脆弱性診断の確認

安全!!利⽤者

管理者

Page 15: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation15

IBM Cloud Container Service

q 以下のコンテナー実⾏環境が提供されています

Kubernetes Cluster¦ Kubernetes Cluster環境を構成し、すぐに利⽤可能な形で提供するサービス¦ Kubernetesの管理コマンド(kubectl)で操作し、利⽤します

IBM Cloud Platformで提供するLinuxコンテナー実⾏環境です

Page 16: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation16

Kubernetes Cluster for IBM Cloud

q クラスター・タイプは2種類提供されています¦ Lite Cluster (無償)

n1台のWorker Node (2 CPU, 4 GB RAM)を提供n配置されるロケーションはIBM Cloudが管理する環境上 (マルチテナント)

¦ Standard Cluster (構成によりコストは可変)nWorker Nodeの台数を任意で変更可能, サーバーとしてのスペックは選択

lマシン・タイプ(CPU, メモリー), サーバーの共有/専有n配置されるロケーションを選択可能

l⽶国南部 : dal10, dal12lドイツ : ams03, fra02lシドニー : syd01, syd04

nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成l⾃⾝のアカウントのデバイス管理にWorker Nodeが表⽰され、管理対象となります

q 構成されるKubernetes Clusterのバージョン¦ 1.7(2017年12⽉時点)

IBM Cloud Platform上でKubernetes Clusterを構築・提供するためのサービス

Page 17: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation17

Kubernetes Cluster on IBM Cloudの構成

IBM Cloud アカウントIBM Cloud Managed

Kubernetes クラスター

マスター・ノードワーカー・ノード

ワーカー・ノード

APIデプロイメント サービス

レプリカ・セット

ポッド

kube-proxy

kube-proxy

Port

Port

kubelet

kubelet

Ingress

LB

Scheduler

NodePortによるポートの開放

L4の負荷分散

L7の負荷分散

管理者

アプリ利⽤者

アプリ開発者

管理系操作

デプロイ等の操作

コンテナーが稼働するホスト

クラスターを管理

管理の最⼩単位1つ以上のコンテナーと共有ボリュームで構成

デプロイの管理コンテナーの配置数を維持/保証する

Page 18: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation18

Kubernetes Clusterの利⽤の流れ

名前空間 (Namespace)の作成

ボリューム (Volume)の作成

ポッド (Pod)の作成

サービス (Service)の作成

認証/構成情報の登録 (Secret, ConfigMap)

以下の流れで設定および利⽤していきます

5

4

3

2

1

コンテナー実⾏環境の作成

コンテナー実⾏環境に与える個別設定, サービスの資格情報の登録

コンテナーにマウントするボリュームの定義

⽬的に合わせたクラスター・リソースの分割

Page 19: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation19

Kubernetesでのオブジェクトの作成リソース・ファイルを⽤意し、コンテナー等のデプロイを⾏うのが基本的な流れです

apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: bluemix-health-manager

spec:replicas: 1template:metadata:name: bluemix-health-managerlabels:run: bluemix-health-manager

spec:containers:- name: bluemix-health-managerimage: registry.ng.bluemix.net/bluemix_handson/bluemix-health-managerimagePullPolicy: Always

---apiVersion: v1kind: Servicemetadata:name: health-manager-servicelabels:run: bluemix-health-manager

spec:type: NodePortselector:run: bluemix-health-manager

ports:- protocol: TCPport: 8080nodePort: 30080

Yaml形式で⽣成したいオブジェクトの属性を宣⾔的に記載左の例の場合、1つのコンテナーを持つポッド1つをレプリカセットで管理されるようにデプロイメントを⽣成

Kubernetes Cluster外部からのアクセスを許容するためサービスを作成し、30080ポートをNodePortで開放

kubectl apply -f <リソース・ファイル名>でオブジェクトを作成

リソース・ファイル

Page 20: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation20

アプリケーションの外部公開

種類 特徴

①NodePort- Lite版およびStandard版クラスターで利⽤可能- 単⼀ワーカー・ノード上のアプリケーションのネットワーク・

ポートをパブリック・インターネットに公開※ワーカー・ノードのIPアドレスは永続的ではない事に注意

②Load Balancer- Standard版で利⽤可能- 指定したTCPまたはUDPポート番号をパブリック・インターネッ

トで受付け、リクエストをKubernetesクラスター内の複数のワーカー・ノードに振分け

③Ingress

- Standard版で利⽤可能- HTTPまたはHTTPS接続するアプリケーションをパブリック・

インターネットで受付け、リクエストをKubernetesクラスターの複数のワーカー・ノードに振分け

- URLのパスにより異なるアプリケーションへの振分け可能- TLS(SSL)終端にすることが可能

q クラスター内のアプリケーションへ外部からアクセスするための⽅法として、以下の3種類のサービス公開⼿段が提供されています

Page 21: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation21

Kubernetes Cluster on IBM Cloudの操作

• IBM Cloud コンソール

• IBM Cloud CLIとKubernetes CLI • Kubernetes ダッシュボード

IBM Cloudコンソールのクラスターサービスのインターフェースからクラスターを管理

$ bx cs ・・・

$ kuberctl ・・・

IBM Cloud CLI + IBM Containerサービスのプラグインでクラスターを管理

Kubernetes標準のCLIでクラスターを管理

Kubernetes標準のダッシュボードからクラスターを管理

Web UIおよびコマンドラインを提供し、GUI/CLIでの操作が可能です

Page 22: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation22

ここまでのまとめq 以下のことを学びました

実際にLab04のハンズオンを進めていきましょう!!

プライベート・レジストリーの提供

コンテナー実⾏環境の提供

IBM Cloud Container Registry

IBM Cloud Container Service

Kubernetes Cluster

Page 23: 05 bmx mid seminar lecture kubernetes v1...nIBM Cloud Infrastructure (SoftLayer)上にWorker Nodeが構成 l のアカウントのデバイス管理にWorker Nodeが表 され、管理対象となります

© 2017 IBM Corporation23