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

2b3af8a2652d7e6c9caf92e6b1fe7c34?s=47 hashimotosyuta
February 24, 2019

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

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

2b3af8a2652d7e6c9caf92e6b1fe7c34?s=128

hashimotosyuta

February 24, 2019
Tweet

Transcript

  1. Kubic で 簡単お手軽 Kubernetes クラスタ構築 hashimoto syuta syuta.hashimoto@gmail.com

  2. 2 今日の内容 • Kubernetes とは • Kubic をインストール • Kubernetes

    を動かそう • Kubernetes Dashboard を動かそう
  3. 自己紹介

  4. 4 橋本 修太 • openSUSE ユーザ会で主に活動中 • その他、小江戸 LUG などの LUG

    に出没 • 最近は途上国関連のイベントにも参加 Twitter @syuta_openSUSE FB: syutah 海に出よう >
  5. Kubernetes とは?

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

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

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

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

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

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

  12. 12 そこで Kubernetes

  13. 13 展開が楽! • コマンド一つで順次アップデート • 設定次第でリクエスト取りこぼし 無しを実現 • ロールバックもコマンド一つ •

    LB は内蔵(外部の LB 機器の利用 もできる?)
  14. 14 Web サーバーがとまっても 自動回復 ケース1

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

  16. 16 スケールアウトも簡単 • 稼働コンテナ数を3に指定するだ けで、3つめのコンテナをすぐ開 始してくれる • 当然、 LB の設定も自動

    • ノードがあいていれば、そのノー ドへ展開 • もちろんノードの追加も楽なの で、瞬間的に大きくスケールアウ トする事も可能 複製
  17. 17 ノード追加でスケールアウト ノードを追加

  18. 18 まだまだある • ボリュームの管理 • リソースの有効活用 • 外部サービスの利用 → コンテナ運用の本命

    • 学習コスト、導入コストがまだ高い? • 使いこなすには、ネットワークからボリュームまでイン フラの広範な知識が必要
  19. Kubic を インストール

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

    記事乗ってます
  21. 21 CRI-O Kubic で採用 Lightweight Container Runtime for Kubernetes 標準規格のコンテナを動かすランタイム

    Docker だけでないコンテナを動かせら れる
  22. 22 インストールイメージ まずはインストールイメージをダウンロード 公式サイトの中段左側

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

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

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

  26. Kubernetes を 動かす

  27. 27 kubeadm Kubernetes クラスタを構築 してくれるソリューション • kubeadm init で master

    を構築 • Kubeadm join でノードを生成、 master に接続
  28. 28 Kubernetes はクラスタ構成 Master 全体を管理する(管理用のコンテナが走っている) Node 実際にコンテナが走る Kubernetes クラスタ

  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行
  30. 30 3 ステップで master 始動 2. kubectl 用設定ファイルコピー • cp

    -i /etc/kubernetes/admin.conf ~/.kube/config • kubectl apply -f https://0y.at/kubicflannel 3.ネットワークアドオン適応 • kubectl は Kubernetes を動かすためのコマンドライン インターフェース • この設定ファイルがあるユーザーなら、別マシンからで も操作可能(アクセス可能の必要あり)
  31. 31 node 起動 master の kubeadm init の最後に表示される join コマン

    ドに以下を追加して実行 確認 get nodes は node の状態を表示するコマンド STATUS が Ready となっていれば OK --cri-socket=/var/run/crio/crio.sock • kubectl get nodes
  32. Dashboad を 使おう

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

  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 でオンラ インのファイルも指定できる
  35. 35 インストール&起動2 2.ユーザー作成 ※Creating sample user を参照してください 3.プロキシ起動 • kubectl

    proxy Dashboad はアクセスを制限しているため? サービスアカウントと RoleBinding を作成 書いてある通りにすればすんなりいきます
  36. 36 アクセス そうしたら、ブラウザから以下へアクセス http://localhost:8001/api/v1/namespaces/ kube-system/services/https:kubernetes- dashboard:/proxy/

  37. 37 ログイン画面

  38. 38 ログイン • ユーザーのトークンを表示させるコマンド • これで表示されるトークンを、ログイン画面のトー クンに貼り付け • kubectl -n

    kube-system describe secret $ (kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
  39. 39 Dashboad の表示

  40. Questions?

  41. Thank you. Join the conversation, contribute & have a lot

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

    www.opensuse.org
  43. 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 rbrown@opensuse.org Design & Inspiration openSUSE Design Team http://opensuse.github.io/branding- guidelines/