Zalando Postgres Operator 快速上手
2022-04-08 10:32
711 查看
本指南旨在让您快速了解在本地
Kubernetes环境中使用
Postgres Operator。
前提条件
由于
Postgres Operator是为
Kubernetes (K8s)框架设计的,因此首先设置它。 对于本地测试,我们建议使用以下解决方案之一:
- minikube, 在
VM
内创建单节点K8s
集群(需要KVM
或VirtualBox
) https://github.com/kubernetes/minikube/releases</small>
Docker上运行的多节点
K8s集群(需要
Docker)
要与
K8s基础设施交互,请安装其
CLI运行时 kubectl。
本快速入门假设您已经启动了
minikube或创建了本地
kind集群。 请注意,您还可以使用
Docker Desktop for Mac中内置的
K8s支持来遵循本教程的步骤。您必须将
minikube start和
minikube delete替换为您的启动操作,以获得
Docker内置的
K8s支持。
配置选项
只能在部署新的
Postgres集群之前配置
Postgres Operator。这可以通过两种方式工作:通过
ConfigMap或自定义
OperatorConfiguration对象。有关配置的更多详细信息,请参见此处。
部署选项
Postgres Operator可以通过以下方式部署:
- Manual deployment
- Kustomization
- Helm chart
Kubernetes 上的手动部署设置
只需应用
yaml清单即可安装
Postgres Operator。注意,我们提供的
/manifests目录仅作为示例;您应该考虑将清单调整为您的
K8s环境(例如:命名空间)。
# 首先,克隆存储库并切换到目录 git clone https://github.com/zalando/postgres-operator.git cd postgres-operator # 按以下顺序应用清单 kubectl create -f manifests/configmap.yaml # 配置 kubectl create -f manifests/operator-service-account-rbac.yaml # 身份和权限 kubectl create -f manifests/postgres-operator.yaml # 部署 kubectl create -f manifests/api-service.yaml # 通过 UI 使用 operator API
有一个 Kustomization manifest 结合了上述资源(CRD 除外)— 它可以与
kubectl 1.14或更高版本一起使用,如下所示:
- https://github.com/kubernetes-sigs/kustomize</small>
- https://github.com/zalando/postgres-operator/blob/master/manifests/kustomization.yaml</small>
kubectl apply -k github.com/zalando/postgres-operator/manifests
为方便起见,我们使用
run_operator_locally脚本通过
minikube自动启动
operator。 它应用
acid-minimal-cluster。清单。
./run_operator_locally.sh
OpenShift 上的手动部署设置
要在
OpenShift中安装
Postgres Operator,您必须将配置参数
kubernetes_use_configmaps更改为
"true"。否则,
operator和
Patroni将在
OpenShift不支持的
Endpoints中存储
leader和配置
keys。对于
postgres-operator和
postgres-pod集群角色,这还需要一组稍微不同的规则。
oc create -f manifests/operator-service-account-rbac-openshift.yaml
Helm chart
或者,可以使用提供的 Helm
chart安装
operator,从而为您节省手动步骤。克隆此
repo并将目录更改为
repo根目录。安装
Helm v3后,您应该能够运行:
helm install postgres-operator ./charts/postgres-operator
该
chart适用于
Helm 2和
Helm 3。使用
v3时,将跳过
v2中的
crd-installhook 并发出警告。使用
Helm 2安装应用程序的文档可以在 v2 文档中找到。
该
chart还托管在:
检查 Postgres Operator 是否正在运行
启动
operator可能需要几秒钟。在应用
Postgres集群清单之前检查
operator pod是否正在运行。
# 如果您使用 yaml 清单创建了 operator kubectl get pod -l name=postgres-operator # 如果您使用 helm chart 创建了 operator kubectl get pod -l app.kubernetes.io/name=postgres-operator
如果
operator没有进入
Running状态,请使用
kubectl describe检查
deployment或
pod的最新
K8s事件或检查
operator日志:
kubectl logs "$(kubectl get pod -l name=postgres-operator --output='name')"
部署 operator UI
在以下段落中,我们将描述如何使用
kubectl从命令行访问和管理
PostgreSQL集群。 但也可以通过基于浏览器的 Postgres Operator UI 来完成。在部署
UI之前,请确保
operator正在运行,并且可以通过 K8s service 访问其
REST API。此
API的
URL必须在
UI的部署清单中配置。
- https://postgres-operator.readthedocs.io/en/latest/operator-ui/</small>
- https://github.com/zalando/postgres-operator/blob/master/manifests/api-service.yaml</small>
- https://github.com/zalando/postgres-operator/blob/master/ui/manifests/deployment.yaml#L43</small>
要部署
UI,只需应用其所有清单文件或使用
UI helm chart:
# 手动部署 kubectl apply -f ui/manifests/ # 或 kustomization kubectl apply -k github.com/zalando/postgres-operator/ui/manifests # 或 helm chart helm install postgres-operator-ui ./charts/postgres-operator-ui
与
operator一样,检查
UI pod是否进入
Running状态:
# 如果您使用 yaml 清单创建了 operator kubectl get pod -l name=postgres-operator-ui # 如果您使用 helm chart 创建了 operator kubectl get pod -l app.kubernetes.io/name=postgres-operator-ui
您现在可以通过端口转发 UI
pod(注意
label selector)访问
Web界面,并在浏览器中输入
localhost:8081:
kubectl port-forward svc/postgres-operator-ui 8081:80
UI 文档中详细解释了可用选项。
创建 Postgres cluster
如果
operatorpod 正在运行,它会侦听有关
postgresql资源的新事件。 现在,是时候提交您的第一个
Postgres集群清单了。
# 创建一个 Postgres cluster kubectl create -f manifests/minimal-postgres-manifest.yaml
在
cluster清单提交并通过验证后,
operator将创建
Service和
Endpoint资源以及一个
StatefulSet,它根据清单中指定的实例数量启动新的
Pod。所有资源都像
cluster一样命名。 数据库
pod可以通过它们的数字后缀来识别,从
-0开始。他们运行
Zalando的 Spilo 容器镜像。至于
services和
endpoints,将有一个用于
master pod,另一个用于所有副本(
-repl后缀)。检查是否所有组件都出现了。使用标签
application=spilo过滤并列出标签
spilo-role以查看当前谁是
master。
# 检查部署的 cluster kubectl get postgresql # 检查创建的 database pod kubectl get pods -l application=spilo -L spilo-role # 检查创建的 service 资源 kubectl get svc -l application=spilo -L spilo-role
通过 psql 连接到 Postgres cluster
您可以在
database pod上创建端口转发以连接到
Postgres。有关说明,请参阅用户指南。使用
minikube也很容易从指向
master pod的
K8s service中检索连接字符串:
export HOST_PORT=$(minikube service acid-minimal-cluster --url | sed 's,.*/,,') export PGHOST=$(echo $HOST_PORT | cut -d: -f 1) export PGPORT=$(echo $HOST_PORT | cut -d: -f 2)
从
cluster中创建的
K8s Secret中检索密码。默认情况下拒绝非加密连接,因此将
SSL模式设置为
require:
export PGPASSWORD=$(kubectl get secret postgres.acid-minimal-cluster.credentials -o 'jsonpath={.data.password}' | base64 -d) export PGSSLMODE=require psql -U postgres
删除 Postgres cluster
要删除
Postgres集群,只需删除
postgresql自定义资源。
kubectl delete postgresql acid-minimal-cluster
这应该删除关联的
StatefulSet、
database Pods、
Services和
Endpoints。
PersistentVolume被释放,
PodDisruptionBudget被删除。但是,
Secrets不会被删除,并且备份将保留在原位。
在集群仍在启动或在该阶段卡住时删除集群时,可能会删除
postgresql资源,留下孤立的组件。 在创建新的
Postgres集群时,这可能会导致麻烦。对于全新的设置,您可以删除本地
minikube或
kind集群并重新开始。
更多
相关文章推荐
- Python编程快速上手 让繁琐工作自动化 第8章项目 生成随机的测验试卷文件
- 快速上手Spring--2.HelloWorld(1)
- vnc使用教程,能快速上手的vnc批量管理使用教程
- Eclipse快速上手EJB -- 3. 一对一的双向关系的CMR(3)
- (绝对官方好用,快速上手)针对grunt之前写的那篇有些乱,这次总结个清晰的
- Masonry介绍与使用实践:快速上手Autolayout
- weex环境配置快速上手
- Git精简教程,快速上手
- Python编程快速上手 让繁琐工作自动化 第9章实践项目 9.8.3 消除缺失的编号和附加的挑战
- Expression Studio 快速上手
- vim编辑器入门、快速上手
- Vue.js 2.0 详细教程 快速上手 - 基础篇
- (一)快速上手VUE 基础 常用语法示例(html纯引用vue.js)
- gulp快速上手(不想看官方文档的同学朝这边看)
- 快速上手Oracle 存储过程、自定义函数
- MyEclipse Struts 快速上手
- 快速上手Spring--9.Lookup方法注入
- [图文]Eclipse快速上手指南 (2)
- Jeddict快速上手
- JavaScript快速上手之6:比较和逻辑运算符