有奖捉虫:云通信与企业服务文档专题,速来> HOT

操作场景

本文档旨在帮助您了解如何快速创建一个容器集群内的 Hello World 的 Node.js 版的服务。更多关于如何构建 Docker 镜像的教程可参阅 如何构建 docker 镜像

前提条件

已创建集群,详情请参见 创建集群
已登录节点,且该节点已安装 Node.js。详情请参见 镜像部署 Node.js 环境

操作步骤

编写代码制作镜像

编写应用程序

1. 依次执行以下命令,创建并进入 hellonode 的文件夹。
mkdir hellonode
cd hellonode/
2. 执行以下命令,新建并打开 server.js 文件。
vim server.js
3. i 切换至编辑模式,将以下内容输入 server.js。
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(80);
按 “Esc”,输入 :wq,保存文件并返回。
4. 执行以下命令,执行 server.js 文件。
node server.js
5. 测试 Hello World 程序。
方式1:再次登录节点,执行以下命令。
curl 127.0.0.1:80
显示如下,则说明 Hello World 程序运行成功。


方式2:打开本地浏览器,以 云服务器实例的公网IP地址:已配置的端口号 的形式访问,端口号为80。 显示如下,则说明 Hello World 程序运行成功。


1. 依次执行以下命令,在 hellonode 文件夹下,创建 Dockerfile 文件。
cd hellonode
vim Dockerfile
2. i 切换至编辑模式,将以下内容输入 Dockerfile 文件。
FROM node:4.4
EXPOSE 80
COPY server.js .
CMD node server.js
按 “Esc”,输入 :wq,保存文件并返回。
3. 该节点安装 docker,并启动 docker 服务。
yum install -y docker
systemctl start docker
4. 执行以下命令,构建镜像。
docker build -t hello-node:v1 .
5. 执行以下命令,查看构建好的 hello-node 镜像。
docker images
显示结果如下,则说明 hello-node 镜像已成功构建,记录其 IMAGEID。如下图所示:



上传该镜像到 qcloud 镜像仓库

创建容器镜像服务个人版实例,详情请参见容器镜像服务个人版快速入门
依次执行以下命令,上传镜像到 qcloud 镜像仓库。
docker tag IMAGEID ccr.ccs.tencentyun.com/命名空间/hello-node:v1
docker login ccr.ccs.tencentyun.com
docker push ccr.ccs.tencentyun.com/命名空间/hello-node:v1
说明
请将命令中的 IMAGEID 替换为 查看镜像 中记录的 IMAGEID。
请将命令中的命名空间替换为您已创建的命名空间。若您还没有命名空间,请先创建命名空间,详情请参见 创建命名空间
显示以下结果,则说明镜像上传成功。



通过该镜像创建 Hello World 服务

注意
在创建使用 Hello World 服务之前,您必须拥有集群。若您还没有集群,请先创建集群,详情请参见 创建集群
1. 登录容器服务控制台,选择左侧导航栏中的集群
2. 集群管理页面,选择需创建服务的集群 ID,进入集群详情页
3. 选择工作负载 > Deployment,在 Deployment 页面单击新建。如下图所示:



4. 新建 Deployment 页面,根据以下信息,设置工作负载基本信息。如下图所示:


工作负载名:输入要创建的工作负载的名称,本文以 helloworld 为例。
描述:填写工作负载的相关信息。
命名空间:根据实际需求进行选择。
标签:key = value 键值对,本例中标签默认值为 k8s-app = helloworld
OS 类型:根据实际需求进行选择,本文以 Linux 为例。
数据卷:根据实际需求设置工作负载的挂载卷,详情请参见 Volume 管理
5. 参考以下信息设置“实例内容器”。
5.1 输入实例内容器名称,本文以 helloworld 为例。
5.2 单击选择镜像,在弹出框中选择我的镜像,通过搜索框功能查找出 helloworld 镜像,并单击确定。 主要参数信息如下:
镜像版本(Tag):使用默认值 latest
镜像拉取策略:提供 Always、IfNotPresent 和 Never 3种策略,请按需选择。本文以不进行设置使用默认策略为例。
6. 在“实例数量”中,根据以下信息设置服务的实例数量。如下图所示:


手动调节:设定实例数量,本文实例数量设置为1。可单击“+”或“-”控制实例数量。
自动调节:满足任一设定条件,则自动调节实例(pod)数目。详情请参见 服务自动扩缩容
7. 根据以下提示,进行工作负载的访问设置。
Service:勾选“启用”。
服务访问方式:选择“公网LB访问”。
负载均衡器:根据实际需求进行选择。
端口映射:选择 TCP 协议,将容器端口和服务端口都设置为80 。
注意
服务所在集群的安全组需要放通节点网络及容器网络,同时需要放通30000 - 32768端口,否则可能会出现容器服务无法使用问题,详情请参见 容器服务安全组设置
8. 单击创建 Deployment,完成 Hello World 服务的创建。

访问 Hello World 服务

可通过以下两种方式访问 Hello World 服务。

通过负载均衡 IP 访问 Hello World 服务

1. 登录容器服务控制台,选择左侧导航栏中的集群
2. 集群管理页面,单击 Hello World 服务所在的集群 ID,进入集群详情页
3. 选择服务与路由 > Service,在 Service 页面
4. 在服务管理页面,复制 helloworld 服务的负载均衡 IP,如下图所示:

5. 在浏览器粘贴 helloworld 服务的负载均衡 IP。

通过服务名称访问 Hello World 服务

集群内的其他服务或容器可以直接通过服务名称访问。

验证 Hello World 服务

访问服务时显示如下,则 Hello World 服务创建成功。

若容器创建失败,可查看 事件常见问题