Slide 1

Slide 1 text

Kubic で 簡単お手軽 Kubernetes クラスタ構築 hashimoto syuta [email protected]

Slide 2

Slide 2 text

2 今日の内容 • Kubernetes とは • Kubic をインストール • Kubernetes を動かそう • Kubernetes Dashboard を動かそう

Slide 3

Slide 3 text

自己紹介

Slide 4

Slide 4 text

4 橋本 修太 • openSUSE ユーザ会で主に活動中 • その他、小江戸 LUG などの LUG に出没 • 最近は途上国関連のイベントにも参加 Twitter @syuta_openSUSE FB: syutah 海に出よう >

Slide 5

Slide 5 text

Kubernetes とは?

Slide 6

Slide 6 text

6 Docker で web アプリを作ってみた ※ このお話はフィクションです

Slide 7

Slide 7 text

7 ●展開が楽 ●ライブラリのセットがいつも同じ ●使い捨て簡単 Ver2 検証用

Slide 8

Slide 8 text

8 プロダクションに乗せてみた

Slide 9

Slide 9 text

9 展開が楽? LB ログインして作業 ログインして作業

Slide 10

Slide 10 text

10 Web サーバーがとまった !? LB ログインして作業 ログインして作業

Slide 11

Slide 11 text

11 スケールアウト!?? LB ログインして作業 ログインして作業

Slide 12

Slide 12 text

12 そこで Kubernetes

Slide 13

Slide 13 text

13 展開が楽! ● コマンド一つで順次アップデート ● 設定次第でリクエスト取りこぼし 無しを実現 ● ロールバックもコマンド一つ ● LB は内蔵(外部の LB 機器の利用 もできる?)

Slide 14

Slide 14 text

14 Web サーバーがとまっても 自動回復 ケース1

Slide 15

Slide 15 text

15 Web サーバーがとまっても 自動回復 ケース1.1

Slide 16

Slide 16 text

16 スケールアウトも簡単 ● 稼働コンテナ数を3に指定するだ けで、3つめのコンテナをすぐ開 始してくれる ● 当然、 LB の設定も自動 ● ノードがあいていれば、そのノー ドへ展開 ● もちろんノードの追加も楽なの で、瞬間的に大きくスケールアウ トする事も可能 複製

Slide 17

Slide 17 text

17 ノード追加でスケールアウト ノードを追加

Slide 18

Slide 18 text

18 まだまだある ● ボリュームの管理 ● リソースの有効活用 ● 外部サービスの利用 → コンテナ運用の本命 ● 学習コスト、導入コストがまだ高い? ● 使いこなすには、ネットワークからボリュームまでイン フラの広範な知識が必要

Slide 19

Slide 19 text

Kubic を インストール

Slide 20

Slide 20 text

20 Kubic • インストールすればすぐに Kubernetes が使 えるディストリビューション • 導入コストが低い インストール方法の 記事乗ってます

Slide 21

Slide 21 text

21 CRI-O Kubic で採用 Lightweight Container Runtime for Kubernetes 標準規格のコンテナを動かすランタイム Docker だけでないコンテナを動かせら れる

Slide 22

Slide 22 text

22 インストールイメージ まずはインストールイメージをダウンロード 公式サイトの中段左側

Slide 23

Slide 23 text

23 インストール準備 言語、 NTP サーバー、 root パスワード等を設定 見たとおりです。どんどん選んでいきます。

Slide 24

Slide 24 text

24 ロールの選択 ロールは「 kubeadm ノード」を選択します。 これは、 Kubernetes 起動時に kubeadm を使う ためです。

Slide 25

Slide 25 text

25 インストール開始 準備が終るとインストールです。 ちょっとだけ待ちましょう

Slide 26

Slide 26 text

Kubernetes を 動かす

Slide 27

Slide 27 text

27 kubeadm Kubernetes クラスタを構築 してくれるソリューション • kubeadm init で master を構築 • Kubeadm join でノードを生成、 master に接続

Slide 28

Slide 28 text

28 Kubernetes はクラスタ構成 Master 全体を管理する(管理用のコンテナが走っている) Node 実際にコンテナが走る Kubernetes クラスタ

Slide 29

Slide 29 text

29 3 ステップで master 始動 1. master 起動 ● kubeadm init --cri-socket=/var/run/crio/crio.sock -- pod-network-cidr=10.244.0.0/16 • Kubic は root のパスワードログインが制限されているの で注意 • ダウンロードに数分 • 最後に kubeadm join 用のコマンドが表示されるのでコピ ーしておく 例) kubeadm join 192.168.***********  ※2、3行

Slide 30

Slide 30 text

30 3 ステップで master 始動 2. kubectl 用設定ファイルコピー ● cp -i /etc/kubernetes/admin.conf ~/.kube/config ● kubectl apply -f https://0y.at/kubicflannel 3.ネットワークアドオン適応 ● kubectl は Kubernetes を動かすためのコマンドライン インターフェース ● この設定ファイルがあるユーザーなら、別マシンからで も操作可能(アクセス可能の必要あり)

Slide 31

Slide 31 text

31 node 起動 master の kubeadm init の最後に表示される join コマン ドに以下を追加して実行 確認 get nodes は node の状態を表示するコマンド STATUS が Ready となっていれば OK --cri-socket=/var/run/crio/crio.sock ● kubectl get nodes

Slide 32

Slide 32 text

Dashboad を 使おう

Slide 33

Slide 33 text

33 Kubernetes Dashboard ●ノードやポッドなどの状況が把握できる ●ポッドなどを作成する事ができる

Slide 34

Slide 34 text

34 インストール&起動1 1.インストール ● kubectl apply -f https://raw.githubusercontent.com/kubernetes /dashboard/v1.10.1/src/deploy/recommended/ kubernetes-dashboard.yaml ● apply -f で、指定した yaml ファイルを kubernetes に適用 ● 今回は Dashboad 。見ての通り、 URL でオンラ インのファイルも指定できる

Slide 35

Slide 35 text

35 インストール&起動2 2.ユーザー作成 ※Creating sample user を参照してください 3.プロキシ起動 ● kubectl proxy Dashboad はアクセスを制限しているため? サービスアカウントと RoleBinding を作成 書いてある通りにすればすんなりいきます

Slide 36

Slide 36 text

36 アクセス そうしたら、ブラウザから以下へアクセス http://localhost:8001/api/v1/namespaces/ kube-system/services/https:kubernetes- dashboard:/proxy/

Slide 37

Slide 37 text

37 ログイン画面

Slide 38

Slide 38 text

38 ログイン • ユーザーのトークンを表示させるコマンド • これで表示されるトークンを、ログイン画面のトー クンに貼り付け ● kubectl -n kube-system describe secret $ (kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

Slide 39

Slide 39 text

39 Dashboad の表示

Slide 40

Slide 40 text

Questions?

Slide 41

Slide 41 text

Thank you. Join the conversation, contribute & have a lot of fun! www.opensuse.org

Slide 42

Slide 42 text

42 Have a Lot of Fun, and Join Us At: www.opensuse.org

Slide 43

Slide 43 text

General Disclaimer This document is not to be construed as a promise by any participating organisation to develop, deliver, or market a product. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. openSUSE makes no representations or warranties with respect to the contents of this document, and specifically disclaims any express or implied warranties of merchantability or fitness for any particular purpose. The development, release, and timing of features or functionality described for openSUSE products remains at the sole discretion of openSUSE. Further, openSUSE reserves the right to revise this document and to make changes to its content, at any time, without obligation to notify any person or entity of such revisions or changes. All openSUSE marks referenced in this presentation are trademarks or registered trademarks of SUSE LLC, in the United States and other countries. All third-party trademarks are the property of their respective owners. License This slide deck is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license. It can be shared and adapted for any purpose (even commercially) as long as Attribution is given and any derivative work is distributed under the same license. Details can be found at https://creativecommons.org/licenses/by-sa/4.0/ Credits Template Richard Brown [email protected] Design & Inspiration openSUSE Design Team http://opensuse.github.io/branding- guidelines/