Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubicで簡単お手軽Kubernetesクラスタ構築

hashimotosyuta
February 24, 2019

 Kubicで簡単お手軽Kubernetesクラスタ構築

2019/02/22(金)に行われたOSC Tokyo/SpringのopenSUSEセミナーで発表した資料です。KubicをインストールしてKubernetesを動かす方法の説明や、Kubernetes Dashboardのインストールとログイン方法を簡単に説明しています。(Dashboardのサイトは公式のサイトを示しています。)

hashimotosyuta

February 24, 2019
Tweet

More Decks by hashimotosyuta

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

  3. 自己紹介

    View full-size slide

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

    View full-size slide

  5. Kubernetes
    とは?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  12. 12
    そこで Kubernetes

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  19. Kubic を
    インストール

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  26. Kubernetes を
    動かす

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  29. 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行

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  32. Dashboad を
    使おう

    View full-size slide

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

    View full-size slide

  34. 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 でオンラ
    インのファイルも指定できる

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  37. 37
    ログイン画面

    View full-size slide

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

    View full-size slide

  39. 39
    Dashboad の表示

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  42. 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/

    View full-size slide