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

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

Shukun
June 13, 2020

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

Shukun

June 13, 2020
Tweet

More Decks by Shukun

Other Decks in Technology

Transcript

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

    FUJITSU LIMITED 宋 書坤(Song Shukun) ◼OSSコミュニティ開発エンジニア ◼Kubernetes とか Istioとか 1
  2. Cluster-API/Metal3-io について Copyright 2020 FUJITSU LIMITED • 全体像 • Cluster-APIのアーキテクチャ

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

    Azure GCP KVM インフラ クラスタ作成 (cluster.yaml) K8sクラスタ 7
  4. ◼ 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
  5. アーキテクチャ(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
  6. アーキテクチャ(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
  7. アーキテクチャ(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
  8. アーキテクチャ(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
  9. アーキテクチャ(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
  10. アーキテクチャ(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
  11. アーキテクチャ(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
  12. アーキテクチャ(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
  13. アーキテクチャ(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
  14. アーキテクチャ(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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. Cluster-APIとmetal3-ioとの関連 Copyright 2020 FUJITSU LIMITED Cluster Metal3MachineTemplate Metal3Cluster KubeadmControlPlane Metal3Machine

    Control plane KubeadmConfig Machine Metal3-io あくまでデータ Ex. Ubuntu20作りたい 実際に ベアメタルサーバを配備 Ex. Ubuntu20をプロビジョニング 31
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. ベアメタルサーバが配備されるまでの動き ベアメタルサーバ:配備可能な状態へと移行 電源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
  32. ◼ ワークロードの負荷に応じたクラスタ規模の自動調整機能 ◼ この実現に向けて、下記の機能を開発中: ◼ ネットワーク自動設定 ◼ ベアメタルサーバのソフトリセット クラスタオートリサイズ 本番環境

    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
  33. ◼ ワークロードの負荷に応じたクラスタ規模の自動調整機能 ◼ この実現に向けて、下記の機能を開発中: ◼ ネットワーク自動設定 ◼ クラスタのオートスケール機能 ◼ ベアメタルサーバのソフトリセット

    クラスタオートリサイズ 本番環境 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
  34. Baremetal Server NIC NIC Copyright 2020 FUJITSU LIMITED Metal3-ioの管理対象 0/1

    0/2 自動設定対象 ◼K8sのAPIの延長でベアメタルサーバの隣接スイッチに VLANなどの自動設定を行う ◼現在開発中 ネットワーク自動設定(1/2) 42
  35. ◼ 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