客户端通过CCE连接DCS
方案概述
随着容器技术的普及,越来越多的应用程序部署在容器环境中。本章节将介绍如何将Redis客户端部署到云容器引擎CCE的集群容器中,通过CCE连接DCS。
前提条件
准备以下实例资源:
- 创建VPC和子网,例如vpc-test。创建方式请参考创建虚拟私有云和子网。
(可选)建议创建2个子网,将DCS实例放到一个子网,CCE集群放到另一个子网,方便管理。
- 创建DCS实例,例如dcs-test。创建方式请参考购买Redis实例。
创建的DCS实例时,“虚拟私有云”请选择所创建的VPC(vpc-test)及其子网1。
- 创建CCE集群,例如cce-test。创建方式请参考购买CCE集群。
创建CCE集群时,“网络模型”请选择“VPC网络";“虚拟私有云”和“子网”请选择所创建的VPC(vpc-test)及其子网2。
- 创建CCE节点池,例如cce-test-nodepool。创建方式请参考创建节点池。
创建CCE节点池时,“节点类型”请选择“弹性云服务器-虚拟机”,“容器引擎”请选择“Docker”,“操作系统”请选择“CentOS 7.6”,并需要绑定“弹性公网IP”,选择“使用已有”或“自动创建”。
操作流程
制作客户端镜像
- 下载Redis客户端。
- 登录CCE集群节点。
单击创建完成的CCE节点池名称,进入CCE节点池,单击右上角的“远程登录”。
- 执行gcc --version检查操作系统是否安装了用于编译Redis程序的GCC编译器。如下图,表示已经安装了GCC编译器。
如未安装GCC编译器,请使用以下命令安装GCC编译器。
yum -y install gcc yum -y install gcc-c++
- 执行以下命令,在home目录下创建redis目录,并进入该目录。
cd /home && mkdir redis && cd redis
- 执行以下命令下载Redis客户端。此处以下载5.0.13版本的客户端为例。
wget https://download.redis.io/releases/redis-5.0.13.tar.gz
- 解压Redis,进入Redis目录,执行编译命令后返回redis目录。
tar xvzf redis-5.0.13.tar.gz cd redis-5.0.13 && make redis-cli cd ..
- 登录CCE集群节点。
- 创建Dockerfile。
使用vim Dockerfile命令创建Dockerfile,并填写以下信息。
FROM centos:7 RUN useradd -d /home/redis -m redis COPY ./redis-5.0.13 /home/redis/redis-5.0.13 RUN chown redis:redis /home/redis/redis-5.0.13 -R USER redis ENV HW_HOME=/home/redis/redis-5.0.13 ENV PATH=$HW_HOME/src:$PATH WORKDIR /home/redis/
按下Esc键退出编辑模式,执行:wq!保存配置并退出编辑界面。
- 构建客户端镜像。
- 在控制台的服务列表中选择“容器镜像服务 SWR”,进入容器镜像服务总览页。
- 单击右上角“创建组织”,输入组织名称,新建一个组织。也可以使用已有的组织(单击左侧“组织管理”可查看已有组织。)
- 在SWR总览页单击右上角“登录指令”获取登录指令,复制登录指令。(登录指令结尾的swr.xxxxxx.com为镜像仓库地址。)
图1 获取登录指令
- 使用复制的登录指令在CCE节点中执行,登录SWR。
图2 登录SWR
- 执行以下命令构建镜像。
docker build -t {Image repository address}/{Organization name}/{Image name :version}.
其中Image repository address为镜像仓库地址,即登录指令的结尾部分;Organization name为b步骤创建的组织名称;Image name为需要构建的镜像名称,version为镜像的版本。请根据实际值进行替换。例如:docker build -t swr.xxxxxx.com/study1/redis:v1 .
图3 构建镜像
- 执行以下命令将客户端镜像上传到SWR。
docker push {Image repository address}/{Organization name}/{Image name :version}
图4 上传镜像
- 上传镜像后,可在SWR控制台“我的镜像”页面查看到Redis镜像。
图5 查看镜像
部署镜像到CCE
- 在控制台中进入DCS服务,单击已创建的Redis实例“dcs-test”,进入该Redis实例的详情页面。
- 在“连接信息”栏中获取Redis实例的IP地址和端口号。
- 单击右上角"连接Redis",通过Web Cli连接Redis。
- 在Redis连接页面,执行SET命令。下图以SET hello "hello redis!"为例。
- 在控制台中进入CCE服务,单击已创建的CCE集群“cce-test”。
- 在左侧导航栏中,选择“工作负载”。单击右上角“创建负载”。参考创建工作负载。
- 在创建工作负载页面的“容器配置>基本信息”中,“镜像名称”需要选择已创建的Redis镜像。
- 在创建工作负载页面的“容器配置>生命周期”中,配置如下内容。
运行参数:-c
while true ;do sleep 10;/home/redis/redis-5.0.13/src/redis-cli -h 10.0.0.0 -p 6379 -a DCS instance password get hello;done
其中10.0.0.0为DCS实例的IP地址,6379为DCS实例的端口号,DCS instance password为DCS实例的密码,hello为在通过Web Cli连接Redis时SET的数据名,请根据实际值替换。
图6 配置生命周期
- 创建后,工作负载状态为“运行中”时,说明工作负载创建成功。
图7 查看工作负载状态
测试Redis连接
- 登录CCE集群节点,参考登录CCE集群节点。
- 参考通过kubectl连接集群,下载和配置kubectl配置文件。
- 执行以下命令,当返回状态为“Running”时,说明Redis容器处于运行状态。
kubectl get pod -n default
- 使用以下命令查看Redis容器的日志。
kubectl logs --tail 10 -f redis-xxxxxxxx -n default
其中redis-xxxxxxxx为创建的工作负载实例名称。(单击工作负载名称,进入工作负载,可查看工作负载实例名称。)
从返回信息中,可以看到DCS服务返回的信息为在前面连接Redis时设置的数据值“hello redis!”。
- 测试完成。