Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

EDB2020_Red Hat

capsmalt
September 29, 2020

EDB2020_Red Hat

Title: DB on Kubernetesをはじめとするコンテナ運用の要
Speaker: Kazufumi Saito (Red Hat)
Twitter: @capsmalt (https://twitter.com/capsmalt)
Event: EDB Postgres Vision Tokyo 2020

capsmalt

September 29, 2020
Tweet

More Decks by capsmalt

Other Decks in Technology

Transcript

  1. 5

  2. 8

  3. INSTALL HARDEN DEPLOY OPERATE • Templating • Validation • OS

    Setup • Identity & Security Access • App Monitoring & Alerts • Storage & Persistence • Egress, Ingress & Integration • Host Container Images • Build/Deploy Methodology • Platform Monitoring & Alerts • Metering & Chargeback • Platform Security Hardening • Image Hardening • Security Certifications • Network Policy • Disaster Recovery • Resource Segmentation • OS Upgrade & Patch • Platform Upgrade & Patch • Image Upgrade & Patch • App Upgrade & Patch • Security Patches • Continuous Security Scanning • Multi-environment Rollout • Enterprise Container Registry • Cluster & App Elasticity • Monitor, Alert, Remediate • Log Aggregation 業務ユーザーが,構築,運⽤の複雑さの為に 導⼊が難しいと考えている Source: The New Stack, The State of the Kubernetes Ecosystem, August 2017 75% Kubernetes を 正しく運⽤するのは 難しい 14
  4. 15

  5. Kubernetes Support Policy への追随のツラミ Kubernetesは偉⼤な基礎技術ですが,ストレージ,ネットワーキング,セキュリティ,アプリケ ーションフレームワークなどを統合し,それを四半期ごとに更新し続けることは⼤きな負担です - Ashesh Badani, Red

    Hat https://www.techrepublic.com/article/why-running-your-own-kubernetes-deployment-could-be-a-terrible-idea/ Kubernetes は 基本的には “4半期ごとにバージョンアップ” します。 なお,“サポートされるのは直近3バージョン” です。 kubernetes.io 17
  6. Kazufumi Saito (斎藤 和史) Who am I Red Hat K.K.

    OpenShift / Kubernetes Architect Kubernetes を国内に広げる 商⽤K8sで実戦/本番投⼊を加速 K8s Lover を増やす @capsmalt 22
  7. Cloud Native Meetup Tokyo Cloud Native Developer JP OSSコミュニティのかかわり Japan

    Rook - Japan Container Days (JKD v18.04, v18.12) - CNDF / CNDT / CNDK 2019 - CNDT 2020 国内最⼤のコンテナ/Kubernetes テックカンファレンス 23
  8. まとめ Kubernetes は⾮常に ホット︕︕ ・やるに越したことはないタイミング ・ただし,やるならやり⽅を間違えないように Kubernetes 運⽤の要は Operator (Custom

    Controller + CRD) ・アプリケーション,データベースの独⾃運⽤を実装(K8s APIを拡張) ・K8sに則った運⽤を創るのか,活⽤するのか選択 Kubernetes はオープンな世界で学ぶ,そして活⽤ ・テックコミュニティで学ぼう ・創る or 活⽤する の⾒極めていく 26
  9. Kubernetes のキホン コンテナオーケストレーション ・デプロイ ・アップデート ・スケーリング ・ネットワーク管理 ・データ永続化 ・サービスディスカバリ ・監視

    ・障害対応(⾃⼰復旧) Kubernetes が,クラスター内の多数のコンテナのデ プロイやスケーリング,ルーティングなどの運⽤管 理を担うことで,サービス維持を実現する 28
  10. Kubernetes: “コンテナオーケストレーション” 複数ノードのコンテナランタイムを統合し,スケーラブルなコンテナクラスタ実現のためのミドルウェア Node1 Pod1 Node2 Pod2 Node3 Master Node1

    Pod1 Node2 Pod2 Node3 Node1 Pod1 Node3 Pod2 Node2 Node1 Pod1 Node2 Node3 Node1 Pod1 Node3 Pod2 Node2 Pod2 Pod2 レプリカ数を増やす・減らす レプリカ数を⼀定に保つ デプロイ管理 Podの管理・監視 スケーリング コンテナのデプロイ 29
  11. Kubernetes による宣⾔的なオペレーション 例) ・要件: 「nginxコンテナを常に3台構成で動作させたい」 ・定義: `spec.replicas: 3` Node Node

    Node Kubernetesによる⾃⼰回復(セルフヒーリング) ・障害で2台になったら,3台に⾃動復旧 ・リソース利⽤状況(メモリ負荷)の⼩さいNodeを⾃動選択 「マニフェスト(あるべき姿)の宣⾔」を死守すべくオペレーションし続ける 31
  12. Controller と Resource ReplicaSet Controller ReplicaSet (Resource) Pod (Resource) Podの作成・削除

    RS作成を検知 RSの監視 ※Scheduler動作は省略 ※api-serverを介在は省略 Podの監視 32
  13. PostgreSQL on Kubernetes o PostgreSQLクラスターを作成,削除,変更 o クラスターインスタンスのスケーリング o SQLポリシーを適⽤ o

    アップグレード o バックアップ・リストア o ... o ... o etc. NODE 1 NODE 2 NODE 3 例えば, 37
  14. What’s Operator An Operator is a method of packaging, deploying

    and managing a Kubernetes application Kubernetes Applications 運⽤の知⾒をコード化し,アプリやK8sクラスターの運⽤を⾃動化する アプリ運⽤における運⽤の知⾒をコード化し, パッケージ化したもの。 アプリケーション運⽤に必要な以下のような 作業を⾃動的に⾏う。 ・インストール ・リソーススケーリング ・バックアップ ・アップデート 運⽤の知⾒をコード化 Operator - Installation - Backup - Monitoring 39
  15. Reconciliation Loop Custom Resource Definition & Custom Controller Custom Controller

    Custom Resource Definition Deploy CRD Watch StatefulSet ConfigMap Pod Pod Service Actions (Operational Knowledge) Custom Controller Custom Resource Definition Operator = + (Resources) Kubernetes Operator 40
  16. Postgres Operator (Crunchy Data) 出典: Crunchy Data Solutions, Inc. https://www.crunchydata.com/.

    ※商標はCrunchy Data Solutions, Incに基づきます。 postgres-operator ・レプリケーションクラスタのPostgreSQLコンテナの配備 ・レプリカ設定のPostgreSQLクラスタをスケールアップ ・pgpoolとmetricsサイドカーをPostgreSQLクラスタに追加 ・PostgreSQLクラスタにSQLポリシーを適⽤ ・PostgreSQLクラスタにメタデータタグの割り当て ・PostgreSQLのユーザとパスワードを維持 ・PostgreSQLクラスタの マイナー/メジャーアップグレードの実施 ・CSVやJSONファイルをPostgreSQLにロード ・データベースのバックアップの実⾏ Manual Operation(pgo) Auto Operation 必須コンポーネント Operatorが状態に応じて 展開するコンポーネント Crunchy Data is the Trusted Open Source Enterprise PostgreSQL 41
  17. Kubernetes ⾃体ではできない運⽤︓ Kubernetes クラスターの維持管理 o クラスター作成,削除,変更 o バージョンアップ o ノードの拡張・縮退

    o ホストOSアップデート o 証明書管理 o 認証認可ユーザー管理 o 障害時のノード復旧 o … o … o etc. 1.16 1.17 1.18 44
  18. V1.16 V1.17 V1.18 V1.19 V1.16 V1.19 クラスターA (既存) クラスターB (新規)

    アプリケーション,yaml群を 新クラスターに適⽤ $ kubectl apply -f xxx.yaml $ kubectl apply -f yyy.yaml $ kubectl apply -f zzz.yaml 単⼀クラスター ※Velero (Heptio Ark)やResticで,PVやK8sリソースの抽出・バックアップ クラスターアップデート(マイグレーション) 45
  19. V1.16 V1.17 V1.18 V1.19 V1.16 V1.19 クラスタA (既存) クラスタB (新規)

    アプリケーション,yaml群を 新クラスターに適⽤ $ kubectl apply -f xxx.yaml $ kubectl apply -f yyy.yaml $ kubectl apply -f zzz.yaml 単⼀クラスタ ※Velero (Heptio Ark)やResticで,PVやK8sリソースの抽出・バックアップ クラスターアップデート まずは, “Kubernetes + あなたが必要な標準環境” が正常に動作する必要がある 46
  20. Kubernetesクラスターの維持管理 o クラスター作成,削除,変更 o バージョンアップ o ノードの拡張・縮退 o ホストOSアップデート o

    証明書管理 o 認証認可ユーザー管理 o 障害時のノード復旧 o … o … o etc. 1.16 1.17 1.18 ・各コンポーネントの正常性をどう担保するか 今回考えるケース)クラスターのバージョンを上げるとき ※もちろんサービスの正常性維持の観点では, アプリケーションの正常性確認,永続データもあるが今回は対象としない 47
  21. あなたの Kubernetes クラスターに必要なものは︖ サービス,プロジェクトごとに 必要なコンポーネント (各DB,各CI/CD,etc.) • kube-apiserver, kube-controller-manager, kube-scheduler,

    etc. • ネットワーク • ストレージ • DNS • etcd • ingress • 内部イメージレジストリ • ノードのチューニング • コンソール • クラスタモニタリング • VM(OS)の管理 • 独⾃のapiserver, controller manager, etc. 48
  22. あなたの Kubernetes クラスターに必要なものは︖ サービス,プロジェクトごとに 必要なコンポーネント (各DB,各CI/CD,etc.) • kube-apiserver, kube-controller-manager, kube-scheduler,

    etc. • ネットワーク • ストレージ • DNS • etcd • ingress • 内部イメージレジストリ • ノードのチューニング • コンソール • クラスタモニタリング • VM(OS)の管理 • 独⾃のapiserver, controller manager, etc. XXX Operator (Custom Controller + CRD) ターゲットクラスターに対して ・各コンポーネントを展開 ・設定を変更 ・削除 ・アップデート 49
  23. ツール例: Operator SDK Ansible SDK Helm SDK Go SDK Helm

    Chart Ansible Playbooks APBs Helmチャートからビルド でき,コーディング不要 Playbookから作成 ⾼度な機能を提供 するためのGo⽤SDK プロダクトを保守するOperatorを “様々な⽅法” で開発 Operator SDK https://github.com/operator-framework/operator-sdk 54
  24. https://operatorhub.io/ o Red Hat, AWS, Microsoft, Google が主な貢献者 o Kubernetes

    コミュニティで開発される様々な Operator 対応製品が登録・取得可能 OperatorHub.io 57
  25. Postgres Operator (Crunchy Data) 出典: Crunchy Data Solutions, Inc. https://www.crunchydata.com/.

    ※商標はCrunchy Data Solutions, Incに基づきます。 postgres-operator ・レプリケーションクラスタのPostgreSQLコンテナの配備 ・レプリカ設定のPostgreSQLクラスタをスケールアップ ・pgpoolとmetricsサイドカーをPostgreSQLクラスタに追加 ・PostgreSQLクラスタにSQLポリシーを適⽤ ・PostgreSQLクラスタにメタデータタグの割り当て ・PostgreSQLのユーザとパスワードを維持 ・PostgreSQLクラスタの マイナー/メジャーアップグレードの実施 ・CSVやJSONファイルをPostgreSQLにロード ・データベースのバックアップの実⾏ Manual Operation(pgo) Auto Operation 必須コンポーネント Operatorが状態に応じて 展開するコンポーネント Crunchy Data is the Trusted Open Source Enterprise PostgreSQL 59
  26. Operator Maturity Model Phase I Phase II Phase III Phase

    IV Phase V Basic Install Automated application provisioning and configuration management Seamless Upgrades Patch and minor version upgrades supported Full Lifecycle App lifecycle, storage lifecycle (backup, failure recovery) Deep Insights Metrics, alerts, log processing and workload analysis Auto Pilot Horizontal/vertical scaling, auto config tuning, abnormal detection, scheduling tuning 動的なアプリケーショ ンデプロイメントとし て設定管理 パッチ適⽤やマイナー バージョンのアップグ レード適⽤のサポート バックアップや動的リ カバリなどストレージ 領域を含めたアプリ ケーションライフサイ クルのサポート メトリクス,アラート, ロギングなどのサポー ト 動的なスケールアウト, スケールアップ, チューニング,異常検 知,スケジューリング をサポート 60
  27. 61

  28. Operator もソフトウェア Operator v1.1.2 Operator v1.1.3 Operator v1.2.0 Operator v1.2.2

    Time Version Custom Controller, CRD(CR) Operator アプリケーションと同様に アップデートやテストが必要 (放置していると負債になる) 64
  29. Operator Lifecycle Manager CRD (Custom Resource Definition) Custom Controllers Custom

    Resource Instances Operator Catalog 1. Register 2. Monitor Registration 3. Install/Update 4. Manage Resource Instances Operator Lifecycle Manager(OLM)は,Kubernetes上のOperatorとそのリソースのライフサイクル全体を容易 にするツール。管理者はどのNamespaceでどのOperatorが利⽤できるのか,また,どのOperatorが実⾏可能な Operatorと対話できるのかを制御可能。Operator Framework (OSS) に含まれる。 65
  30. OperatorでK8s⾃体,K8s周辺をフルカバー 運⽤プロセスを含めたポータビリティの実現。コンテナ/Kubernetesシステムを,K8sの技術を活⽤した付加価値機能によって⾃律運⽤を⽀援。 AUTOMATED OPERATIONS CLUSTER SERVICES APPLICATION SERVICES DEVELOPER SERVICES

    Middleware, Service Mesh Functions, ISV Monitoring, Chargeback Registry, Logging Automated Builds, CI/CD, IDE Any Infrastructure どの環境でも,迅速か つ信頼性の⾼いOS どの環境でも,同様の ⼿順でアプリケーショ ンを稼働 どの環境でも,⾃動化 された運⽤プロセスを 実現 Virtual Private cloud Bare metal Public cloud Edge OpenShiftは,Kubernetesを使いこなせるように 66
  31. Kubernetes が提供する機能 Kubernetes is Container Orchestration Cluster services monitoring, showback,

    registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE Automated operations Linux OS Physical Virtual Private Public Any infrastructure certified コンテナオーケストレーション クラスタ上でコンテナをスケジューリングして実⾏するための プラットフォーム - 複数のホストにわたるコンテナのオーケストレーション - 適切なインフラリソースを効率よく配置 - アプリケーションのデプロイとアップデートを⾃動化 - ステートフルなアプリケーションのためのストレージの管理 - コンテナ化されたアプリケーションとそのリソースの迅速な スケーリング - サービスを宣⾔的に管理 - ⾃動再起動,⾃動スケーリングにより,アプリケーションの ヘルスチェックと⾃⼰修復を⾏う Declarative Configuration Auto Scaling Self-Healing https://www.redhat.com/ja/topics/containers/what-is-kubernetes 参考) 67
  32. OpenShift が提供する機能 OpenShift accelerates Enterprise Kubernetes Cluster services monitoring, showback,

    registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE Automated operations Enterprise Linux CoreOS Physical Virtual Private Public Any infrastructure certified Enterprise Kubernetes コンテナアプリの本番適用 CNCFに⽀援されるコミュニティプロジェクトや,パートナーのより広範なエ コシステムと連携し,どのクラウド上でも同じ運⽤⽅法で,コンテナアプリ ケーションを⾃由に管理できる。 信頼されたKubernetes管理 CoreOS社との統合により,CoreOSやRHEL8をコアとした信頼できる基 盤を利⽤し,ハイブリッドクラウド全体のライフサイクル管理を提供。⾼度 なセキュリティと監査,可能性,管理のしやすさなどのユーザー体験を可 能にする。 参考) 68
  33. Automated operations Enterprise Linux CoreOS コンテナアプリの本番適⽤ Cluster Services クラスタ管理を容易にし、運⽤業務を⾃動化するサービス Physical

    Virtual Private Public Any infrastructure Developer Services 開発者がコンテナアプリケーション開発に集中できる環境を整え るサービス Cluster services monitoring, showback, registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE certified Application Services マイクロサービス間の連携やファンクションサービスを実現を⽀援 するサービス Logging Registry Monitoring ISV Middleware Function Service ServiceMesh IDE CI/CD Developer Tools チームがスピード、アジリティに⾃信を持って ビルドできる環境を提供。クラウドネイティブ な開発を本番へのコード作成を⽀援。 Build fast. Ship first. 参考) 69
  34. Automated operations 堅牢化されたコンテナ実⾏環境 Kubernetes デファクトスタンダードなコンテナオーケストレーション Installation Configuration Cluster Scalability Cluster

    Upgrade Security GUI Network Enterprise Linux CoreOS Physical Virtual Private Public Any infrastructure certified Cluster Management ⾼度なセキュリティと監査、可⽤性、管理の容易性 Cluster services monitoring, showback, registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE Declarative Configuration Self-Healing Auto Scaling コンテナスタックのあらゆるレベルとアプリ ケーションライフサイクル全体のセキュリティ に重点を置いている。 Trust with Red Hat. 参考) 70
  35. ⾃律化するシステム運⽤ Operatorによる運⽤の⾃律化 Full-Lifecycle Deep Insights Auto Pilot いままで⼈が対応してきた障害対応を⾃律的に回復する Manage with

    simplicity. App lifecycle Storage lifecycle - Backup - Failure Recovery Processing and workload analysis - Metrics - Alerts - Logging Horizontal/Vertical Scaling - Auto config - Auto tuning - Abnormal detection - scheduling tuning 参考) 71
  36. 76

  37. 77

  38. Speaker Contents ⻘⼭真也 @amsy810 Kubernetesと連携するアプリケーション開発⼿法 川沼⼤輝 @Santea3173 エンプラに Kubernetes を導⼊してみて分かった

    4つの Lessons Learned 須⽥⼀輝 @superbrothers Kubernetes で実践するクラウドネイティブ DevOps (オブザーバビリティ編) 惣道哲也 @tetsuyasd Kubernetes クラスタのログ分析と可視化で知っておくべき こと 〜Elastic Stackの特性と注意点〜 脇⽥祥穂 @sachiho0402 OpenShift cluster-monitoringで困ったこと学んだこと 原⽊翔 @hodahgi コンテナレジストリサーバーにコンテナ以外を格納する 太⽥航平 @_inductor_ CRI-O shallow dive 磯⾙哲也 @tetsuyaIsogai Upgrade 4.4 to 4.5 with OTA その裏側 OpenShift.Run Summer 2020 80
  39. まとめ Kubernetes は⾮常に ホット︕︕ ・やるに越したことはないタイミング ・ただし,やるならやり⽅を間違えないように Kubernetes 運⽤の要は Operator (Custom

    Controller + CRD) ・アプリケーション,データベースの独⾃運⽤を実装(K8s APIを拡張) ・K8sに則った運⽤を創るのか,活⽤するのか選択 Kubernetes はオープンな世界で学ぶ,そして活⽤ ・テックコミュニティで学ぼう ・創る or 活⽤する の⾒極めていく 83
  40. Red Hat Forum Asia Pacific | Virtual Experience What’s next?

    -Your choices brought you this far. What’s next? https://www.redhat.com/ja/forums/apac 2020年10月21日[水] ・22日[木] 10:00~15:30予定(オンライン) 開催 日程 参加 登録 セッションは、日本語または通訳音声での動画配信を予定しております。 ぜひご覧ください。 今年のRed Hat Forum は、アジア最 大規模のオープンソースバーチャル イベントとして開催決定!