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

[July Tech Festa 2019] Kubernetes on OpenStack ...

bbrfkr
December 08, 2019

[July Tech Festa 2019] Kubernetes on OpenStack におけるハマりどころ

July Tech Festa 2019の発表内容になります。
Kubernetesをオンプレミス(OpenStack)で利用する際に私がハマったポイントについての共有になります。

発表時の動画群

* [create cluster by magnum](https://youtu.be/2XeBIdZyco0)
* [check cluster by magnum](https://youtu.be/vIGQdPgHMaE)
* [create pvc](https://youtu.be/e19r6OXz9xY)
* [create loadbalancer](https://youtu.be/uXG-AlLI85g)

bbrfkr

December 08, 2019
Tweet

More Decks by bbrfkr

Other Decks in Technology

Transcript

  1. 斎藤辰徳 (iRidge, Inc., HN: bbrfkr) Hello! 2 大手SIerにて以下を経験し、現職へ • VMwareを基礎とした仮想化基盤構築

    • IaCやコンテナ技術の案件適用推進 現職ではAWSに基軸をおき、以下のミッションを担う • FargateやAuroraなどマネージドサービスを中心に Mobile Appインフラ開発・運用
  2. ? ◉ 事業 ◦ O2O(Online to Offline)ソリューション開発 ◦ O2Oアプリの企画・開発 ◉

    技術 ◦ インフラ開発・運用 → AWS × コンテナ がメイン ◦ Managed Serviceを積極活用したCloud Architecture ◦ ECS CLIの国内トップレベルでの利用 AWS Fargate 3 Amazon ECS Amazon ECR Amazon Aurora Amazon Cognito AWS Lambda
  3. AWS Cloud 7 ◉ Masterノードの管理が不要 ◉ クラウド上のリソースと連携が可能 ELB EFS ASG

    EBS cluster auto scaling provision, destroy provision, destroy, mount provision, destroy, mount パブリックマネージドKubernetes
  4. AWS Cloud 9 ◉ Masterノードの管理が必要 ◉ クラウド上のリソースと連携が可能 ELB EFS ASG

    EBS cluster auto scaling provision, destroy provision, destroy, mount provision, destroy, mount パブリックセルフホストKubernetes
  5. VMware vSphere Infrastructure 10 ◉ Masterノードの管理が必要 ◉ クラウド上のリソースと連携が不可能な場合も cluster auto

    scaling provision, destroy provision, destroy, mount provision, destroy, mount プライベー卜セルフホストKubernetes ? ? ? ?
  6. 12

  7. OpenStack Cloud 13 ◉ Masterノードの管理が必要 ◉ クラウド上のリソースと連携が可能な場合も provision, destroy,mount provision,

    destroy, mount プライベートセルフホストKubernetes provision, destroy Octavia Cinder Manila ?
  8. 14 ◉ kubeadm製の場合、以下の機能は使えないはず…! ◦ type LoadBalancer Serviceの作成 ◦ PersistentVolumeの動的なプロビジョニング ◦

    クラスタのオートスケーリング セルフホストKubernetesとクラウド連携 Kubernetesのリソースを監視し 必要に応じてクラウドリソースを作ったり消したりできればいい Cloud Controller Manager
  9. 16 ◉ 以下のリポジトリをgit clone ◦ https://github.com/kubernetes/cloud-provider-openstack Cloud Controller Managerの設定 ◉

    cloud-configファイルを編集 & Secretに追加 $ cd manifests/controller-manager $ vi cloud-config $ sed -i "s/cloud.conf:.*/cloud.conf: $(base64 -w 0 cloud-config)/g" \ > cloud-config-secret.yaml $ kubectl apply -f .
  10. 17 ◉ cloud-configファイルのサンプル Cloud Controller Managerの設定 [Global] region=RegionOne username=admin password=password

    auth-url=https:/ /os-controller.iridge.bbrfkr:5000/v3 tenant-id=792f17824f504c17bf874ef07cb68db8 domain-id=default ca-file=/etc/ssl/certs/openstack-ca.crt [LoadBalancer] subnet-id=7f951334-e4a9-4e98-a914-7bea9feb42d3 floating-network-id=f8c7e902-afa5-4c94-a15a-a7c9241 0c4c6 use-octavia=true [BlockStorage] bs-version=auto 各サービスのエンドポイント にHTTPSでアクセスする場 合、CA証明書の指定が必 要 ロードバランサにOctaviaを 使う場合は必要
  11. 18 ◉ CSI Cinderドライバ ◦ CinderでPVをDynamic Provisioning可能にする ◦ 以下のコンポーネントで構成 (Kubernetes

    1.14時代) ▪ csi-attacher ▪ csi-nodeplugin ▪ csi-provisioner Cloud Controller Managerの設定
  12. OpenStack Cloud 23 ◉ Masterノードの管理が不要(誰もやらないとはいってない ) ◉ クラウド上のリソースと連携が可能 cluster auto

    scaling provision, destroy provision, destroy, mount provision, destroy, mount プライベートマネージドKubernetes Magnum Octavia Cinder Manila
  13. 27 ◉ CentOS7/Kubernetes the Hard Wayベース ◉ 以下をプリインストール ◦ CNI(flannel

    or calico) ◦ CoreDNS ◦ Cloud Controller Manager ◉ ただひたすらbashスクリプトで頑張る!(?) 自作Cluster driver
  14. 28 ◉ 作り方 1. driver.pyを書く 2. template_def.pyを書く 3. Heatテンプレートを書く 4.

    構築用bashスクリプトを書く 5. version.pyを書く 自作Cluster driver ◉ 作り方 1. driver.pyを書く 2. template_def.pyを書く 3. Heatテンプレートを書く 4. 構築用bashスクリプトを書く 5. version.pyを書く
  15. 32

  16. Magnum Kubernetes Cluster API LB etcd LB 34 自作Cluster driver

    ◉ どこまでできるか ◦ 構築 ▪ 複数ワーカーノード群 ▪ HAマスターノード群 ▪ API用LB ▪ etcd用LB HA Masters PythonとHeatが書ければ どこまでも。。。 Multiple Workers