Kubernetes 是一种开源容器编排系统,用于部署、扩展和管理容器化应用程序。Kubernetes 是由云原生计算基金会 (CNCF) 托管的项目。在非常高的层面上,它包含两种类型的资源:主节点(它是集群协调器)和节点,节点是运行容器化应用程序的 worker。
Minikube 是一个用于在本地机器上运行 Kubernetes 集群的工具。Minikube 是您笔记本电脑上 VM 内的单节点 Kubernetes 集群。Minikube 可用于尝试 Kubernetes 或日常开发。
Redis 企业版产品扩展了 Redis,Redis 是最流行的与 Docker 容器一起使用的数据库。Redis 企业版为组织提供高性能、低延迟和高可用性。这篇文章将向您展示在本地笔记本电脑上设置 Minikube 并运行 3 节点 Redis 企业版集群所需的基本步骤。
我们将使用 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 企业版服务。Redis 企业版部署和服务的 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 企业版集群设置为主节点。
$ 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 企业版的 Rest API 在主节点上创建数据库
curl -k -u "vick@redis.com:<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 企业版下载中包含的 rladmin 实用程序查看集群和数据库的状态
您可以通过在本地端口和 pod 端口之间设置安全隧道来访问 Redis 企业版仪表板(在端口 8443 上运行)。建立隧道后,您可以在 https://127.0.0.1:8443 上访问 Redis 企业版仪表板
kubectl port-forward
例如:kubectl port-forward redis5-58dc568c56-7qk22 8443:8443
您可以使用节点的 IP 地址和数据库创建期间指定的端口连接到您的数据库
$ redis-cli -h <ip_addr_of master_node> -p <11000>
我们正在开发一个 Kubernetes 原生 Redis 企业版容器,该容器将利用 Kubernetes 1.8 及更高版本中引入的新基元。我们正在努力发布新版本的 Redis 企业版容器镜像,该镜像将利用新的持久集和存储类基元,同时提供更好的集群引导体验。在此期间,了解有关 Redis 企业版产品的更多信息。