Pro Yearly is on sale from $80 to $50! »

運用性向上のためのベアメタルサーバ制御機能の紹介

96348431e7b0e25d49d81fb241edbbf9?s=47 Shukun
June 13, 2020

 運用性向上のためのベアメタルサーバ制御機能の紹介

96348431e7b0e25d49d81fb241edbbf9?s=128

Shukun

June 13, 2020
Tweet

Transcript

  1. 運用性向上のためのベアメタルサーバ 制御機能の紹介 富士通株式会社 プラットフォームソフトウェア事業本部 Linuxソフトウェア事業部 開発部 古川 勇志郎、宋 書坤 0

    Copyright 2020 FUJITSU LIMITED
  2. 発表者 古川 勇志郎(Furukawa Yushiro) ◼OSSコミュニティ開発リーダ ◼Kubernetes とか openstackとか Copyright 2020

    FUJITSU LIMITED 宋 書坤(Song Shukun) ◼OSSコミュニティ開発エンジニア ◼Kubernetes とか Istioとか 1
  3. アジェンダ ◼背景 ◼Cluster-API/Metal3-ioについて ◼我々が行っている機能開発の紹介 ◼まとめ Copyright 2020 FUJITSU LIMITED 2

  4. 背景 ◼ コンテナオーケストレーションによるサービスの運用が普及 ◼ 運用コスト最適化の観点から、すべてのサービスをクラウド上で運用する のではなく、ハイブリッドクラウド運用が増えてきている ◼ 下記の理由から、オンプレ環境でベアメタルサーバの要望あり Copyright 2020

    FUJITSU LIMITED ワークロードの高いサービス HWアクセラレーションなどの特殊なデバイスを利用 ビジネスの都合上 扱うデータ量が多く、クラウドに移行させられない 性能 コスト 3
  5. オンプレ環境におけるベアメタル運用の課題 ◼サービスが稼働可能な環境にするまでの手順が多く、複雑 ◼自動化は必須! ◼オンプレ環境でも、パブリッククラウドと同様に簡単に マシン管理(増設、運用)を可能にしたい Copyright 2020 FUJITSU LIMITED 導入・運用コスト削減

    ベアメタル k8s 運用 4
  6. オンプレ環境におけるベアメタル運用の課題 ◼サービスが稼働可能な環境にするまでの手順が多く、複雑 ◼自動化は必須! ◼オンプレ環境でも、パブリッククラウドと同様に簡単に マシン管理(増設、運用)を可能にしたい Copyright 2020 FUJITSU LIMITED 導入・運用コスト削減

    Cluster-API Metal3-io 5
  7. Cluster-API/Metal3-io について Copyright 2020 FUJITSU LIMITED • 全体像 • Cluster-APIのアーキテクチャ

    • Control-Planeができるまで • Metal3-ioのアーキテクチャ • ベアメタルサーバができるまで 6
  8. Kubernetes クラスタ 全体像 Copyright 2020 FUJITSU LIMITED Cluster-API AWS VMware

    Azure GCP KVM インフラ クラスタ作成 (cluster.yaml) K8sクラスタ 7
  9. ◼ Kubernetes上でKubernetesクラスタを 管理するためのAPI 以下のプロバイダーを定義してCluster-API に命令することでK8sクラスタが作成される ◼ Infrastructure provider •マシン、ネットワークを提供 ◼

    Control plane provider •K8sコンポを制御するための情報を提供 •参照実装:kubeadm control plane ◼ Bootstrap provider •K8sのノードにするための起動情報を提供 •参照実装:Cluster api bootstrap provider kubeadm(CABPK) Cluster-APIとは? Kubernetes cluster K8sノード Infrastructure Provider Bootstrap Provider K8sノード K8sノード Machine Copyright 2020 FUJITSU LIMITED Control Plane Provider 8
  10. Kubernetes クラスタ Metal3-ioとは? ◼Kubernetesクラスタ向けベアメタルサーバ制御機能を提供 ◼ K8s上で動くアプリの一つ、K8sで管理される ◼ Cluster-APIのインフラプロバイダーの、ベアメタル担当のうちの一つ Copyright 2020

    FUJITSU LIMITED Cluster-API AWS VMware Azure GCP KVM Metal3-io インフラ クラスタ作成 (cluster.yaml) 9
  11. アーキテクチャの説明に入ります ◼Cluster-API + metal3-ioの場合のアーキテクチャ Copyright 2020 FUJITSU LIMITED 10

  12. アーキテクチャ(Cluster-API + metal3-io) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster

    Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig Worker Custom Resource Definition Controller 参照 11
  13. アーキテクチャ(Cluster-API + metal3-io) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster

    Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig Worker 参照 Cluster情報: 1.インフラの情報 2.Control Planeの情報 3.Clusterのネットワーク情報(Pod cidr, Service cidr…) 12 Custom Resource Definition Controller
  14. アーキテクチャ(Cluster-API + metal3-io) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster

    Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig Worker 参照 InfraCluster: プロバイダーが提供する、Clusterの API endpointなどの情報 13 Custom Resource Definition Controller
  15. アーキテクチャ(Cluster-API + metal3-io) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster

    Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig Worker 参照 Control Planeを作るための情報 サーバ起動時のデータ 14 Custom Resource Definition Controller
  16. アーキテクチャ(Cluster-API + metal3-io) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster

    Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig Worker 参照 インフラとなるマシンを作るための テンプレート、プロバイダーが提供する OSイメージなどの情報 15 Custom Resource Definition Controller
  17. アーキテクチャ(Cluster-API + metal3-io) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster

    Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig Worker 参照 起動時データ (Bootstrap data) バックエンドのインフラにて 配備したいマシンの情報 配備対象のマシンの 状態管理 16 Custom Resource Definition Controller
  18. アーキテクチャ(Cluster-API core) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster Metal3MachineTemplate

    Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig capi-controller-manager 参照 17 Custom Resource Definition Controller
  19. アーキテクチャ(Control plane Provider) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster

    Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig capi-kubeadm-control-plane- controller-manager 参照 18 Custom Resource Definition Controller
  20. アーキテクチャ(Bootstrap Provider) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster Metal3MachineTemplate

    Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig capi-kubeadm-bootstrap- controller-manager 参照 19 Custom Resource Definition Controller
  21. アーキテクチャ(Infrastructure Provider) Copyright 2020 FUJITSU LIMITED KubeadmConfigTemplate MachineDeployment Cluster Metal3MachineTemplate

    Metal3Cluster KubeadmControlPlane Metal3Machine Metal3MachineTemplate Metal3Machine Control plane Worker MachineSet Machine KubeadmConfig Machine KubeadmConfig capm3-controller-manager 参照 20 Custom Resource Definition Controller
  22. Control Planeができるまでの処理 Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-controller-manager capi-kubeadm-control-plane-controller-manager capi-kubeadm-bootstrap-controller-manager capm3-controller-manager 21
  23. Control Planeができるまでの処理(1/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-controller-manager Cluster controller 1.Clusterリソースに基づいて、Metal3Cluster, kubeadmControlPlaneの所属情報 (ownerRef)を設定 2.Metal3Clusterの状態や情報(apiendpointなど)を監視して、Clusterに反映させる 22
  24. Control Planeができるまでの処理(2/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-controller-manager Cluster controller 1.Clusterリソースに基づいて、Metal3Cluster, kubeadmControlPlaneのownerRefを設定 2.Metal3Clusterの状態や情報(apiendpointなど)を監視して、Clusterに反映させる 23
  25. Control Planeができるまでの処理(3/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-kubeadm-control-plane-controller-manager Kubeadm control plane controller 1.KubeadmControlPlaneのOwnerRefに記載されている所有者(Owner)の状態をチェック 2.InfraMachineTemplateによってInfraMachineを作成 3.自身のSpec.kubeadmConfigSpecによってKubeadmConfigを作成 4.作成したInfraMachineとKubeadmConfigをもとにMachineを作成 24
  26. Control Planeができるまでの処理(4/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-kubeadm-control-plane-controller-manager Kubeadm control plane controller 1.KubeadmControlPlaneのOwnerRefに記載されているOwnerの状態をチェック 2.InfraMachineTemplateによって起動したいサーバのOS情報など( InfraMachine)を作成 3.自身のSpec.kubeadmConfigSpecによってKubeadmConfigを作成 4.作成したInfraMachineとKubeadmConfigをもとにMachineを作成 25
  27. Control Planeができるまでの処理(5/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-kubeadm-control-plane-controller-manager Kubeadm control plane controller 1.KubeadmControlPlaneのOwnerRefに記載されているOwnerの状態をチェック 2.InfraMachineTemplateによってInfraMachineを作成 3.自身のSpec.kubeadmConfigSpecによってKubeadmConfigを作成 4.作成したInfraMachineとKubeadmConfigをもとにMachineを作成 26
  28. Control Planeができるまでの処理(6/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-kubeadm-control-plane-controller-manager Kubeadm control plane controller 1.KubeadmControlPlaneのOwnerRefに記載されているOwnerの状態をチェック 2.InfraMachineTemplateによってInfraMachineを作成 3.自身のSpec.kubeadmConfigSpecによってKubeadmConfigを作成 4.作成したInfraMachineとKubeadmConfigをもとにMachineを作成 27
  29. Control Planeができるまでの処理(7/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-kubeadm-bootstrap-controller-manager Kubeadm config controller 1. Pending状態のMachineに対して、BootstrapConfig.Status.BootstrapDataを設定 (マシン起動時に必要な情報:ex. Cloud-init、kubeadm initなど) 28
  30. Control Planeができるまでの処理(8/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capi-controller-manager Machine controller 関連するMetal3Machineの状態などを監視して、Machine自身の稼働状態 (pending、provisioning、provisioned、running)を設定 29
  31. Control Planeができるまでの処理(9/9) Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane

    Metal3Machine Control plane KubeadmConfig Machine capm3-controller-manager Metal3Machine Controller Machineを参照してMetal3Machine情報を更新し、Machineをprovisioningする Control Planeの完成 30
  32. Cluster-APIとmetal3-ioとの関連 Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine

    Control plane KubeadmConfig Machine Metal3-io あくまでデータ Ex. Ubuntu20作りたい 実際に ベアメタルサーバを配備 Ex. Ubuntu20をプロビジョニング 31
  33. Metal³のアーキテクチャ Metal3Machine BareMetalHost Bare Metal Server Copyright 2020 FUJITSU LIMITED

    capm3-controller-manager ホストインベントリ BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server 要求 Bare metal server backend Baremetal Operator 32
  34. Metal³のアーキテクチャ Metal3Machine BareMetalHost Bare Metal Server Copyright 2020 FUJITSU LIMITED

    capm3-controller-manager ホストインベントリ BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server 要求 Baremetal Operator Bare metal server backend ベアメタルサーバを表すCRD BareMetalHostのグループ 配備したいサーバ情報 33
  35. Metal³のアーキテクチャ Metal3Machine BareMetalHost Bare Metal Server Copyright 2020 FUJITSU LIMITED

    capm3-controller-manager Metal3Machine Controller ホストのインベントリから適切なBareMetalHostを抽出し、baremetalhostオブジェクトの情報を 更新(bootstrap dataなど) ホストインベントリ BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server 要求 34
  36. Metal³のアーキテクチャ Metal3Machine BareMetalHost Bare Metal Server Copyright 2020 FUJITSU LIMITED

    Baremetal Operator Bare metal host controller Baremetalhostリソースを監視し、ベアメタルサーバの命令をバックエンドに対して発行 ホストインベントリ BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server 要求 35
  37. Metal³のアーキテクチャ Metal3Machine BareMetalHost Bare Metal Server Copyright 2020 FUJITSU LIMITED

    Bare metal server backend Openstack Ironic Baremetal operatorから指示をもらい、 ベアメタルサーバを配備 (inspect、電源管理、OSインストールなど) ホストインベントリ BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server BareMetalHost Bare Metal Server 要求 バックエンドには Openstack Ironicを流用 • OpenStack Foundationにて 品質が確保 • 開発コスト削減 36
  38. 【補足】OpenStack Ironicとは? ◼ 物理マシンの配備を行うコンポーネント ベアメタル(BM: Bare Metal)プロビジョニング ◼ テナント利用者はNova経由でベアメタルサーバを配備可能 Hypervisor

    Provide same API for users Manage VMs Manage BMs Give me an instance Flavor Flavor … … Copyright 2020 FUJITSU LIMITED 37
  39. ベアメタルサーバが配備されるまでの動き ベアメタルサーバ:配備可能な状態へと移行 電源ON ⇒ PXEboot ⇒ initramfs起動 ⇒ inspection(HW情報収集) BaremtalHostの

    State: Registering ⇒ Inspecting ⇒ READY Copyright 2020 FUJITSU LIMITED BareMetalHost が作成される BareMetalHost Metal3Machine と が関連づく ベアメタルサーバ:プロビジョニング(配備)される 電源ON ⇒ PXEboot ⇒ initramfs起動 ⇒ OSイメージ転送 ⇒ 再起動 BaremtalHostの State: READY ⇒ Provisioning ⇒ Provisioned ① ② 38
  40. • RAID/BIOS自動設定(本日は説明省略) • クラスタオートリサイズ • ネットワーク自動設定 私たちが開発に取り組んでいる機能 Copyright 2020 FUJITSU

    LIMITED 39
  41. ◼ ワークロードの負荷に応じたクラスタ規模の自動調整機能 ◼ この実現に向けて、下記の機能を開発中: ◼ ネットワーク自動設定 ◼ ベアメタルサーバのソフトリセット クラスタオートリサイズ 本番環境

    Worker Node Worker Node テスト環境 Master Node Worker Node Master Node 本番環境 Master Node Worker Node Worker Node テスト環境 Master Node Worker Node Copyright 2020 FUJITSU LIMITED 40
  42. ◼ ワークロードの負荷に応じたクラスタ規模の自動調整機能 ◼ この実現に向けて、下記の機能を開発中: ◼ ネットワーク自動設定 ◼ クラスタのオートスケール機能 ◼ ベアメタルサーバのソフトリセット

    クラスタオートリサイズ 本番環境 Worker Node Worker Node テスト環境 Master Node Worker Node Master Node 本番環境 Master Node Worker Node Worker Node テスト環境 Master Node Worker Node Copyright 2020 FUJITSU LIMITED コミュニティに提案するも、以下の理由で承認されず: • 規模が大きすぎて、Metal3の役割を超えている • ベアメタルサーバの再配備の時間(2, 30分)は許容できないし オートスケールは無意味になる 41
  43. Baremetal Server NIC NIC Copyright 2020 FUJITSU LIMITED Metal3-ioの管理対象 0/1

    0/2 自動設定対象 ◼K8sのAPIの延長でベアメタルサーバの隣接スイッチに VLANなどの自動設定を行う ◼現在開発中 ネットワーク自動設定(1/2) 42
  44. ◼ SwitchのCRDと制御用コントローラーを追加 (Create, delete, configure vlan …) ◼ 物理スイッチの設定はAnsibleを利用 ◼

    現在は、自社スイッチ向けのAnsible-collectionsを開発中 ネットワーク自動設定(2/2) Kubernetes cluster Switch Switch Bare Metal Server Switch Controller Machine BareMetalHost 管理LAN 業務LAN Copyright 2020 FUJITSU LIMITED BareMetal BMC NIC 43
  45. まとめ ◼Kubernetes、Cluster-API、metal3-ioについて紹介 ◼オンプレ環境でのKubernetes導入・運用コスト削減 ◼それぞれのアーキテクチャと処理の流れについて説明 ◼我々が Metal3-ioにて開発中の機能について紹介 Copyright 2020 FUJITSU LIMITED

    44
  46. Metal3-ioコミュニティにて マルチベンダサポートを充実させましょう 終わりに https://github.com/metal3-io https://groups.google.com/forum/#!forum/metal3-dev #cluster-api-baremetal channel on Kubernetes slack

    Copyright 2020 FUJITSU LIMITED 45
  47. Copyright 2020 FUJITSU LIMITED 46

  48. Copyright 2020 FUJITSU LIMITED 47