From cc92231b2b6981cd73089f706f9ab31da1e9a865 Mon Sep 17 00:00:00 2001 From: rootsongjc Date: Mon, 12 Mar 2018 17:45:32 +0800 Subject: [PATCH] add scheduling --- SUMMARY.md | 10 ++++++---- concepts/scheduling.md | 12 ++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 concepts/scheduling.md diff --git a/SUMMARY.md b/SUMMARY.md index c05b88f0d..2d678cb3b 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -20,10 +20,11 @@ - [CRI - Container Runtime Interface(容器运行时接口)](concepts/cri.md) - [CNI - Container Network Interface(容器网络接口)](concepts/cni.md) - [CSI - Container Storage Interface(容器存储接口)](concepts/csi.md) +- [Kubernetes中的网络]() - [Kubernetes中的网络解析——以flannel为例](concepts/networking.md) - [Kubernetes中的网络解析——以calico为例](concepts/calico.md) - - [资源对象与基本概念解析](concepts/objects.md) - - [Pod状态与生命周期管理](concepts/pod-state-and-lifecycle.md) +- [资源对象与基本概念解析](concepts/objects.md) +- [Pod状态与生命周期管理](concepts/pod-state-and-lifecycle.md) - [Pod概览](concepts/pod-overview.md) - [Pod解析](concepts/pod.md) - [Init容器](concepts/init-containers.md) @@ -32,7 +33,7 @@ - [Pod Hook](concepts/pod-hook.md) - [Pod Preset](concepts/pod-preset.md) - [Pod中断与PDB(Pod中断预算)](concepts/pod-disruption-budget.md) - - [集群配置](concepts/cluster.md) + - [集群资源管理](concepts/cluster.md) - [Node](concepts/node.md) - [Namespace](concepts/namespace.md) - [Label](concepts/label.md) @@ -63,10 +64,11 @@ - [Volume](concepts/volume.md) - [Persistent Volume(持久化卷)](concepts/persistent-volume.md) - [Storage Class](concepts/storageclass.md) - - [扩展](concepts/extension.md) + - [集群扩展](concepts/extension.md) - [使用自定义资源扩展API](concepts/custom-resource.md) - [Aggregated API Server](concepts/aggregated-api-server.md) - [APIService](concepts/apiservice.md) +- [资源调度](concepts/scheduling.md) ### 用户指南 diff --git a/concepts/scheduling.md b/concepts/scheduling.md new file mode 100644 index 000000000..90d475eb9 --- /dev/null +++ b/concepts/scheduling.md @@ -0,0 +1,12 @@ +# 资源调度 + +Kubernetes作为一个容器编排调度引擎,资源调度是它的最基本也是最重要的功能,这一节中我们将着重讲解Kubernetes中是如何做资源调度的。 + +Kubernetes中有一个叫做`kube-scheduler`的组件,该组件就是专门监听`kube-apiserver`中是否有还未调度到node上的pod,再通过特定的算法为pod指定分派node运行。 + +Kubernetes中的众多资源类型,例如Deployment、DaemonSet、StatefulSet等都已经定义了Pod运行的一些默认调度策略,但是如果我们细心的根据node或者pod的不同属性,分别为它们打上标签之后,我们将发现Kubernetes中的高级调度策略是多么强大。当然如果要实现动态的资源调度,即pod已经调度到某些节点上后,因为一些其它原因,想要让pod重新调度到其它节点。 + +考虑以下两种情况: + +- 集群中有新增节点,想要让集群中的节点的资源利用率比较均衡一些,想要将一些高负载的节点上的pod驱逐到新增节点上,这是kuberentes的scheduer所不支持的,需要使用如[rescheduler](https://github.com/kubernetes-incubator/descheduler)这样的插件来实现。 +- 想要运行一些大数据应用,设计到资源分片,pod需要与数据分布达到一致均衡,避免个别节点处理大量数据,而其它节点闲置导致整个作业延迟,这时候可以考虑使用[kube-arbitritor](https://github.com/kubernetes-incubator/kube-arbitrator)。 \ No newline at end of file