
前两篇我们讲了基于Aerospike部署的K8s集群准备以及配置K8s的持久卷块存储/文件存储,第三篇我们就要在部署好的K8s环境里安装Aerospike。
安装 Aerospike - 块和文件系统
Aerospike Kubernetes Operator
安装 AKO(Aerospike Kubernetes Operator)并设置数据库集群。有关如何执行此操作的详细信息,请参阅以下文档。

https://docs.aerospike.com/cloud/kubernetes/operator/install-operator-operatorhub
可以通过检查 operators 命名空间中的 pod 来确认安装是否成功。
kubectl get pods -n operatorsNAME READY STATUS RESTARTS AGEaerospike-operator-controller-manager-7946df5dd9-lmqvt 2/2 Running 0 2m44saerospike-operator-controller-manager-7946df5dd9-tg4sh 2/2 Running 0 2m44s
创建 Aerospike 数据库集群
在此我们创建一个 Aerospike 数据库集群。有关完整详细信息,请参阅以下文档。

https://docs.aerospike.com/cloud/kubernetes/operator/create-cluster-kubectl#prepare-the-aerospike-cluster-configuration
基本步骤如下:
获取代码
克隆 Aerospike Kubernetes Git 存储库并确保将功能/许可证密钥文件(如果有)复制到以下目录 - config/samples/secrets。
git clone https://github.com/aerospike/aerospike-kubernetes-operator.gitcd aerospike-kubernetes-operator/
初始化存储
kubectl apply -f config/samples/storage/eks_ssd_storage_class.yaml
从 6.0 版本开始,对于每个块存储设备,擦除磁盘以避免严重错误:
Oct 26 2022 14:05:53 GMT: CRITICAL (drv_ssd): (drv_ssd.c:2216) test/dev/xvdf: not an Aerospike device but not erased - check config or erase device
使用以下命令擦除每个主机上的设备。请记住,在 2 个节点上,设备将是 nvme1n1p2(仅限演示)。
export diskPart=/dev/nvme1n1sudo blkdiscard ${diskPart} && sudo blkdiscard -z --length 8MiB ${diskPart} &
添加Secrets
Secrets,对于那些不熟悉这个术语的人来说,允许数据被引入到 Kubernetes 环境中,同时确保它不能被读取。示例可能包括私人 PKI 密钥或密码。
kubectl -n aerospike create secret generic aerospike-secret --from-file=config/samples/secretskubectl -n aerospike create secret generic auth-secret --from-literal=password='admin123'
创建 Aerospike 集群
在我们创建集群之前,删除我们之前创建的 httpd Pod 和 PersistentVolumeClaim:
kubectl delete -f pod-fs.yamlkubectl delete pvc fs-1g-pvc
确保所有 PersistentVolume(s) 的状态都为“可用”:
kubectl get pv -n aerospikeNAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGElocal-pv-684418fc 62Gi RWO Delete Available fast-ssd 4h13mlocal-pv-9dbcb710 7152Mi RWO Delete Available fs-ssd 5m42slocal-pv-aa49ff2c 69Gi RWO Delete Available fast-ssd 4h13mlocal-pv-ad278bd7 69Gi RWO Delete Available fast-ssd 4h13m
如果某些 PV 不处于“可用”状态,请运行以下补丁以释放 PersistentVolumeClaim (PVC)。
kubectl get pv -o=json|jq .items[].metadata.name -r | grep ^local | while read -r line; do kubectl patch pv $line -p '{"spec":{"claimRef": null}}';done
使用文件 all_flash_cluster_cr.yaml 将 Aerospike 数据库配置为使用全闪存配置,这样我们可以将块和文件系统存储作为一个工作单元来使用。
storageClass: ssd ( AWS gps ext4 Filesystem Dynamic Storage ) storageClass: fast-ssd ( LocalStaticProvisioner Block Storage ) storageClass: fs-ssd ( LocalStaticProvisioner XFS filesystem )
部署 Aerospike 数据库
kubectl create -f all_flash_cluster_cr.yamlkubectl get po -n aerospike -w
使用Benchmark测试工具插入测试数据
Aerospike Benchmark 工具测量 Aerospike 集群的性能。它可以通过可配置的记录结构、各种访问模式和 UDF 调用来模拟真实世界的工作负载。使用基准测试工具可以轻松插入一些数据。
登录到一个节点(应该有一个文件系统 - 检查......)
kubectl exec -it aerocluster-0-0 -n aerospike -- bash
使用最简单的命令添加一些数据
asbench -Uadmin -Padmin123
要验证我们是否成功添加了一些数据,请使用 aql 工具,登录并运行查询
aql -Uadmin -Padmin123select * from test
清除
警告:如果绕过此步骤并删除 EKS 集群,则创建的所有持久卷都将保留。
删除数据库集群
这是重要的一步,在使用云存储类时应始终运行。
kubectl delete -f all_flash_cluster_cr.yaml
删除 EKS 集群
我们现在可以删除 EKS 集群:
eksctl delete cluster -f my-cluster.yaml Ready <none> 63m v1.22.12-eks-ba74326 192.168.7.181 3.87.204.50 Amazon Linux 2 5.4.209-116.367.amzn2.x86_64 docker://20.10.17
结论
至此已经可以看到,只需很少的努力,我们就可以轻松地启动一个部署,使用本地磁盘进行块存储,并结合文件系统存储。我们还确认 Pod 被自动调度到正确的节点。我们还了解到,通过使用 Kubernetes 污点,我们可以有效地保留节点以供特定使用。还可以先睹为快 Aerospike - 全闪存用例。最后一点,我们只查看了 LocalStaticProvisioner 的 Kubernetes 特别兴趣小组 (SIG) 版本。可以考虑下面列出的 Rancher 版本。
Review Rancher https://github.com/rancher/local-path-provisioner
下期精彩,敬请期待
关于Aerospike
1
Aerospike实时数据平台:使组织能够面对数十亿笔交易规模时实时采取行动,同时将用户服务器占用空间减少多达80%。
2
Aerospike多云平台:以可预测的亚毫秒级性能为实时应用程序提供支持,数据规模高达PB级,正常运行时间为5个9,并提供全球分布的、强一致的数据存储能力。
3
基于Aerospike实时数据平台构建的应用程序:可用于打击欺诈、面向在线电子商务进行商品推荐、支持全球数字支付等,并为数千万客户提供超个性化的用户体验。
公司总部位于加利福尼亚州山景城,在伦敦、班加罗尔和特拉维夫设有办事处,目前已在中国开展业务。
猛戳左下角“阅读原文”,既可以下载社区版本,也可以随时提问。欢迎添加小编微信:Aerospike_China,帮你解决更多问题。




