【时速云答疑时间】第三期:精选容器服务详解及使用技巧

为促进Docker、Kubernetes等技术的交流传播,同时帮助用户更全面地了解时速云产品及其应用,时速云每周四晚8:30-9:00在用户微信群进行产品、容器技术相关的直播分享和现场答疑。以下整理自9月10日第三期答疑内容,由时速云CTO王磊分享。

今天主要跟大家介绍一下时速云平台的一个主要模块—>容器,详细说说这块的设计和使用方法。在时速云上创建容器目前有两个入口:第一个就是左侧“容器”菜单;第二个就是登录后,浏览镜像的时候,可以直接部署感兴趣的镜像,通过入口,选择好镜像以后,就可以对容器进行简单配置了。

然后就是“容器配置”页面,这里可以选择镜像的版本(tag),填写服务名称,选择“部署集群”(包括系统和私有集群)。当然也可以选择容器的内存、硬盘配置,以及所需应用节点数。节点数这个地方,如果大于1,那么调度系统会尽可能分配应用节点到不同的主机节点上,也就是如果物理节点down掉一个,其他物理节点可以继续服务,这个就是“实例数量的配置”。

接下来“服务类型”,大家知道一般服务分为“无状态服务”“有状态服务”。对于无状态服务,就是容器本身不会存储状态相关的信息,可以任意在不同节点调度运行,而有状态服务需要额外的外接存储卷提供数据持久化支持。

在容器创建中所需的所有配置都是从真实镜像(image)里直接获取到的。比如:数据卷的配置从volume 指令得到,端口配置从 expose 指令得到等等。

对于定义volume的镜像,我们可以选择”有状态服务“,来配置相应的存储卷来支撑容器服务,也可以作为“无状态服务”来运行。

存储卷可以理解为IaaS上的磁盘,以后会详细介绍。这样,容器启动的时候,会自动挂在存储卷的数据,并随容器在不同节点之间自动调度、挂载。并且,存储卷后端是分布式存储,保证数据的高可用,镜像中定义了多少volume,这个地方就可以分别配置存储卷。根据不同容器的需求,还可以共享存储卷、或者设置只读存储卷。

“容器配置”页面,最后一个配置是“更新镜像”。这个配置现在已经默认勾选了,因为有的用户不太了解它的作用。如果勾选这个选项,创建容器时会先去docker pull一下,会覆盖节点上已有的相同名字和tag的镜像,也会使容器启动速度稍慢一点,毕竟它会再去pull一次;如果不勾选,则在镜像在节点上不存在的情况下去pull。

接下来进入“高级设置”。虽然是高级,但是有些时候也是要检查一下的。这个页面,第一个是“链接服务”,也是用户的服务之间可以进行编排的一种方法。如果添加了服务链接,那么对应服务的环境变量就会传给另一个服务,另外一个服务就可以通过环境变量里面的host port等信息来访问链接过来的服务。

想起IBM时候的bluemix,一个应用可以绑定多个服务,然后应用内部可以用api来遍历所有的链接服务,然后选择所需要的服务。这里也是类似的概念,只是容器内部目前还没有api来查找所有链接的服务,用户需要通过环境变量的方式来定位。这个方式对容器之间的启动顺序有一些依赖,可以考虑使用内网域名的方式进行服务之间的通信,会更可靠一些。

接下来的环境变量,就是镜像本身定义的env了。环境变量的env默认会显示所有镜像里面定义的env指令,可以修改其值,也可以增加或者删除。

最后是“端口配置”也是最重要的一个地方。目前时速云支持多端口应用,也支持http和tcp协议,udp的支持正在开发中。对于不同协议,大家在访问服务的时候也会有所不同。如果是tcp协议,需要通过域名(app_name-user_name.tenxapp.com) + 端口(:port)方式访问;如果是http协议,则不需要指定端口,通过域名 app_name-user_name.tenxapp.com 即可。大家需要根据自己的应用需求来决定每个expose的服务端口所需的协议类型,比如mysql, ssh需要tcp,web服务用http等。

最后容器创建成功后,我们会在控制台看到一列“服务地址”

3答疑1

 

服务地址这个地方,对于多端口应用可能有时不好理解。对于一个端口的,这个地址就是唯一端口的服务地址。多端口的,默认我们会用80或者http的服务端口作为这里的服务地址,也是为了方便用户,后面我们也会做一些调整。

如果要看到所有的服务端口映射情况,可以点击容器应用,查看“端口”页面即可

3答疑2

就可以看到所有容器内端口映射出来的服务地址了。

现场提问精选:

1. 分布式存储使用了哪些技术呢?已经做到漂移了吗?
答:使用分布式存储相关的技术,会随着容器一起迁移、挂载的。

2.建一个php服务器,高级配置里点链接服务,显示”没有容器可以链接”。
答:链接服务必须是自己的已有的服务。比如,你原来有一个mysql服务,又要建立一个php服务,需要访问mysql,这样你可以把mysql服务和php服务链接起来。

3.无状态容器服务如何做负载均衡?
答:平台上,只需要创建容器服务的时候,建立多个应用实例,自身就已经是分布式、负载均衡的架构了。

4. 建立多个应用实例就是多创建几个同类的容器服务吗?
答:嗯,是的,并且会平均分配到有可用资源的节点上,保证多节点的调度部署。

5. 创建的多个容器服务,要注册到k8s里去,是通过编排?
答:编排,是把多个镜像生成的容器统一调度、部署。

6. 多实例的容器,页面中点击容器的日志,是所有实例日志合并显示?还是需要点击实例分别查看?
答:目前还是分开查看的,日志处理我们还在进一步完善中。

7. 在多个无状态实例干同一件事时,由谁来分配任务,K8S吗?
答:目前是替换了kube-proxy组件,没有用k8s自己的。

8. 如果应用比较复杂,有多个微服务合作,每个微服务占一个容器,并且都是多实例的。这些工作调度谁来做?
答:这些都是由我们的路由模块负责的,多个微服务可以通过内网域名访问,也是多实例负载均衡的。

9. 是在哪里配置?内网域名由谁来管?是内建DNS服务吗?
答:嗯,内建dns服务

10. 页面上新建的存储,挂载到MySQL。现在的页面上存储只有格式化功能,不能查看里面的内容,我想下载里面的内容用什么办法?
答:查看容器内容,可以通过简单的web console上执行命令查看,下载、备份、调整大小等等很多存储相关的功能还在开发中。

后记:第三期分享答疑从晚上8:30持续到9:40,有2位用户获得我们送出的50元代金券。有兴趣参与每周四晚8:30-9:00时速云产品、容器技术相关答疑的用户朋友请联系微信xiaoqingshuyeah。欢迎留言告知您想了解的问题或对时速云产品的体验感受,我们会第一时间回复您。

 

 

暂无评论

发表评论