加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

快速使用Zalando Postgres Operator,你会了吗?

发布时间:2022-04-15 15:00:35 所属栏目:云计算 来源:互联网
导读:由于 Postgres Operator 是为 Kubernetes (K8s) 框架设计的,因此首先设置它。对于本地测试,我们建议使用以下解决方案之一: minikube, 在 VM 内创建单节点 K8s 集群(需要 KVM 或 VirtualBox) https://github.com/kubernetes/minikube/releases kind 和 k3d
  由于 Postgres Operator 是为 Kubernetes (K8s) 框架设计的,因此首先设置它。对于本地测试,我们建议使用以下解决方案之一:
 
  minikube, 在 VM 内创建单节点 K8s 集群(需要 KVM 或 VirtualBox)
  https://github.com/kubernetes/minikube/releases
 
  kind 和 k3d, 允许创建在 Docker 上运行的多节点 K8s 集群(需要 Docker)
  https://kind.sigs.k8s.io/
 
  https://k3d.io
 
  要与 K8s 基础设施交互,请安装其 CLI 运行时 kubectl。
 
  https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-binary-via-curl
 
  本快速入门假设您已经启动了 minikube 或创建了本地 kind 集群。请注意,您还可以使用 Docker Desktop for Mac 中内置的 K8s 支持来遵循本教程的步骤。您必须将 minikube start 和 minikube delete 替换为您的启动操作,以获得 Docker 内置的 K8s 支持。
 
  配置选项
  只能在部署新的 Postgres 集群之前配置 Postgres Operator。这可以通过两种方式工作:通过 ConfigMap 或自定义 OperatorConfiguration 对象。有关配置的更多详细信息,请参见此处。
 
  https://postgres-operator.readthedocs.io/en/latest/reference/operator_parameters/
  部署选项
  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
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  有一个 Kustomization manifest 结合了上述资源(CRD 除外)— 它可以与 kubectl 1.14 或更高版本一起使用,如下所示:
 
  https://github.com/kubernetes-sigs/kustomize
  https://github.com/zalando/postgres-operator/blob/master/manifests/kustomization.yaml
  复制
  kubectl apply -k github.com/zalando/postgres-operator/manifests
  1.
  为方便起见,我们使用 run_operator_locally 脚本通过 minikube 自动启动 operator。它应用 acid-minimal-cluster。清单。
 
  https://github.com/zalando/postgres-operator/blob/master/manifests/minimal-postgres-manifest.yaml
  复制
  ./run_operator_locally.sh
  1.
  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
  1.
  Helm chart
  或者,可以使用提供的 Helm chart 安装 operator,从而为您节省手动步骤。克隆此 repo 并将目录更改为 repo 根目录。安装 Helm v3 后,您应该能够运行:
 
  https://helm.sh/
  复制
  helm install postgres-operator ./charts/postgres-operator
  1.
  该 chart 适用于 Helm 2 和 Helm 3。使用 v3 时,将跳过 v2 中的 crd-install hook 并发出警告。使用 Helm 2 安装应用程序的文档可以在 v2 文档中找到。
 
  https://v2.helm.sh/docs/
  该 chart 还托管在:
 
  https://opensource.zalando.com/postgres-operator/charts/postgres-operator/
  检查 Postgres Operator 是否正在运行
  启动 operator 可能需要几秒钟。在应用 Postgres 集群清单之前检查 operator pod 是否正在运行。

  复制
  # 手动部署
  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
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  与 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
  1.
  2.
  3.
  4.
  5.
  您现在可以通过端口转发 UI pod(注意 label selector)访问 Web 界面,并在浏览器中输入 localhost:8081:
 
  复制
  kubectl port-forward svc/postgres-operator-ui 8081:80
  1.
  UI 文档中详细解释了可用选项。
 
  https://postgres-operator.readthedocs.io/en/latest/operator-ui/
 
  创建 Postgres cluster
  如果 operator pod 正在运行,它会侦听有关 postgresql 资源的新事件。现在,是时候提交您的第一个 Postgres 集群清单了。
 
  复制
  # 创建一个 Postgres cluster
  kubectl create -f manifests/minimal-postgres-manifest.yaml
  1.
  2.
  在 cluster 清单提交并通过验证后,operator 将创建 Service 和 Endpoint 资源以及一个 StatefulSet,它根据清单中指定的实例数量启动新的 Pod。所有资源都像 cluster 一样命名。数据库 pod 可以通过它们的数字后缀来识别,从 -0 开始。他们运行 Zalando 的 Spilo 容器镜像。至于 services 和 endpoints,将有一个用于 master pod,另一个用于所有副本(-repl 后缀)。检查是否所有组件都出现了。使用标签 application=spilo 过滤并列出标签 spilo-role 以查看当前谁是 master。

  从 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
  1.
  2.
  3.
  删除 Postgres cluster
  要删除 Postgres 集群,只需删除 postgresql 自定义资源。
 
  复制
  kubectl delete postgresql acid-minimal-cluster
  1.
  这应该删除关联的 StatefulSet、database Pods、Services 和 Endpoints。PersistentVolume 被释放,PodDisruptionBudget 被删除。但是,Secrets 不会被删除,并且备份将保留在原位。
 
  在集群仍在启动或在该阶段卡住时删除集群时,可能会删除 postgresql 资源,留下孤立的组件。在创建新的 Postgres 集群时,这可能会导致麻烦。对于全新的设置,您可以删除本地 minikube 或 kind 集群并重新开始。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!