品尝阿里云容器服务:食用注意事项

1、修改集群负载均衡的“域名设置”时,需要重新部署 acsrouting (容器服务内置的路由服务),不然访问时会出现 “503 Service Unavailable. No server is available to handle this request.” 错误。

2、使用集群的负载均衡,只需在编排文件的 labels 中添加 aliyun.routing.port_80 ,千万不要添加 aliyun.lb.port_80: tcp://lb-xxxxxxxx:80 ,不然删除“应用”时会把集群的负载均衡解绑。

3、集群的负载均衡默认会配置为四层负载均衡,也可以改为七层负载均衡,后端监听端口依然是9080,只需把监听协议改为 http/https ,但需要注意的是健康检查的配置,检查路径需要设置为 /haproxy-monitor ,这是针对 ascrouting 的健康检查。

4、acsrouting 在路由时会将请求转发到对应容器的80端口,所以容器内的应用程序需要监听在80端口。

5、编排文件不支持 build 与 dockerfile 标签。

6、如果在编排文件中有对 volumes 中的文件进行修改的操作,“重新部署”应用时会不起作用,需要使用“变更配置”。

7、使用NAS数据卷在编排文件中添加 volumes 配置时,注意不要用卷名(虽然帮助文档是这么说的),要用挂载点路径,比如:- /mnt/acs_mnt/nas/appsettings:/appsettings 。

8、“Docker镜像仓库”的镜像构建功能不支持脚本,只支持单个 dockerfile ,无法实现基于不同镜像对代码进行 docker run 与 docker build (差点因此食物中毒)。

9、编排文件中填写的service名称并不是实际的服务名称,实际的服务名称是“应用名称_service名称”。

10、“重新部署”或者“变更配置”时,如果镜像不变,有时容器不会被重启,可通过“重新部署”+“变更配置”联合操作临时解决这个问题。

11、配置基于域名的路由时,如果域名有三级(比如 test.q.cnblogs.com),要写完整主机名(aliyun.routing.port_80: test.q.cnblogs.com);如果写“aliyun.routing.port_80: test.q”,路由地址将是 test.q ,没有后缀。

12、在集群中添加已有节点,该节点不会被自动添加集群所绑定 RDS 的白名单中,需要自己手动添加。

13、有时会出现路由错乱的严重问题,请求被随机转发到集群中的任一容器,目前唯一的临时解决方法是删除集群上的所有应用并重建(就如同你点的是茶香鸡,上来的却是外婆红烧肉,而唯一的解决方法竟然是你要重新点菜)。

14、建议集群中每个节点的内存配置不低于4G,在内存低于4G的情况下很容易出现节点死机问题。我们被这个问题折腾的差点崩溃,后来换成5个2核4G的节点才稳定下来(就如饭店包厢有最低消费)。

15、有时系统应用(比如acslogging、acsrouting、acsvolumedriver)会无缘无故地处于失败状态,重新部署一下即可。

7月18日更新:因阿里云容器服务路由错乱的问题而食物中毒,被逼上自建 docker swarm 的梁山。

posted @ 2017-06-22 16:58 dudu 阅读(...) 评论(...) 编辑 收藏