在Amazon 雷竞技下载官网Elastic Kubernetes Service (EKS)上为MongoDB安装Percona Server¶
本指南向您展示如何在Amazon Elastic Kubernetes雷竞技下载官网 Service (EKS)上部署Percona Operator for MongoDB。本文档假定您对该平台有一定的经验。有关EKS的更多信息,请参见Amazon EKS官方文档.
先决条件¶
以下工具在本指南中使用,因此需要预安装:
AWS CLI (Command Line Interface)用于与AWS的不同部分交互。您可以按照系统的正式安装说明.
eksctl简化在EKS上创建集群。它可以沿其安装GitHub上的安装说明.
kubectl在Kubernetes上管理和部署应用程序。安装它请按照官方安装说明进行安装.
此外,您还需要使用凭据配置AWS CLI官方指南.
创建EKS集群¶
要创建您的集群,您将需要以下数据:
请注意
现货实例不建议用于生产环境,但可能有用,例如用于测试目的。
最简单和直观的方法是在YAML中描述所需的集群,并将此配置传递给eksctl命令。
下面的示例将EKS集群配置为一个被管理节点组:
apiVersion:eksctl.io / v1alpha5种类:ClusterConfig元数据:名字:测试集群地区:eu-west-2节点组:-名字:ng-1minSize:3.最大尺寸:5instancesDistribution:maxPrice:0.15instancetype:[“m5.xlarge”,“m5.2xlarge”]至少要指定两种实例类型onDemandBaseCapacity:0onDemandPercentageAboveBaseCapacity:50spotInstancePools:2标签:“iit-billing-tag”:“云”
当集群配置文件准备就绪时,您可以通过以下命令实际创建您的集群:
$eksctl创建集群- f~ / cluster.yaml
安装Operator并部署MongoDB集群¶
部署操作员。默认情况下,部署将在
默认的名称空间。如果这不是理想的名称空间,您可以创建一个新的名称空间和/或为该名称空间设置上下文,如下所示<名称空间名称>带有一些描述性名称的占位符):$kubectl创建名称空间<名称空间美元名称>kubectl配置设置上下文$ (kubectl配置当前上下文)——名称空间=<名称空间名称>在成功的时候,你会看到这样的信息
命名空间/ <名称空间名称>创建,并修改了上下文。部署操作符使用命令如下:
$kubectl应用——服务器端- fhttps://raw.githubusercontent.com/雷竞技下载官网percona/percona-server-mongodb-operator/v1.14.0/deploy/bundle.yaml预期的输出
apiextensions.k8s.io/perconaservermongodbs.psm雷竞技下载官网db.percona.com serversie-applied customresourcedefintion.apiextensions.k8s.io /perconaservermongodbbackups.psmdb.percona.com serversie-applied customresourcedefintion.apiextensions.k8s.io /perconaservermongodbrestores.psmdb.percona.com serversie-applied roby.rbac .authorization.k8s。Io 雷竞技下载官网/percona-server-mongodb-operator serside -applied serviceaccount/percona-server-mongodb-operator serside -applied rolebinding.rbac.authorization.k8s。Io /service-account雷竞技下载官网-percona-server-mongodb-operator服务器应用部署。应用程序/雷竞技下载官网 percona-server-mongodb-operator serverside-applied操作符已经启动,可以部署MongoDB集群:
$kubectl应用- fhttps://raw.githubusercontent.com/雷竞技下载官网percona/percona-server-mongodb-operator/v1.14.0/deploy/cr.yaml预期的输出
雷竞技下载官网perconaservermongodb.psmdb.percona.com/my-cluster-name创建请注意
这将部署默认的MongoDB集群配置、三个mongod、三个mongos和三个配置服务器实例。请参阅部署/ cr.yaml而且自定义资源选项用于配置选项。您可以通过执行以下命令克隆存储库的所有清单和源代码:
$git克隆- bv1.14.0https://github.com/雷竞技下载官网percona/percona-server-mongodb-operator编辑所需选项后,应用已修改的选项
部署/ cr.yaml文件如下:$kubectl应用- f部署/ cr.yaml创建过程可能需要一些时间。进程结束后,您的集群将获得
准备好了的地位。您可以使用以下命令进行检查:$kubectl得到psmdb预期的输出
NAME ENDPOINT STATUS AGE my-cluster-name my-cluster-name-mongo .default.svc.cluster.local ready 5m26s
验证集群操作¶
启动集群可能需要10分钟。当Kubectl得到PSMDB命令最终显示集群状态为准备好了,您可以尝试连接到集群。
您需要admin用户的登录名和密码才能访问集群。使用
Kubectl得到秘密命令查看Secrets对象列表(默认情况下,您感兴趣的Secrets对象具有my-cluster-name-secrets名字)。然后Kubectl get secret my-cluster-name-secrets -o yaml命令将返回带有生成的Secrets的YAML文件,包括MONGODB_DATABASE_ADMIN_USER而且MONGODB_DATABASE_ADMIN_PASSWORD字符串,看起来应该如下所示:...数据:...MONGODB_DATABASE_ADMIN_PASSWORD:aDAzQ0pCY3NSWEZ2ZUIzS1I =MONGODB_DATABASE_ADMIN_USER:ZGF0YWJhc2VBZG1pbg = =这里实际的登录名和密码是base64编码的。使用
echo 'aDAzQ0pCY3NSWEZ2ZUIzS1I=' | base64——decode .命令将其恢复为人类可读的形式。使用MongoDB客户端运行一个容器,并将其控制台输出连接到终端。下面的命令将执行此操作,命名新Pod
雷竞技下载官网percona-client:$kubectl运行-我——rm——tty雷竞技下载官网percona-client——图片=雷竞技下载官网percona / percona-server-mongodb: 4.4.18-18——重启=从来没有--bash伊尔执行它可能需要一些时间来部署相应的Pod。
现在运行
蒙戈在percona-cli雷竞技下载官网ent命令shell中使用登录(通常是databaseAdmin),从Secret中获得的正确密码,以及正确的名称空间名称,而不是<名称空间名称>占位符。根据sharding是开启(默认行为)还是关闭,命令看起来会有所不同:$蒙戈“mongodb: / / databaseAdmin: databaseAdminPassword@my-cluster-name-mongos。<名称空间名称> .svc.cluster.local /管理?ssl = false”$蒙戈“mongodb + srv: / / databaseAdmin: databaseAdminPassword@my-cluster-name-rs0。<名称空间名称> .svc.cluster.local /管理?replicaSet = rs0&ssl = false”
故障排除¶
如果Kubectl得到PSMDB命令不显示准备好了状态过长,可以检查创建进程是否正常库贝特尔去拿吊舱命令:
$kubectl得到豆荚
预期的输出
姓名就绪状态重启年龄my-cluster-name-cfg-0 2/2运行0 11 m my-cluster-name-cfg-1 2/2运行1 10 m my-cluster-name-cfg-2 2/2运行1 9 m my-cluster-name-mongos-0 1/1 0 11 m my-cluster-name-mongos-1运行1/1运行0 11 m my-cluster-name-mongos-2 1/1运行0 11 m my-cluster-name-rs0-0 2/2运行0 11 m my-cluster-name-rs0-1 2/2运行0 10 m my-cluster-name-rs0-2 2/2运行0 9 m percona -服务器mongodb -运营商- 665 cd69f9b xg5dl 1/1 0 37 m雷竞技下载官网
命令的输出显示了一些错误,可以使用Kubectl描述命令如下:
$kubectl描述圆荚体my-cluster-name-rs0-2
的详细信息警告语句,然后更正配置。警告的示例如下:
警告FailedScheduling 68s (x4 / 2m22s)默认调度器0/1节点可用:1个节点不匹配pod亲和性/反亲和性,1个节点不满足现有的pod反亲和性规则。
移除EKS集群¶
要删除集群,您需要准备以下数据:
- 您的EKS集群名称,
- 部署集群的AWS区域。
方法清理集群eksctl命令如下所示(使用实名而不是。<地区>而且<集群名称>占位符):
$eksctl删除集群——区域=<地区>——名字=“<集群名称>”
删除集群可能需要一段时间。
警告
删除集群后,集群中存储的所有数据将丢失!