以下整理自第三期答疑内容,由时速云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等。
最后容器创建成功后,我们会在控制台看到一列“服务地址”
服务地址这个地方,对于多端口应用可能有时不好理解。对于一个端口的,这个地址就是唯一端口的服务地址。多端口的,默认我们会用80或者http的服务端口作为这里的服务地址,也是为了方便用户,后面我们也会做一些调整。
如果要看到所有的服务端口映射情况,可以点击容器应用,查看“端口”页面即可
就可以看到所有容器内端口映射出来的服务地址了。
现场提问精选:
分布式存储使用了哪些技术呢?已经做到漂移了吗?
答:使用分布式存储相关的技术,会随着容器一起迁移、挂载的。
2.建一个php服务器,高级配置里点链接服务,显示"没有容器可以链接"。
答:链接服务必须是自己的已有的服务。比如,你原来有一个mysql服务,又要建立一个php服务,需要访问mysql,这样你可以把mysql服务和php服务链接起来。
3.无状态容器服务如何做负载均衡?
答:平台上,只需要创建容器服务的时候,建立多个应用实例,自身就已经是分布式、负载均衡的架构了。
建立多个应用实例就是多创建几个同类的容器服务吗?
答:嗯,是的,并且会平均分配到有可用资源的节点上,保证多节点的调度部署。
创建的多个容器服务,要注册到k8s里去,是通过编排?
答:编排,是把多个镜像生成的容器统一调度、部署。
多实例的容器,页面中点击容器的日志,是所有实例日志合并显示?还是需要点击实例分别查看?
答:目前还是分开查看的,日志处理我们还在进一步完善中。
在多个无状态实例干同一件事时,由谁来分配任务,K8S吗?
答:目前是替换了kube-proxy组件,没有用k8s自己的。
如果应用比较复杂,有多个微服务合作,每个微服务占一个容器,并且都是多实例的。这些工作调度谁来做?
答:这些都是由我们的路由模块负责的,多个微服务可以通过内网域名访问,也是多实例负载均衡的。
是在哪里配置?内网域名由谁来管?是内建DNS服务吗?
答:嗯,内建dns服务
页面上新建的存储,挂载到MySQL。现在的页面上存储只有格式化功能,不能查看里面的内容,我想下载里面的内容用什么办法?
答:查看容器内容,可以通过简单的web console上执行命令查看,下载、备份、调整大小等等很多存储相关的功能还在开发中。
阅读全文
收起全文