狠狠撸

狠狠撸Share a Scribd company logo
Rancher2.0への移行に向けて
Minehiko Nohara
Macnica Networks, Corp.
1
本資料について
2
? 本資料に記載されている会社名、商品、サービス名等は各社
の登録商標または商標です。なお、本資料中では、「?」、「?」は
明記しておりません。
?本資料は、出典元が記載されている資料、画像等を除き、弊社
が著作権を有しています。
?著作権法上認められた「私的利用のための複製」や「引用」など
の場合を除き、本資料の全部または一部について、無断で複製?
転用等することを禁じます。
?本資料は作成日現在における情報を元に作成されております
が、その正確性、完全性を保証するものではありません。
免責事項
自己紹介
? なまえ: 野原 峰彦 (のはら みねひこ)
? 2006年にマクニカグループに入社
– 自社SaaSサービス開発担当
– Eメールアーカイブ製品担当
– Web Analytics製品担当
– 仮想分散型Firewall製品担当
– オーバーレイ型SDN製品担当
– Hyper Converged System製品担当 他
? 現在はWeb分離セキュリティ製品のMenlo Securityや、Kubernetes用のHCIの
Diamantiを担当
3
マクニカネットワークスとは
? “より優れた製品やサービスを”
私たちは世界から最高水準のテクノロジーをベースに、お客
様に最適のITソリューションを提供する技術商社です
4
ビジネスドメイン
Enterprise IT
Network
Big DataSDx
NFV
Cloud
Infrastructure
Mobile
Telecom
Storage
Security
5
ビジネスドメイン
Enterprise IT
Network
Big DataSDx
NFV
Cloud
Infrastructure
Mobile
Telecom
Storage
Security
一緒に働いていただける方、絶賛
募集中です!
6
マクニカのRANCHER利用ユースケース
振り返り
7
製品の技術サポート業務の課題
? 多くの製品のサポートにおいて、解析ツール、監視ツールなどの
環境が必要
– 2006年ごろは毎回サーバーを物理で構築してアプリをインストール
(1日がかりの作業)
– 2010年ごろから仮想マシンで運用を開始するも、スケールやバックアップ、
リストア、利用可能なリソースの逼迫など、まだ課題は多かった
– 2015年ごろより、徐々に環境をDockerに移行
? Zabbix、Nagiosなどの運用監視サーバー
? Webサーバー
? Squidサーバー
? 各種DBサーバーなど
? 取り扱い製品の一部をDockerイメージ化
8
Dockerを使うことで??
? メリット
– リソース削減
– ポータビリティ
– 高速デプロイ
– Dependency問題からの開放
? デメリット
– 運用(デプロイメントや監視、スケール管理など)
– 独自のコマンド
– 永続データのバックアップ
9
Rancherとの出会い
? 2015年春、OpenStack Summitのブースに立ち寄り、製品を知った
– 当時からコンセプトは非常に優れていたが、当時はあまり安定していなかった印象。
? 2016年夏ごろ、社内エンジニア向けDocker Private Cloud構築がプロジェクト化
– RancherのGAリリースを知り、評価の結果、Rancher 1.1による構築を決定。
? 2016年10月末から社内でのサービス提供開始!
– エンジニアの一時利用のPaaSに特化して提供
10
Rancherとは?
? コンテナのデプロイから運用管理を一元的にWeb GUIから実行できるソフトウェ
ア。
? Dockerのホストとしてオンプレだけでなく、さまざまなクラウド上のホストとの連携
や自動プロビジョニングをサポートする。連携やプロビジョニングのための操作も
非常にシンプル。
? ソフトウェアはdockerイメージでも提供されているため、dockerが入ったマシンが
あれば誰でも無料で簡単に使うことができる。
11
オンプレ クラウド
??and more
マクニカ Dockerクラウド: App as a Service
? Rancherが提供するWeb UIで簡単操作!
12
マクニカDockerクラウド構成
? ユーザーインターフェイスはRancher1.1からスタートし、現在は1.5.6
? Appカタログは、Privateカタログを利用
– 信頼されたOfficialイメージはDocker HUBより取得
– オリジナルのイメージは原則オンプレのDockerレジストリより取得することで、問
題のあるアプリの利用を極力避ける
? Docker HostはUbuntuおよびCoreOSを利用
– Quota(リソース制限)を目的として、Docker Hostはユーザーごとに独立したもの
を提供
– 仮想環境上に構築しているため、リソースはオーバーコミット前提
– ユーザー自身によるホストの追加も可能
? 各ホストのバックアップはNutanixのスナップショット機能を利用
13
カタログ2
マクニカDockerクラウドの構成
社員A 社員B 社員C 社員D
Docker Hub
GitHub.com自社作成イメージ系
信頼性の高いオフィ
シャルなイメージなど
イメージ取得 イメージ取得
カタログ1
Docker
Registry
Ubuntu Ubuntu Ubuntu Ubuntu
Backup
Backup
GitHub Enterprise
Prism + vSphere 14
RancherのPrivateカタログ
? Docker-composeベースのyamlファイルで記述
? Rancher-composeと組み合わせて、UIからの変数の代入が可能
? ローカルのレジストリを利用する場合はimageに指定する
例: dockerrepo.macnica.net:5000/noharaimage:latest
※ composeファイルはバージョンごとに用意するため、バージョン
に応じてレジストリを変更することも可能。
15
Rancher利用のメリット
? 利用したいアプリケーションを瞬時に起動できる
– Dockerの知識や面倒なインストール作業は不要。
? Dockerコンテナの中のshell画面にGUIから簡単にアクセス
– dockerコンテナが稼動しているホストを探す必要がない
– ホストにログインして、コマンドでコンテナIDを探したり、コンテナの中
に入るためのコマンドを実行するような手間がない
? 必要に応じてLBなどのインフラを容易に追加できる
16
RANCHER2.0へ!
GAリリース後のマイグレーションに向けて
17
前提条件
? 現状はまだTechPreview版しか提供されていないため、ベータ
またはGA版リリース後に追加テストを実施の上、環境を移行す
る
? TechPreview版ではRBACなど一部の機能制限があるため、
ベータまたは GA版リリース後に再検証する
18
背景(モチベーション)
? Rancherを利用し続けるために、いずれUpgradeは必須
? 社内では既にKubernetesクラスタが動作している
– Kubernetesナレッジの活用/蓄積
– 既存クラスタの管理の統合
– Rancher上で既存のpodスペックファイルが利用できる
– Kubernetesを利用した製品との連携
19
kubernetesとは
? コンテナのオーケストレーションツールで、デプロイやスケール管理、リ
ソース管理、セルフヒーリングを行う、Googleが開発したOSS。
– 複数台のノードをクラスタ化してコンテナを展開することが可能。
– MesosphereのDC/OSや、Docker Swarmが競合としてよく比較されていた。
? K8s(k+8文字<ubernete>+s)とも呼ばれる。
? ギリシャ語で船の操縦士の意味の言葉。
? 現在はDocker社を含む多くの製品がkubernetesをサポートし、事実上コン
テナオーケストレーターのスタンダードになったといわれる。
? Rancherも独自のオーケストレーター(Cattle)を提供していたが、version2.0
からはKubernetesをサポートする。
20
①②③④⑤⑥⑦⑧
Rancher2.0
21
評価のポイント
? 既存環境と同等の機能が提供できること
– マルチテナンシーとQuota
– Privateカタログの利用
– Docker Registryの利用
※マクニカのユースケースでは、データの引継ぎは不要
? 拡張として期待すること
– 既存のPodスペックファイルが利用できる
– Kubectlによるpod管理ができる
– 他のkubernetesクラスタの統合管理ができる
22
評価の結果
? 既存環境と同等の機能が提供できること
– マルチテナンシーとQuota ?現状はテストできない (CLIでnamespaceは作成できるが、
Rancherには反映されない模様)
– Privateカタログの利用 ? OK
– Docker Registryの利用 ? NG
? 拡張として期待すること
– 既存のPodスペックファイルが利用できる ? OK ただし、一部動かせていないものも
– Kubectlによるpod管理ができる ? OK
– 他のkubernetesクラスタの統合管理ができる ?OK ただし、期待動作までは至らず一旦
保留
※ 限られた時間内での評価であるため、原因を調査し切れていない結果である点、ご了承ください。
23
既存環境と同等の機能
評価結果1
24
マルチテナンシーとQuota
? マルチテナンシーはTechPreview版の制限(GA後は出来る前
提でよい)
? Quotaは現状の仮想マシン分割の方式化に加え、Kubernetes
のQuota機能も選択肢となる想定
25
Privateカタログの利用
? Privateカタログは問題なく動作!コンテナも正常起動する。
26
Docker Registryの利用
? コンテナが起動/終了を繰り返す状態に(未解決)
– 同じイメージをdocker hubから起動すると問題ない
– レジストリからイメージのPullは出来ている
– PODが作成され、Runningになるが、すぐにStopし、また起動。これをずっ
と繰り返している状態。コンテナにはアクセスできず。
– Beta以降で再度テスト。
–
Starting Running Stopped
27
「既存環境と同等の機能」としては概ね良さそう
? マルチテナンシーとQuota
– マルチテナンシーはTechPreview版の制限であるため、GA版での正常動作に
期待
– Quotaは、マルチテナンシーが動作すれば、現在のホスト分割方式で問題ない。
? Privateカタログの利用
– docker-composeで作成したカタログがそのまま動いたことで、非常に安心した。
? Docker Registryの利用
– これは環境の問題もあり得る。Beta以降にもう少し調査する。
全般には動作は非常に安定しているため、好印象。
Docker registryのみ解決が必要。
28
拡張として期待すること
評価結果2
29
拡張として期待すること
? Podスペックファイルの利用について
– 一部を除き、社内で利用するものが問題なく利用できた
? PersistentVolumeについては正しく動作せず、調査が必要。
? RancherのStackの定義方法が良くわからない。
? Kubectlの利用について
– 可能
? UIからアクセスするか、kubectl-shellのコンテナにログインして実行。
? デフォルトがcattle-systemというnamespaceになっているので、--namespaceオプショ
ンでdefaultを指定したり、--all-namespacesオプションなどを利用する。
(Rancherとして、current-contextを設定してよいのかどうか未確認)
30
既存のPodスペックファイル
? Kind:replicationcontroller ? デプロイ可能
? Kind:deployment ? デプロイ可能
? Kind:service ? デプロイ可能
? Kind:persistentvolume ? NG
? Kind:persistentvolumeclaim ? NG (パラメータの問題かも?)
※ 今回の評価では、上記以外は未検証
31
Kubectlの利用
? Container>Advancedの画面からLaunch kubectlボタン
32
気になった点(今後確認)
? Kubectlで稼働中のpodスペックから抜粋した次のパラメーターを設定して
も、やはりstackはDefaultになる(パラメーターが足りない?)
– annotations:
io.rancher.stack.name:
io.rancher.stack_service.name:
– PodスペックファイルをインポートしたときにGUIで指定したStackが、空のまま残る
(消えない)
? YamlでNamespaceを指定するとエラーになる(作成したnamespaceがダッ
シュボードで選択できず)
– Failed to apply Kubernetes resource ReplicationController/nginx: exit status 1
(error: the namespace from the provided object "nohara" does not match the
namespace "default". You must pass '--namespace=nohara' to perform this
operation. )
33
他のKubernetesクラスタの統合管理
? Kubernetesを効率的かつ高パフォーマンスで安定利用するた
めの、分散ストレージを搭載したHCI製品を管理対象に。
– Kubernetes自体を便利に使えるものではない
– Rancherと連携でき、POD管理が簡易にできれば??
34
対象製品のkubernetesクラスタの管理
? 起動中のPODが全てRancherから見えるようになった。
? 起動中のPODのShellにRancherのWeb UIから直接アクセスで
きるようになった。
? Web UIからyamlをUploadしてPODを起動することができるよう
になった。
? 本製品に対しては、PersistentVolumeもデプロイできた。
– 本製品とのインテグレーションにより、永続データの利用も可能に。
35
PODの状態管理や再起動、shellへのアクセス
36
まだ出来ていないこと
? カタログからのアプリ起動
– 本製品のネットワークを利用するためにはpodスペックファイル上の
annotationsでネットワーク名を指定する必要がある。
– Rancher2.0のGA版リリース以降、ナレッジなどを見ながら方法を模索
し、テストする。
? できればカタログでPODスペックファイルも利用したい。
37
RANCHER2.0のインストール
Tips
38
TechPreviewのインストール
? インストールはdocker版を使えば非常に簡単
https://rancher.com/rancher2-0/
$ sudo docker run -d --restart=unless-stopped -p 8080:8080
rancher/server:preview
? 数分程度でRancherサーバーが起動し、使える状態になる。
? Dockerが利用可能なLinuxマシンで実行
– Ubuntu 16.04 (kernel v3.10+) または RHEL/CentOS 7.3
– 4GB以上のメモリ、 80GB以上のローカルストレージが利用可能
39
Rancher2.0のインストールでハマったところ
? インストール直後、コンテナが全てエラーになる
40
よく見ると、systemのPODの一部でエラー
? IPSECのPODがエラーになる
– System error: mountpoint for devices not found
– https://github.com/moby/moby/issues/14353
? 上記URLで紹介されているスクリプトで解決可能
https://github.com/tianon/cgroupfs-mount
? kubectl-shellのPODが起動しない
– Waiting for a pod to??のまま、数時間放置しても変わらず。
– https://github.com/rancher/rancher/issues/9951
? 対象環境のDockerのバージョンが1.13.xで、k8s1.7がサポートしていないために発
生していた。
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-
1.7.md#external-dependency-version-information
? Dockerを1.12.6にダウングレードしたところ、IPSECの問題も発生しなくなった
41
ヘルスチェック
? NamespaceにSystemを選択した状態でContainerの一覧を見る。
42
全てがActiveまたは
Healthyになっている
今回異常が見られたのは
Ipsec
と
Kubectl-shell
今回Rancher2.0を評価した環境
? OS: Ubuntu 16.04 LTS
? Docker: 1.12.6
? Rancher: 2.0 alpha-10 (kubernetesは17.6)
43
QUESTIONS?
最後に
44
Thank you
M.Nohara
45

More Related Content

20180123 rancher meetupyokohama_minehiko_nohara