Kubernetesで変わるインフラ
株式会社スタイルズ
矢野 哲朗
2019年1月23日
自己紹介
経歴 : システム運用 10年・ネットワーク 6年・SI 8年
近頃はRancher/Nextcloudを担当
Rancherの好きな機能 :
その他 : 全く上達しないRubyist
一番最初のPCは、OKI if-800 でした…。
矢野 哲朗
tetsurow.yano
株式会社スタイルズ
1
ご注意
2
本資料の内容は、私個人の見解です。
所属する団体や会社の立場、戦略、意見を代表、
見解を表すものではありません。
Kubernetes以前のインフラ
3
まだまだ過去のことではなく、
現在進行形の話です
Kubernetes以前
4
サーバー
サーバー
設定、鍵管理
アプリ設定
シークレット鍵
ロードバ
ランサー
ジョブ管理
ジョブ設定
死活/稼働
監視
死活/稼働
監視
アプリA
アプリB
負荷分散 IPアドレス管理
ボリューム管理
リソース管理
アプリケーション
デプロイ管理
アプリA
アプリB
認証・認可
ログ管理
ログ管理 内部DNS管理
手動で管理 手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
Kubernetesがない状態
それぞれを別々に管理していて、設定方法もさまざまで統一されていません
インフラ屋さんの悩み
5
冗長化
どうしよう
負荷対策
どうしよう
セキュリティー
アップデート…
設定変更の
更新履歴管理
ログ管理
どうしよう
バックアップ
しなきゃ
アプリの更新
失敗したら..。
作業手順書
書くの大変
アプリケーショ
ンの更新が大変
インフラに関わる様々な悩み
6
実はAWSを使うと結構解消できる
ところまで来ています。
これらの問題を
一挙解決!?
7
までは、いかないですが
大部分を解決してくれます
Pod
Kubernetes以後
8
Kubernetesの機能
Kubernetes Node
Kubernetes Node
設定、鍵管理
アプリ設定
シークレット鍵
ロードバ
ランサー
ジョブ管理
ジョブ設定
死活/稼働
監視
死活/稼働
監視
コンテナA
コンテナB
負荷分散 IPアドレス管理
自動復旧
ボリューム管理
リソース管理
アプリケーション
デプロイ管理
Pod
コンテナA
コンテナB
自動復旧
Kubernetes Master
認証・認可
ログ管理
ログ管理 内部DNS管理
Kubernetesにより統一したインターフェースとファイルで全てを設定・管理・自動化できるようになる
Kubernetesの
マニフェストファイル
おっと、その前に
9
そもそも、Kubernetesってなんですか?
Kubernetesとは
10
Dockerコンテナーをオーケストレーションするツール
オーケストレーション??(ツール?)
コンテナーを複数/複合的に組み合わせて動かすこと、
またはその動かす環境
コンテナーを動かすために必要な整備を行うツール
Dockerコンテナー??
OS上のプロセスを他のプロセスと交わらないように
分離独立させたもので、疑似的にOS上で動作して
いるように見せることができる
要するに
「次ページ」へ
ようするにKubernetesとは
11
アプリケーションのプロセスを
複数/複合管理し、動作させ、
必要な環境情報も管理するもの
Kubernetes以前
12
もう一回見てみましょう
Kubernetes以前(再掲)
13
サーバー
サーバー
設定、鍵管理
アプリ設定
シークレット鍵
ロードバ
ランサー
ジョブ管理
ジョブ設定
死活/稼働
監視
死活/稼働
監視
アプリA
アプリB
負荷分散 IPアドレス管理
ボリューム管理
リソース管理
アプリケーション
デプロイ管理
アプリA
アプリB
認証・認可
ログ管理
ログ管理 内部DNS管理
手動で管理 手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
手動で管理
Kubernetesがない状態
それぞれを別々に管理していて、設定方法もさまざまで統一されていません
Kubernetes以後
14
Pod
Kubernetesでは
15
Kubernetesの機能
Kubernetes Node
Kubernetes Node
設定、鍵管理
アプリ設定
シークレット鍵
ロードバ
ランサー
ジョブ管理
ジョブ設定
死活/稼働
監視
死活/稼働
監視
コンテナA
コンテナB
負荷分散 IPアドレス管理
自動復旧
ボリューム管理
リソース管理
アプリケーション
デプロイ管理
Pod
コンテナA
コンテナB
自動復旧
Kubernetes Master
認証・認可
ログ管理
ログ管理 内部DNS管理
Kubernetesにより統一したインターフェースとファイルで全てを設定・管理・自動かできるようになる
Kubernetesの
マニフェストファイル
インフラ屋さんの悩み(再掲)
16
冗長化
どうしよう
負荷対策
どうしよう
セキュリティー
アップデート…
設定変更の
更新履歴管理
ログ管理
どうしよう
バックアップ
しなきゃ
アプリの更新
失敗したら..。
作業手順書
書くの大変
アプリケーショ
ンの更新が大変
悩み(その1)
17
冗長化どうしよう
悩み(その1)
18
冗長化どうしよう
悩み(その2)
19
負荷対策どうしよう
悩み(その2)
20
負荷対策どうしよう
悩み(その3)
21
アプリケーション更新
悩み(その3)
22
アプリケーション更新
悩み(その4)
23
アプリ更新に失敗したら
悩み(その4)
24
アプリ更新に失敗したら
悩み(その5)
25
HA構成どうしよう
悩み(その5)
26
HA構成どうしよう
悩み(その6)
27
設定変更どうしよう
悩み(その6)
28
設定変更どうしよう
その他にもいろいろ
29
Kubernetesの機能(1)
30
Kubernetesの機能(2)
31
Kubernetesの機能(3)
32
今回のお題ってなんでしたっけ(再掲)
33
Kubernetesで変わるインフラ
Kubernetesは
34
Kubernetesはクラウドの
Linuxになりつつある
これまでのインフラ
35
とりあえず、OSはCentOS(Linux)を入れておく
これからのインフラ
36
とりあえず、OSはUbuntu(Linux)を入れて
Kubernetesを入れておく
それ以外にも変わることは沢山
37
• ネットワークもKubernetesに対応するようにする必要がある
• ストレージもKubernetesに対応する必要がある
• アップデート方法もKubernetesに対応したものに変わる
• 監視もKubernetesに対応した方法に変わる
• 運用方法もKubernetesに対応したものに変わる
• ログの取得方法もKubernetesに対応したものに変わる
• トラブルシューティング方法もKubernetesに対応した方法になる
• アプリはコンテナー化する必要がある
• 設定は手順書ではなくて、YAMLで書く
• Kubernetesにより様々な自動化がなされる(運用は無くならない)
Kubernetesを勉強したい人のための書籍
38
https://book.impress.co.jp/books/1118101055 https://www.shoeisha.co.jp/book/detail/978479
8155371
https://gihyo.jp/book/2018/978-4-297-10033-9
Docker/Kubernetes 実践コンテ
ナ開発入門
コンテナ・ベース・オーケスト
レーション
Kubernetes完全ガイド
Kubernetesの覚えて欲しい特徴
39
3行で
Immutable Infrastructure
(変更を積み重ねず、都度作る/作り直す)
宣言的設定
(あるべき姿を宣言し、その姿に収束させる)
自己修復
(どこかが壊れても、人を介さずに修復する)
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー より
https://www.slideshare.net/ToruMakabe/kubernetes-120907020
Reconciliation Loop(突き合わせループ)
40
Kubernetesの
マニフェストファイル
マニフェストが
全て正
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー より
https://www.slideshare.net/ToruMakabe/kubernetes-120907020
現在の
Kubernetes設定
Kubernetesの特徴
41
3行で
Immutable Infrastructure
(変更を積み重ねず、都度作る/作り直す)
宣言的設定
(あるべき姿を宣言し、その姿に収束させる)
自己修復
(どこかが壊れても、人を介さずに修復する)
「手順書よ、さようなら」
「インフラの全てをコード化する」
「Kubernetesが全てをコントロール」
つまりこういうこと
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー より
https://www.slideshare.net/ToruMakabe/kubernetes-120907020
Kubernetesのメリット
42
Kubernetesにより
構成をまとめて
管理できるようになった
インフラについて何も説明してないじゃん!
43
実際の変化はどうなのか?
Nextcloudって知ってますか?
44
Nextcloudとは?
45
ownCloud からフォークされたオープンソースプロダクト。
PHPで作られたオンラインストレージサービスを構築できるサーバーソフトウェア
こんな風にブラウザーで操作でき
ます!今では当たり前の風景に
スタイルズ社はNextcloudの正規代理店です
46
Partners – Nextcloud
https://nextcloud.com/partners/
Nextcloud公式パートナーサイト | 株式会社スタイルズ
https://nextcloud.stylez.co.jp/
通常のNextcloudのインフラはこんな感じ
47
とある大学様のインフラ構成図
Nextcloudセグメント
利用者
(Webブラウザ)
LDAP連携
■Webサーバ×2台
OS:CentOS
Nginx,php-fpm
LoadbalancerFirewall
利用者
(モバイル端末)
利用者
(同期アプリ)
Storage
NFSマウント
■DBサーバ×2台
OS:CentOS
MariaDB,Redis
DB/セッション Server
LDAP Server
Web Server
DB/セッション Server
Nginx
PHP-FPM
Nextcloud
Nginx
PHP-FPM
Nextcloud
MariaDB
Web Server
Redis
Kubernetesで置き換えるとどうなる?
48
利用者
(Webブラウザ)
LDAP連携
Firewall
利用者
(モバイル端末)
利用者
(同期アプリ)
Storage
NFSマウント
LDAP Server
Nextcloudセグメント Kubernetesクラスター
■Kubernetes×3台
OS:Ubuntu
Loadbalancer
■DBサーバ×2台
OS:CentOS
MariaDB,Redis
DB Server
DB Server
MariaDB
Nginx
PHP-FPM
Nextcloud
Redis
nginx
Nginx
PHP-FPM
Nextcloud
Nginx
PHP-FPM
Nextcloud
PHP-
FPM
redis
nginx
PHP-
FPM
redis
nginx
PHP-
FPM
redis
Kubernetes
Kubernetes
Kubernetes
設定、鍵管理
アプリ設定
シークレット鍵
ジョブ管理
ジョブ設定
Dockerイメージ
レジストリ
Gitリポジトリ
実は....。
49
インフラのハードウェア
としてはあまり変わらない
変わるのは…
50
インフラ、アプリ、
ミドルウェアの管理面
管理面が大きく変わる(一部再掲)
51
• アップデート方法もKubernetesに対応したものに変わる
• 監視もKubernetesに対応した方法に変わる
• 運用方法もKubernetesに対応したものに変わる
• ログの取得方法もKubernetesに対応したものに変わる
• トラブルシューティング方法もKubernetesに対応した方法になる
• アプリはコンテナー化する必要がある
• 設定は手順書ではなくて、YAMLで書く
• Kubernetesにより様々な自動化がなされる(運用は無くならない)
Kubernetesを勉強したい人のための書籍(再掲)
52
https://book.impress.co.jp/books/1118101055 https://www.shoeisha.co.jp/book/detail/978479
8155371
https://gihyo.jp/book/2018/978-4-297-10033-9
Docker/Kubernetes 実践コンテ
ナ開発入門
コンテナ・ベース・オーケスト
レーション
Kubernetes完全ガイド
何を勉強すればよいか?3つのレイヤー
53
の基礎
コンテナの基礎
CIビルドの基礎
Kubernetesネットワーク
Kubernetesストレージ
KubernetesパッケージングYAMLファイル
クラウドデザインパターン 12Factor App マイクロサービス
結構大変なことが一杯
54
しかし、Kubernetesは
必ずやってきます
今から始めましょう
ご清聴
ありがとうございました。
55

Kubernetes で変わるインフラ