Kubernetes 是一个开源容器编排系统,用于部署、扩展和管理容器化应用程序。 Kubernetes 是 Cloud Native Computing Foundation (CNCF) 托管的项目。 在非常高的层面上,它包含两种类型的资源:主节点(集群协调器)和节点(运行容器化应用程序的工作节点)。
Minikube 是一个用于在本地机器上运行 Kubernetes 集群的工具。 Minikube 是你笔记本电脑上 VM 内的单节点 Kubernetes 集群。 Minikube 可用于试用 Kubernetes 或进行日常开发。
Redis Enterprise 产品扩展了 Redis,Redis 是 Docker 容器中最流行的数据库。 Redis Enterprise 为组织提供高性能、低延迟和高可用性。 这篇博文将向您展示设置 Minikube 并在您的本地笔记本电脑上运行 3 节点 Redis Enterprise 集群所需的基本步骤。
我们将使用 homebrew 包管理器在你的本地笔记本电脑上安装 minikube 和 kubernetes 命令行工具。
$ brew cask install minikube $ brew install kubernetes-cli
Minikube 提供了更改虚拟机 (VM) 驱动程序的功能。 对于这篇博文,我们使用了 vmwarefusion 驱动程序。
$ minikube start --memory 12288 --disk-size 30g --vm-driver vmwarefusion
命令的输出应该如下所示
我们将使用 Kubernetes 命令行工具 kubectl 来验证 Minikube 安装。 你可以使用以下命令验证 Minikube 安装
$ kubectl cluster-info
输出应如下所示
Kubernetes master is running at https://192.168.21.147:8443
Minikube 现在正在您的笔记本电脑上运行,并且 kubectl cli 能够成功查询主节点以获取集群的状态。 我们现在将在 Minikube 中部署具有三个副本集的 Redis Enterprise 服务。 Redis Enterprise 部署和服务的 yaml 配置文件可以在这里找到。
我们将使用 yaml 在 Kubernetes 集群中创建部署和服务。
$ kubectl apply -f redis-enterprise5.yaml deployment "redis5" created service "redis5" created
我们可以通过发出以下命令来验证是否创建了三个 pod
Kubectl get pods -o wide
我们需要将 CCS 的绑定从本地环回地址 127.0.0.1 更改为 0.0.0.0。
$ kubectl exec -it <name-of-your-pod> bash $ sed 's/bind 127.0.0.1/bind 0.0.0.0/g' -i /opt/redis/config/ccs-redis.conf $ /opt/redis/bin/supervisorctl restart ccs
我们需要通过登录到 pod 并发出 `create cluster` 命令来将 Redis Enterprise 集群设置为主节点。
$ kubectl exec -it <name-of-your-pod> bash
我们将使用 rladmin 实用程序来创建新集群
root@redis5-7749c97f4d-vk6rn:~# /opt/redis/bin/rladmin cluster create name cluster.local username <your_email_addr> password <your_passwd>
我们将使用 rladmin 实用程序将 2 个节点加入到集群
root@redis5-7749c97f4d-hcggk:~#/opt/redis/bin/rladmin cluster join username <your_email_addr> password <master_password> nodes <master_IP_addr>
和
root@redis5-7749c97f4d-p74nx:~#/opt/redis/bin/rladmin cluster join username <your_email_addr> password <master_password> nodes <master_IP_addr>
我们将使用 Redis Enterprise 的 Rest API 在主节点上创建一个数据库
curl -k -u "[email protected]:<password>" --request POST --url "https://localhost:9443/v1/bdbs" --header 'content-type: application/json' --data '{"name":"demo-db","type":"redis","memory_size":536870912,"port":11000,"data_persistence":"aof","replication":true,"shards_placement":"sparse","proxy_policy":"all-master-shards"}'
我们可以使用 Redis Enterprise 下载中包含的 rladmin 实用程序查看集群和数据库的状态
你可以通过设置本地端口和 pod 端口之间的安全隧道来访问 Redis Enterprise 仪表板,该仪表板在端口 8443 上运行。 隧道建立后,你可以通过 https://127.0.0.1:8443 访问 Redis Enterprise 仪表板
kubectl port-forward <my-pod-name> <localport>:<pod-port>
示例:kubectl port-forward redis5-58dc568c56-7qk22 8443:8443
你可以使用节点的 IP 和创建数据库期间指定的端口连接到你的数据库
$ redis-cli -h <ip_addr_of master_node> -p <11000>
我们正在开发一个 Kubernetes 原生的 Redis Enterprise 容器,它将利用 Kubernetes 1.8 及以上版本中引入的新原语。 我们正在发布新版本的 Redis Enterprise 容器镜像,该镜像将利用新的持久集和存储类原语,同时提供更好的集群引导体验。 与此同时,了解更多关于 Redis Enterprise 产品的信息。