Mesos 1.0.x 版本新的功能或改动
Mesos 1.0.x 版本新的功能或改动:
- 在 Mesos 1.0 以前,以
SSL_为前缀的环境变量用于控制 libprocess 的 SSL。然而这些变量我们发现会与一些库或者程序(比如:openssl, curl 等)产生冲突。所以在Mesos 1.0 这个版本中, 将用LIBPROCESS_SSL_*来代替SSL_* - 在 Mesos 1.0 以前,Mesos agent 会递归地改变挂载到容器中的持久卷的所属属性,在 Mesos 1.0 中,将改成非递归方式。
- Mesos 1.0 在 ContainerConfig 中删除了驼峰式大小写的 protobuf 字段。具体可见:(
include/mesos/slave/isolator.proto)
- required ExecutorInfo executorInfo = 1;
- optional TaskInfo taskInfo = 2;
- 默认情况下 executors 将不再从 Agent 中继承环境变量。但我们可以显示的在 Agent 上,用
--executor-environment-variablesflag 来指定哪些环境变量可以被 executor 继承。 Mesos 生成的环境变量比如:$MESOS_, $LIBPROCESS_将不会受影响。如果在 executor 中未指定 $PATH,将使用默认的值/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - 资源分配器 (allocator) metric 名字发生改变,由原先的
allocator/event_queue_dispatches变成了allocator/mesos/event_queue_dispatches - 废弃
--docker_stop_timeout这个配置项。 - 将使用 ExecutorInfo.labels 字段来代替 ExecutorInfo.source
- 废弃所有与 slave 相关的叫法,统一叫成 agent,在 WebUI 中,会废弃包含
slave关键字的 sandbox 连接。在 mesos-cli 上将看不到 slave 这个子命令项了。 - 今后 mesos 不会在为 agent 指定
work_dir这个 flag 的默认值,所以一定要指定,否则 agent 会立即退出。 - 使用 Json 格式的证书文件,废弃文本形式的。
- 之前如果使用了持久卷,在销毁该卷的时候,不会把其上的数据删除掉,这个功能现在已经实现了,也即会一并删除。
- Mesos 1.0 修改了如下的 endpoints 的 HTTP 状态返回码,即将
200 OK改成202 Accepted
- /reserve
- /unreserve
- /create-volumes
- /destroy-volumes
- 为
Scheduler API和v1 Scheduler HTTP API中的CommandInfo.URI新添加了output_file字段 - 为向后兼容, 将
scheduler.proto和executor.proto中的Call与Event枚举类型由required修改成了optional。 - 在容器资源使用信息中添加了非终端任务元数据。
- 删除
/observeHTTP endpoint - Mesos 1.0 将废弃
SET_QUOTA_WITH_ROLE和DESTROY_QUOTA_WITH_PRINCIPAL操作,采用UPDATE_QUOTA_WITH_ROLE来替代。同时,也用UpdateQuotaACL 来替代SetQuota和RemoveQuotaACL。 另外,引进了新的GET_QUOTA_WITH_ROLE操作和get_quotasACL 用于控制哪些 principal 可查询给定的 roles 的 quota 状态。 这个将会对本地授权者产生如下影响:
update_quotas不能与set_quotas或remove_quotas同时使用,否则会出错。- 如果之前使用了
set_quotas或者remove_quotas那么 operators 必须先升级 mesos binary, 之后这些操作才能起作用。 - 当确定升级完成后,operator 应该用
update_quotas来代替set_quotas和remove_quotas - 在升级完成后, operator 可以用
get_quotas来控制哪些 principal 可查询给定的 roles 的 quota 状态
- Mesos 1.0 包含了几个关于 authorizer 的变动,特别影响到了 autorizer modules:
- authorizer 接口被重构了用于去耦合 ACL 的定义语言。此外,也增加了获取
ObjectApprover的选项。ObjectApprover可以同步检查给定Object的授权,因此可以用于授权若干或大量Objects,他们需要采用基于授权的 request 来复制。 注意:这个对于授权模块来说是一个 breaking change - 基于 HTTP endpoint 的授权可以使 operator 限制哪些集群状态可以让授权用户看到。比如
/state,operator 可以让授权的用户只看到正在运行的 frameworks, tasks, or executors 的子状态。 - 在
autorization:Request的 protobuf 中,subject和object属性改成了可选项。如果没有设置这些,则只允许有ANY语义的 ACL 请求。注意:这个对于授权模块来说是一个 semantic change
- authorizer 接口被重构了用于去耦合 ACL 的定义语言。此外,也增加了获取
- Mesos 为 authorization 提供了若干 HTTP endpoints. 注意:其中的一些 HTTP endpoint 是用于 Web UI 的,因此在有授权开启的集群中需要为 Web UI 设置 ACL 属性。
- 粗粒度授权的 endpoints 有:
- /files/debug
- /logging/toggle
- /metrics/snapshot
- /slave(id)/containers
- /slave(id)/monitor/statistics
- 如果在定义 ACLs 时使用了 permissive:false 那么列出的这些 HTTP endpoints, 将会停止工作,除非为 get_endpoints 操作定义了 ACLs。
浙公网安备 33010602011771号