SlideShare a Scribd company logo
6
© 2022 NTT DATA Corporation 6
CloudNativePGのアーキテクチャ
CloudNativePGではクライアントからのリクエストをServiceで受け、Podに割り振る。
Operator(図中のcnpg-controller-manager)がPodの配置、状態を管理する。
Client Request
cluster-example-rw
(Service)
Client Request
cluster-example-ro
(Service)
cnpg-controller-manager (Deployment)
cluster-example-1
(Pod)
postgres
(Container)
cluster-example-2
(Pod)
postgres
(Container)
cluster-example-3
(Pod)
postgres
(Container)
カスタムリソースの定義に従って管理
Most read
11
© 2022 NTT DATA Corporation 11
PostgreSQLインスタンスへの接続確認 (1/3)
インスタンスへ接続する方法は3つ: ①コンテナに直接入る ②ポートフォワードを使用する ③Ingressを使用する
今回は③の方法でインスタンスへ接続する。
$ minikube addons enable ingress
1. MinikubeでIngressを有効化する。
2. ConfigMapを編集し、Ingressの5432ポートからプライマリにリダイレクトするように設定する。
$ kubectl patch configmap tcp-services -n ingress-nginx 
> --patch '{"data":{"5432":"default/cluster-example-rw:5432"}}'
Most read
21
© 2022 NTT DATA Corporation 21
まとめ
最近リリースされたばかりのCloudNativePG v1.16.0を動かしてみての感想。
• ドキュメントがしっかりしていて、初めてでもとっつきやすかった。
• 最低限の機能だけでなく、ローリングアップデートなどの仕組みが備わっていてとても高機能な印象を受けた。
• クォーラムコミットの同期レプリケーションなど、他のOperatorにない機能がある。
• 異常時の挙動についてはまだ検討の余地がありそう。
• フェールオーバーの仕組みにPatroniを使っていないので、もう少し詳細にフェールオーバーの仕組み・実装を見てみたい。
Most read
© 2022 NTT DATA Corporation
CloudNativePGを動かしてみた!
~PostgreSQL on Kubernetes~
2022年 7月 29日 第34回PostgreSQLアンカンファレンス@オンライン
株式会社NTTデータ 技術開発本部
加藤 健
© 2022 NTT DATA Corporation 2
自己紹介
加藤 健
【経歴】
• PostgreSQLの研究開発+サポート
• 社会人2年目
• PostgreSQL歴 1年
• Kubernetes歴 半年
【これまでのPostgreSQLアンカンファレンス】
• 第29回「OSS-DB Gold 合格体験記」
© 2022 NTT DATA Corporation 3
PostgreSQL Operatorとは
PostgreSQL Operatorを使うことで、Kubernetes上にPostgreSQLを簡単に構築できる。
Kubernetes上でPostgreSQLを動かすことにより、様々な運用管理を自動化できる。
Kubernetes
モニタリング
PostgreSQL PostgreSQL
PostgreSQL
バックアップ ログ管理
HA構成 HA構成
© 2022 NTT DATA Corporation 4
PostgreSQL Operator 一覧
Kubernetes上での運用が注目され始めており、様々な企業/コミュニティがPostgreSQL Operatorを提供している。
今回は、最近リリースされたばかりのCloudNativePGについて調査する。
• CloudNativePG (旧称 Cloud Native PostgreSQL)
• Zalando Postgres Operator
• Crunchy Data PostgreSQL Operator
• StackGres
• Stolon
• KubeDB
• Vmware Tanzu SQL with PostgreSQL for Kubernetes
© 2022 NTT DATA Corporation 5
CloudNativePGとは
CloudNativePGは、PostgreSQL専業ベンダーであるEnterpriseDBが開発し、OSSとして公開されている。
EDB PostgreSQL for Kubernetesは、CloudNativePGをベースに一部機能を追加して提供されている。
メイン開発企業 EnterpriseDB
初回リリース 2022年4月
最新バージョン 1.16.0
対応PostgreSQL
メジャーバージョン
PostgreSQL 10+
ライセンス Apache License 2.0
スター数 366
コントリビュータ数 23
商用サポート EDB PostgreSQL for Kubernetes
メイン実装言語 Go
© 2022 NTT DATA Corporation 6
CloudNativePGのアーキテクチャ
CloudNativePGではクライアントからのリクエストをServiceで受け、Podに割り振る。
Operator(図中のcnpg-controller-manager)がPodの配置、状態を管理する。
Client Request
cluster-example-rw
(Service)
Client Request
cluster-example-ro
(Service)
cnpg-controller-manager (Deployment)
cluster-example-1
(Pod)
postgres
(Container)
cluster-example-2
(Pod)
postgres
(Container)
cluster-example-3
(Pod)
postgres
(Container)
カスタムリソースの定義に従って管理
© 2022 NTT DATA Corporation 7
確認項目
現時点で最新バージョンであるCloudNativePG v1.16.0を動かしてみる。
今回の環境として、minikube v1.25.2を使用する。
以下の項目について確認する。
• CloudNativePGデプロイ
• PostgreSQLクラスタ作成
• PostgreSQLインスタンスへの接続確認
• 同期レプリケーション確認
• 自動フェールオーバー
• ローリングアップデート
© 2022 NTT DATA Corporation 8
CloudNativePGデプロイ
CloudNativePGをデプロイする方法は2つ: ①マニフェストを使用する ②Helm Chartを使用する
今回は①の方法でCloudNativePGをデプロイする。
1. 既に用意されているOperatorのマニフェストを使用し、CloudNativePGをデプロイする。
$ kubectl apply -f https://raw.githubusercontent.com/cloudnative-pg/cloudnative-
pg/release-1.16/releases/cnpg-1.16.0.yaml
2. CloudNativePGがデプロイされたか確認する。
$ kubectl get deployments –n cnpg-system
NAME READY UP-TO-DATE AVAILABLE AGE
cnpg-controller-manager 1/1 1 1 52s
© 2022 NTT DATA Corporation 9
PostgreSQLクラスタ作成 (1/2)
CloudNativePGの機能を使えば、簡単にHA構成のクラスタを作成できる。
今回はプライマリx1、同期スタンバイx1 非同期スタンバイx1の3台構成とする。
$ vi cluster-example.yaml
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example #クラスタ名
spec:
instances: 3 #インスタンス数
imageName: ghcr.io/cloudnative-pg/postgresql:14.3 #イメージの指定
minSyncReplicas: 1 #同期レプリケーションの最小数
maxSyncReplicas: 1 #同期レプリケーションの最大数
primaryUpdateStrategy: unsupervised #アップデート時のプライマリの挙動
storage:
size: 1Gi #ストレージサイズ
1. マニフェストに設定を定義する。
© 2022 NTT DATA Corporation 10
PostgreSQLクラスタ作成 (2/2)
CloudNativePGの機能を使えば、簡単にHA構成のクラスタを作成できる。
今回はプライマリx1、同期スタンバイx1 非同期スタンバイx1の3台構成とする。
$ kubectl apply –f cluster-example.yaml
cluster.postgresql.cnpg.io/cluster-example created
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/cluster-example-1 1/1 Running 0 71s
pod/cluster-example-2 1/1 Running 0 56s
pod/cluster-example-3 1/1 Running 0 47s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/cluster-example-any ClusterIP 10.102.86.16 <none> 5432/TCP 75s
service/cluster-example-r ClusterIP 10.109.11.121 <none> 5432/TCP 75s
service/cluster-example-ro ClusterIP 10.111.129.103 <none> 5432/TCP 75s
service/cluster-example-rw ClusterIP 10.100.52.161 <none> 5432/TCP 75s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 35d
2. 定義したマニフェストをもとにPostgreSQLクラスタを作成する。
© 2022 NTT DATA Corporation 11
PostgreSQLインスタンスへの接続確認 (1/3)
インスタンスへ接続する方法は3つ: ①コンテナに直接入る ②ポートフォワードを使用する ③Ingressを使用する
今回は③の方法でインスタンスへ接続する。
$ minikube addons enable ingress
1. MinikubeでIngressを有効化する。
2. ConfigMapを編集し、Ingressの5432ポートからプライマリにリダイレクトするように設定する。
$ kubectl patch configmap tcp-services -n ingress-nginx 
> --patch '{"data":{"5432":"default/cluster-example-rw:5432"}}'
© 2022 NTT DATA Corporation 12
PostgreSQLインスタンスへの接続確認 (2/3)
インスタンスへ接続する方法は3つ: ①コンテナに直接入る ②ポートフォワードを使用する ③Ingressを使用する
今回は③の方法でインスタンスへ接続する。
$ vi patch.yaml
spec:
template:
spec:
containers:
- name: controller
ports:
- containerPort: 5432
hostPort: 5432
name: postgres
protocol: TCP
$ kubectl patch deployment ingress-nginx-controller --patch "$(cat patch.yaml)" -n
ingress-nginx
deployment.apps/ingress-nginx-controller patched
3. 外部からIngressの5432ポートにアクセスできるように編集し、その設定を適用する。
© 2022 NTT DATA Corporation 13
PostgreSQLインスタンスへの接続確認 (3/3)
インスタンスへ接続する方法は3つ: ①コンテナに直接入る ②ポートフォワードを使用する ③Ingressを使用する
今回は③の方法でインスタンスへ接続する。
$ export PGPASSWORD=$(kubectl get secrets cluster-example-app -o go-
template='{{.data.password | base64decode}}’)
$ psql –h $(minikube ip) –p 5432 –U app
psql (14.1, server 14.3 (Debian 14.3-1.pgdg110+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-ECDSA-AES256-GCM-SHA384, bits: 256,
compression: off)
Type "help" for help.
app=>
4. psqlを使い、プライマリインスタンスへ接続する。
© 2022 NTT DATA Corporation 14
同期レプリケーション確認 (1/2)
CloudNativePGでは、クォーラムコミットの同期レプリケーションがサポートされている。
$ vi cluster-example.yaml
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example #クラスタ名
spec:
instances: 3 #インスタンス数
minSyncReplicas: 1 #同期レプリケーションの最低数
maxSyncReplicas: 1 #同期レプリケーションの最大数
storage:
size: 1Gi #ストレージサイズ
1. マニフェストに“minSyncReplicas”と”maxSyncReplicas”を指定し、PostgreSQLクラスタを作成すると、
同期レプリケーションが有効化される。(「PostgreSQLクラスタ作成」で実施済み)
© 2022 NTT DATA Corporation 15
同期レプリケーション確認 (2/2)
CloudNativePGでは、クォーラムコミットの同期レプリケーションがサポートされている。
postgres=# SELECT application_name, state, sync_state FROM pg_stat_replication;
application_name | state | sync_state
-------------------+-----------+------------
cluster-example-2 | streaming | quorum
cluster-example-3 | streaming | quorum
(2 rows)
postgres=# SHOW synchronous_standby_names;
synchronous_standby_names
-------------------------------------------------
ANY 1 ("cluster-example-2","cluster-example-3")
(1 row)
2. synchronous_standby_namesを確認すると、クォーラムコミットの設定になっている。
3. pg_stat_replicationを見てみると、クォーラムコミットで同期レプリケーションされていることが確認できる。
© 2022 NTT DATA Corporation 16
自動フェールオーバー (1/2)
多くのOperatorは、Patroniという外部ツールを使い、自動フェールオーバーを実現している。
CloudNativePGは、Postgres instance managerという独自ツールを使い実現している。
$ kubectl delete pod cluster-example-1
pod "cluster-example-1" deleted
$ kubectl get pods --selector=cnpg.io/cluster=cluster-example -
o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p
hase}{"n"}{end}’
cluster-example-1 primary Running
cluster-example-2 replica Running
cluster-example-3 replica Running
1. フェールオーバー前の状態を確認する。
2. 今回はPodの障害を想定し、プライマリのPodを削除する
© 2022 NTT DATA Corporation 17
自動フェールオーバー (2/2)
多くのOperatorは、Patroniという外部ツールを使い、自動フェールオーバーを実現している。
CloudNativePGは、Postgres instance managerという独自ツールを使い実現している。
$ ps aux | grep instance
26 126048 0.1 0.2 747084 45864 ? Ssl 07:06 0:01 /controller/manager
instance run --log-level=info
26 130997 0.2 0.2 747084 41092 ? Ssl 07:21 0:00 /controller/manager
instance run --log-level=info
26 131878 3.2 0.2 747340 41940 ? Ssl 07:23 0:00 /controller/manager instance
run --log-level=info
$ kill -9 126048
$ kubectl get pods --selector=cnpg.io/cluster=cluster-example -
o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p
hase}{"n"}{end}'
cluster-example-1 replica Running
cluster-example-2 primary Running
cluster-example-3 replica Running
3. 更新系クエリを投げ続けながら実施したが、ダウンタイム10秒ほどで切り替わった。
補足: コンテナプロセスに障害を起こした場合も、同様に10秒ほどで切り替わった。
© 2022 NTT DATA Corporation 18
ローリングアップデート (1/3)
PostgreSQLのマイナーバージョンアップに際して、ローリングアップデートがサポートされている。
全てのスタンバイが1つずつアップデートされた後、プライマリがアップデートされる。
$ $ vi cluster-example.yaml
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
imageName: ghcr.io/cloudnative-pg/postgresql:14.4 #イメージを14.3 -> 14.4に変更する
primaryUpdateStrategy: unsupervised #アップデート時のプライマリの挙動
storage:
size: 1Gi
1. PostgreSQLクラスタ作成時に定義したマニフェストの、イメージ名を変更する。
“primaryUpdateStrategy”を”unsupervised”にすると、スイッチオーバーが自動化される。
(“supervised”にすると、手動でスイッチオーバーを実施しなければならない。)
© 2022 NTT DATA Corporation 19
ローリングアップデート (2/3)
PostgreSQLのマイナーバージョンアップに際して、ローリングアップデートがサポートされている。
全てのスタンバイが1つずつアップデートされた後、プライマリがアップデートされる。
2. 変更前の状態を確認する。
3. 編集したマニフェストを適用する。
$ kubectl get pods --selector=cnpg.io/cluster=cluster-example -
o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p
hase}{"t"}{.spec.containers[].image}{"n"}{end}’
cluster-example-1 primary Running ghcr.io/cloudnative-pg/postgresql:14.3
cluster-example-2 replica Running ghcr.io/cloudnative-pg/postgresql:14.3
cluster-example-3 replica Running ghcr.io/cloudnative-pg/postgresql:14.3
$ kubectl apply -f cluster-example.yaml
cluster.postgresql.cnpg.io/cluster-example configured
© 2022 NTT DATA Corporation 20
ローリングアップデート (3/3)
PostgreSQLのマイナーバージョンアップに際して、ローリングアップデートがサポートされている。
全てのスタンバイが1つずつアップデートされた後、プライマリがアップデートされる。
4. 新しいイメージに変更され、スイッチオーバーが発生したことが確認できる。
$ kubectl get pods --selector=cnpg.io/cluster=cluster-example -
o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p
hase}{"t"}{.spec.containers[].image}{"n"}{end}’
cluster-example-1 replica Running ghcr.io/cloudnative-pg/postgresql:14.4
cluster-example-2 primary Running ghcr.io/cloudnative-pg/postgresql:14.4
cluster-example-3 replica Running ghcr.io/cloudnative-pg/postgresql:14.4
補足: 存在しないイメージ(14.5)を指定しアップデートに失敗すると、元のイメージ(14.4)を指定し直しても復旧できなくなる。
$ $ kubectl get pods --selector=cnpg.io/cluster=cluster-example -
o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p
hase}{"t"}{.spec.containers[].image}{"n"}{end}'
cluster-example-1 replica Running ghcr.io/cloudnative-pg/postgresql:14.4
cluster-example-2 primary Running ghcr.io/cloudnative-pg/postgresql:14.4
cluster-example-3 Pending ghcr.io/cloudnative-pg/postgresql:14.5
© 2022 NTT DATA Corporation 21
まとめ
最近リリースされたばかりのCloudNativePG v1.16.0を動かしてみての感想。
• ドキュメントがしっかりしていて、初めてでもとっつきやすかった。
• 最低限の機能だけでなく、ローリングアップデートなどの仕組みが備わっていてとても高機能な印象を受けた。
• クォーラムコミットの同期レプリケーションなど、他のOperatorにない機能がある。
• 異常時の挙動についてはまだ検討の余地がありそう。
• フェールオーバーの仕組みにPatroniを使っていないので、もう少し詳細にフェールオーバーの仕組み・実装を見てみたい。
© 2022 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

What's hot (20)

DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
NTT DATA OSS Professional Services
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 

Similar to CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライン 発表資料) (20)

PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
NTT DATA Technology & Innovation
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
Katsutoshi Nagaoka
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
Yasuhiro Arai
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送
[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送
[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送
Google Cloud Platform - Japan
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
Midori Oge
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
Yasuhiro Arai
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
Shuntaro Saiba
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
Kosuke Kida
 
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
Etsuji Nakai
 
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタRancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Takashi Kanai
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
勇 黒沢
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
Masahito Zembutsu
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
Hiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
Hiroshi Miura
 
Cloudstack networking の内側
Cloudstack networking の内側Cloudstack networking の内側
Cloudstack networking の内側
Hiroaki Kawai
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
NTT DATA Technology & Innovation
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
Katsutoshi Nagaoka
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
Yasuhiro Arai
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送
[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送
[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送
Google Cloud Platform - Japan
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
Midori Oge
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
Yasuhiro Arai
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
Shuntaro Saiba
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
Kosuke Kida
 
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
Etsuji Nakai
 
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタRancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Takashi Kanai
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
勇 黒沢
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
Masahito Zembutsu
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
Hiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
Hiroshi Miura
 
Cloudstack networking の内側
Cloudstack networking の内側Cloudstack networking の内側
Cloudstack networking の内側
Hiroaki Kawai
 
Ad

More from NTT DATA Technology & Innovation (20)

2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
NTT DATA Technology & Innovation
 
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
NTT DATA Technology & Innovation
 
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
NTT DATA Technology & Innovation
 
Ad

CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. © 2022 NTT DATA Corporation CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~ 2022年 7月 29日 第34回PostgreSQLアンカンファレンス@オンライン 株式会社NTTデータ 技術開発本部 加藤 健
  • 2. © 2022 NTT DATA Corporation 2 自己紹介 加藤 健 【経歴】 • PostgreSQLの研究開発+サポート • 社会人2年目 • PostgreSQL歴 1年 • Kubernetes歴 半年 【これまでのPostgreSQLアンカンファレンス】 • 第29回「OSS-DB Gold 合格体験記」
  • 3. © 2022 NTT DATA Corporation 3 PostgreSQL Operatorとは PostgreSQL Operatorを使うことで、Kubernetes上にPostgreSQLを簡単に構築できる。 Kubernetes上でPostgreSQLを動かすことにより、様々な運用管理を自動化できる。 Kubernetes モニタリング PostgreSQL PostgreSQL PostgreSQL バックアップ ログ管理 HA構成 HA構成
  • 4. © 2022 NTT DATA Corporation 4 PostgreSQL Operator 一覧 Kubernetes上での運用が注目され始めており、様々な企業/コミュニティがPostgreSQL Operatorを提供している。 今回は、最近リリースされたばかりのCloudNativePGについて調査する。 • CloudNativePG (旧称 Cloud Native PostgreSQL) • Zalando Postgres Operator • Crunchy Data PostgreSQL Operator • StackGres • Stolon • KubeDB • Vmware Tanzu SQL with PostgreSQL for Kubernetes
  • 5. © 2022 NTT DATA Corporation 5 CloudNativePGとは CloudNativePGは、PostgreSQL専業ベンダーであるEnterpriseDBが開発し、OSSとして公開されている。 EDB PostgreSQL for Kubernetesは、CloudNativePGをベースに一部機能を追加して提供されている。 メイン開発企業 EnterpriseDB 初回リリース 2022年4月 最新バージョン 1.16.0 対応PostgreSQL メジャーバージョン PostgreSQL 10+ ライセンス Apache License 2.0 スター数 366 コントリビュータ数 23 商用サポート EDB PostgreSQL for Kubernetes メイン実装言語 Go
  • 6. © 2022 NTT DATA Corporation 6 CloudNativePGのアーキテクチャ CloudNativePGではクライアントからのリクエストをServiceで受け、Podに割り振る。 Operator(図中のcnpg-controller-manager)がPodの配置、状態を管理する。 Client Request cluster-example-rw (Service) Client Request cluster-example-ro (Service) cnpg-controller-manager (Deployment) cluster-example-1 (Pod) postgres (Container) cluster-example-2 (Pod) postgres (Container) cluster-example-3 (Pod) postgres (Container) カスタムリソースの定義に従って管理
  • 7. © 2022 NTT DATA Corporation 7 確認項目 現時点で最新バージョンであるCloudNativePG v1.16.0を動かしてみる。 今回の環境として、minikube v1.25.2を使用する。 以下の項目について確認する。 • CloudNativePGデプロイ • PostgreSQLクラスタ作成 • PostgreSQLインスタンスへの接続確認 • 同期レプリケーション確認 • 自動フェールオーバー • ローリングアップデート
  • 8. © 2022 NTT DATA Corporation 8 CloudNativePGデプロイ CloudNativePGをデプロイする方法は2つ: ①マニフェストを使用する ②Helm Chartを使用する 今回は①の方法でCloudNativePGをデプロイする。 1. 既に用意されているOperatorのマニフェストを使用し、CloudNativePGをデプロイする。 $ kubectl apply -f https://raw.githubusercontent.com/cloudnative-pg/cloudnative- pg/release-1.16/releases/cnpg-1.16.0.yaml 2. CloudNativePGがデプロイされたか確認する。 $ kubectl get deployments –n cnpg-system NAME READY UP-TO-DATE AVAILABLE AGE cnpg-controller-manager 1/1 1 1 52s
  • 9. © 2022 NTT DATA Corporation 9 PostgreSQLクラスタ作成 (1/2) CloudNativePGの機能を使えば、簡単にHA構成のクラスタを作成できる。 今回はプライマリx1、同期スタンバイx1 非同期スタンバイx1の3台構成とする。 $ vi cluster-example.yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: cluster-example #クラスタ名 spec: instances: 3 #インスタンス数 imageName: ghcr.io/cloudnative-pg/postgresql:14.3 #イメージの指定 minSyncReplicas: 1 #同期レプリケーションの最小数 maxSyncReplicas: 1 #同期レプリケーションの最大数 primaryUpdateStrategy: unsupervised #アップデート時のプライマリの挙動 storage: size: 1Gi #ストレージサイズ 1. マニフェストに設定を定義する。
  • 10. © 2022 NTT DATA Corporation 10 PostgreSQLクラスタ作成 (2/2) CloudNativePGの機能を使えば、簡単にHA構成のクラスタを作成できる。 今回はプライマリx1、同期スタンバイx1 非同期スタンバイx1の3台構成とする。 $ kubectl apply –f cluster-example.yaml cluster.postgresql.cnpg.io/cluster-example created $ kubectl get all NAME READY STATUS RESTARTS AGE pod/cluster-example-1 1/1 Running 0 71s pod/cluster-example-2 1/1 Running 0 56s pod/cluster-example-3 1/1 Running 0 47s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/cluster-example-any ClusterIP 10.102.86.16 <none> 5432/TCP 75s service/cluster-example-r ClusterIP 10.109.11.121 <none> 5432/TCP 75s service/cluster-example-ro ClusterIP 10.111.129.103 <none> 5432/TCP 75s service/cluster-example-rw ClusterIP 10.100.52.161 <none> 5432/TCP 75s service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 35d 2. 定義したマニフェストをもとにPostgreSQLクラスタを作成する。
  • 11. © 2022 NTT DATA Corporation 11 PostgreSQLインスタンスへの接続確認 (1/3) インスタンスへ接続する方法は3つ: ①コンテナに直接入る ②ポートフォワードを使用する ③Ingressを使用する 今回は③の方法でインスタンスへ接続する。 $ minikube addons enable ingress 1. MinikubeでIngressを有効化する。 2. ConfigMapを編集し、Ingressの5432ポートからプライマリにリダイレクトするように設定する。 $ kubectl patch configmap tcp-services -n ingress-nginx > --patch '{"data":{"5432":"default/cluster-example-rw:5432"}}'
  • 12. © 2022 NTT DATA Corporation 12 PostgreSQLインスタンスへの接続確認 (2/3) インスタンスへ接続する方法は3つ: ①コンテナに直接入る ②ポートフォワードを使用する ③Ingressを使用する 今回は③の方法でインスタンスへ接続する。 $ vi patch.yaml spec: template: spec: containers: - name: controller ports: - containerPort: 5432 hostPort: 5432 name: postgres protocol: TCP $ kubectl patch deployment ingress-nginx-controller --patch "$(cat patch.yaml)" -n ingress-nginx deployment.apps/ingress-nginx-controller patched 3. 外部からIngressの5432ポートにアクセスできるように編集し、その設定を適用する。
  • 13. © 2022 NTT DATA Corporation 13 PostgreSQLインスタンスへの接続確認 (3/3) インスタンスへ接続する方法は3つ: ①コンテナに直接入る ②ポートフォワードを使用する ③Ingressを使用する 今回は③の方法でインスタンスへ接続する。 $ export PGPASSWORD=$(kubectl get secrets cluster-example-app -o go- template='{{.data.password | base64decode}}’) $ psql –h $(minikube ip) –p 5432 –U app psql (14.1, server 14.3 (Debian 14.3-1.pgdg110+1)) SSL connection (protocol: TLSv1.2, cipher: ECDHE-ECDSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. app=> 4. psqlを使い、プライマリインスタンスへ接続する。
  • 14. © 2022 NTT DATA Corporation 14 同期レプリケーション確認 (1/2) CloudNativePGでは、クォーラムコミットの同期レプリケーションがサポートされている。 $ vi cluster-example.yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: cluster-example #クラスタ名 spec: instances: 3 #インスタンス数 minSyncReplicas: 1 #同期レプリケーションの最低数 maxSyncReplicas: 1 #同期レプリケーションの最大数 storage: size: 1Gi #ストレージサイズ 1. マニフェストに“minSyncReplicas”と”maxSyncReplicas”を指定し、PostgreSQLクラスタを作成すると、 同期レプリケーションが有効化される。(「PostgreSQLクラスタ作成」で実施済み)
  • 15. © 2022 NTT DATA Corporation 15 同期レプリケーション確認 (2/2) CloudNativePGでは、クォーラムコミットの同期レプリケーションがサポートされている。 postgres=# SELECT application_name, state, sync_state FROM pg_stat_replication; application_name | state | sync_state -------------------+-----------+------------ cluster-example-2 | streaming | quorum cluster-example-3 | streaming | quorum (2 rows) postgres=# SHOW synchronous_standby_names; synchronous_standby_names ------------------------------------------------- ANY 1 ("cluster-example-2","cluster-example-3") (1 row) 2. synchronous_standby_namesを確認すると、クォーラムコミットの設定になっている。 3. pg_stat_replicationを見てみると、クォーラムコミットで同期レプリケーションされていることが確認できる。
  • 16. © 2022 NTT DATA Corporation 16 自動フェールオーバー (1/2) 多くのOperatorは、Patroniという外部ツールを使い、自動フェールオーバーを実現している。 CloudNativePGは、Postgres instance managerという独自ツールを使い実現している。 $ kubectl delete pod cluster-example-1 pod "cluster-example-1" deleted $ kubectl get pods --selector=cnpg.io/cluster=cluster-example - o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p hase}{"n"}{end}’ cluster-example-1 primary Running cluster-example-2 replica Running cluster-example-3 replica Running 1. フェールオーバー前の状態を確認する。 2. 今回はPodの障害を想定し、プライマリのPodを削除する
  • 17. © 2022 NTT DATA Corporation 17 自動フェールオーバー (2/2) 多くのOperatorは、Patroniという外部ツールを使い、自動フェールオーバーを実現している。 CloudNativePGは、Postgres instance managerという独自ツールを使い実現している。 $ ps aux | grep instance 26 126048 0.1 0.2 747084 45864 ? Ssl 07:06 0:01 /controller/manager instance run --log-level=info 26 130997 0.2 0.2 747084 41092 ? Ssl 07:21 0:00 /controller/manager instance run --log-level=info 26 131878 3.2 0.2 747340 41940 ? Ssl 07:23 0:00 /controller/manager instance run --log-level=info $ kill -9 126048 $ kubectl get pods --selector=cnpg.io/cluster=cluster-example - o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p hase}{"n"}{end}' cluster-example-1 replica Running cluster-example-2 primary Running cluster-example-3 replica Running 3. 更新系クエリを投げ続けながら実施したが、ダウンタイム10秒ほどで切り替わった。 補足: コンテナプロセスに障害を起こした場合も、同様に10秒ほどで切り替わった。
  • 18. © 2022 NTT DATA Corporation 18 ローリングアップデート (1/3) PostgreSQLのマイナーバージョンアップに際して、ローリングアップデートがサポートされている。 全てのスタンバイが1つずつアップデートされた後、プライマリがアップデートされる。 $ $ vi cluster-example.yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: cluster-example spec: instances: 3 imageName: ghcr.io/cloudnative-pg/postgresql:14.4 #イメージを14.3 -> 14.4に変更する primaryUpdateStrategy: unsupervised #アップデート時のプライマリの挙動 storage: size: 1Gi 1. PostgreSQLクラスタ作成時に定義したマニフェストの、イメージ名を変更する。 “primaryUpdateStrategy”を”unsupervised”にすると、スイッチオーバーが自動化される。 (“supervised”にすると、手動でスイッチオーバーを実施しなければならない。)
  • 19. © 2022 NTT DATA Corporation 19 ローリングアップデート (2/3) PostgreSQLのマイナーバージョンアップに際して、ローリングアップデートがサポートされている。 全てのスタンバイが1つずつアップデートされた後、プライマリがアップデートされる。 2. 変更前の状態を確認する。 3. 編集したマニフェストを適用する。 $ kubectl get pods --selector=cnpg.io/cluster=cluster-example - o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p hase}{"t"}{.spec.containers[].image}{"n"}{end}’ cluster-example-1 primary Running ghcr.io/cloudnative-pg/postgresql:14.3 cluster-example-2 replica Running ghcr.io/cloudnative-pg/postgresql:14.3 cluster-example-3 replica Running ghcr.io/cloudnative-pg/postgresql:14.3 $ kubectl apply -f cluster-example.yaml cluster.postgresql.cnpg.io/cluster-example configured
  • 20. © 2022 NTT DATA Corporation 20 ローリングアップデート (3/3) PostgreSQLのマイナーバージョンアップに際して、ローリングアップデートがサポートされている。 全てのスタンバイが1つずつアップデートされた後、プライマリがアップデートされる。 4. 新しいイメージに変更され、スイッチオーバーが発生したことが確認できる。 $ kubectl get pods --selector=cnpg.io/cluster=cluster-example - o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p hase}{"t"}{.spec.containers[].image}{"n"}{end}’ cluster-example-1 replica Running ghcr.io/cloudnative-pg/postgresql:14.4 cluster-example-2 primary Running ghcr.io/cloudnative-pg/postgresql:14.4 cluster-example-3 replica Running ghcr.io/cloudnative-pg/postgresql:14.4 補足: 存在しないイメージ(14.5)を指定しアップデートに失敗すると、元のイメージ(14.4)を指定し直しても復旧できなくなる。 $ $ kubectl get pods --selector=cnpg.io/cluster=cluster-example - o=jsonpath='{range .items[*]}{.metadata.name}{"t"}{.metadata.labels.role}{"t"}{.status.p hase}{"t"}{.spec.containers[].image}{"n"}{end}' cluster-example-1 replica Running ghcr.io/cloudnative-pg/postgresql:14.4 cluster-example-2 primary Running ghcr.io/cloudnative-pg/postgresql:14.4 cluster-example-3 Pending ghcr.io/cloudnative-pg/postgresql:14.5
  • 21. © 2022 NTT DATA Corporation 21 まとめ 最近リリースされたばかりのCloudNativePG v1.16.0を動かしてみての感想。 • ドキュメントがしっかりしていて、初めてでもとっつきやすかった。 • 最低限の機能だけでなく、ローリングアップデートなどの仕組みが備わっていてとても高機能な印象を受けた。 • クォーラムコミットの同期レプリケーションなど、他のOperatorにない機能がある。 • 異常時の挙動についてはまだ検討の余地がありそう。 • フェールオーバーの仕組みにPatroniを使っていないので、もう少し詳細にフェールオーバーの仕組み・実装を見てみたい。
  • 22. © 2022 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。