21.5K Views
October 12, 22
スライド概要
2022/10/12 K8s@home #1のLT資料です。
Application Developer @IBM Japan
kubesprayで 作って壊そうk8sクラスタ 2022/10/12 K8s@home #1 佐々木 健太朗 @ponzmild 1
自己紹介 佐々木 健太朗 (Kentaro Sasaki) - @ponzmild • 所属: 日本アイ・ビー・エム株式会社 • 普段のお仕事: OpenShiftでアプリ開発 & モダナイゼーション支援 • 書籍執筆: 『Apache Kafkaをはじめる』(インプレスR&D社) • 自宅k8s歴: 約1年 2
そのKubernetesクラスタ、 「今」もう一度作り直せますか? 3
長く運用していると作り直す時がくる Pod Pod Pod K8sクラスタのバージョンアップ、 コンポーネントの組合せや実装変更 Kubernetes Podから利用するパッケージ導入、 VM VM VM VM VM 定期的なバージョンアップ ハイパーバイザー 物理マシン 物理マシン 同居するVMのためにリソース空けわたし 物理マシン リソース増強、NW設定の変更、 電源断でダウン 4
まとめて作り直すのは大変!! 設定値を忘れた なぜこんな設定を 入れたのか不明 手作業だと何度も やり直し 作り直したいのは 一部だけなのに 5
kubesprayで カジュアルにk8s作って壊そう! 6
kubesprayとは • K8sクラスタを構成管理、および作成~削除を実行するツールキット • https://github.com/kubernetes-sigs/kubespray • ベアメタル、vSphere、AWS、Azureといった複数環境に対応 • HA構成のクラスタも構成可能 • 実態はAnsible Playbookの集合 = k8sクラスタをIaC化 7
https://kubernetes.io/ja/docs/setup/production-environment/tools/kubespray/ 8
kubesprayの仕組み Pod Pod kubespray Addons Pod Kubernetes Ansible VM VM VM VM VM K8sに必要なOS設定 ハイパーバイザー 物理マシン 物理マシン Ansible Playbook (YAML) 物理マシン 9
kubesprayをはじめる 10
kubesprayの前提 • kubespray実行マシンにPythonをインストール済であること • ansible-coreのバージョンに合わせて、Python 3.8以上を推奨 • K8s NodeはLinuxであること • Debian, Ubuntu, RHEL/Fedora, Oracle Linux等 • Windows Node向けのPlaybookはあるが公式にサポートされていない 11
Step1: kubesprayのセットアップ Gitリポジトリはタグ名 でクローンを推奨 12
Step2: インベントリと設定ファイルを生成 Ansibleを知らなく てもインベントリと設定 YAMLを生成可能 13
Step3: 設定ファイルを編集 Inventory/mycluster/group_vars/ k8s_cluster/k8s-cluster.yml group̲vars以下の 必要なパラメータだけ編集 すればOK Inventory/mycluster/group_vars/ k8s_cluster/addons.yml 14
Step4a: kubesprayでクラスタを立てる • 事前定義されたPlaybook “cluster.yml” でk8sクラスタを立てる 1master, 3worker で20~30分 15
Step4b: 必要な時にすぐ壊せる • 事前定義されたPlaybook “reset.yml” でカジュアルに壊せる 16
kubesprayで嬉しいポイント 👍 • K8sクラスタのコンポーネント選定・設定値はPlaybookを見れば全てわかる • Git管理すれば、なぜその設定にしたか (=Why) 知見がコミットログに残る • 何回実行しても結果が同じになる = “冪等” • 安心してk8sクラスタを作り直し可能 (※ただしVMより上のレイヤーに限る) • Playbookの一部だけ流すことも可能 • 既存のPlaybookからKubesprayのPlaybookを呼び出すことも可能です 17
そのKubernetesクラスタ、 「今」もう一度作り直せますか? → kubesprayで作って壊そう! 18
Happy k8s@home!😉 19
(参考) kubesprayのAddons • Load Balancer … MetalLB k8sクラスタと同じラ イフサイクルで導入する PaaSコンポーネント • Ingress … NGINX Ingress Controller • Storage … CephFS, RBD, Rancher Local Path Provisioner • Observability … Metrics Server • GitOps … ArgoCD • Security … Cert Manager ※ Addonsの一覧はv2.20.0時点 20