专栏名称: 聊聊架构
聊聊架构
目录
相关文章推荐
51好读  ›  专栏  ›  聊聊架构

事非经过不知难,京东Kubernetes的定制与优化

聊聊架构  · 公众号  · 架构  · 2018-06-29 08:00

正文

请到「今天看啥」查看全文


labels:

system: jdos-sys

app: jdos-app

group: jdos-group-01

env: test

region: china

groupconfig: 1115fa3e-8a6c-409f-afea-e2f007da2b0e

name: jdos-pod-name

lb -status: active

system/app/group 用以标识其管理层级,region/env 用以标示其所在的集群和发布的环境,group-config 用以标示其使用的分组配置版本,name 用以标识该容器的名称,lb-status 用以标识其在负载均衡中的状态。

requests 和 limits 的理解

在 Kubernetes 中创建 pod 时,我们通常会指定 requests 和 limits,以对资源加以限制。其中 requests 的设置主要会影响 kube-scheduler 的资源调度,而 limits 的值则会影响 pod 所属物理机上的 cgroup 的设置,对 pod 的资源使用做实际的限制。那么 limits 相对来说代表了一个容器可以使用的资源上限,而 requests 代表了容器需要的最小资源。

在用户申请时,用户其实对其容器的资源需求并不能准确把握,因此用户很难一次就设置一个较好的规格。但是用户对其容器需求的资源上限,可以通过压测较好的获得。

我们提供了规格配置的功能,用以供用户进行选择。用户可以通过规格配置的设置,来设置容器的资源上限,也就是 limit 的值。而 request 的值,则会根据容器运行的情况,由系统自动做出调整。

kubernetes 的定制与优化
关于版本

开源项目的一大特点是迭代较快。半年甚至几个月就发布新的一个大的版本。如果跟随社区进行版本的升级,不仅要耗费大量的人力物力用于迁移,而且版本之间可能并不兼容,也容易对现有的容器产生影响。Kubernetes 版本不断进行,这其中会有老的 bug 被修复,也可能会有新的 bug 被引入。这些对于社区都是很正常的。但是对于生产环境来说,又是存在着较大的风险。

根据我们使用 OpenStack 的经验,一种较好的方式是选定一个较为稳定的版本,在其上进行充分的测试,而后基于此版本进行定制研发。大版本的升级需要更加充分的测试,特别是兼容性的测试。我们最初使用的是 1.3 版本,后来升级到目前的 1.6 版本,并将其作为主力版本。已有的集群也都陆续升级到了该版本上。同时,对于社区也需保持一定的关注,对于该版本上可能存在的 bug 和之后有较好的 feature,也陆续合入到定制的版本中。







请到「今天看啥」查看全文