Kubernetes taint & toleration

2019-03-09
阅读 4 分钟
4.1k
前一篇文章讲解了 Kubernetes 亲和性调度, 所涉及的内容都是描述 pod 的属性,来声明此 pod 希望调度到哪类 nodes。而本文介绍的 Taint(污点) 刚好相反,它是node 的一个属性,允许 node 主动排斥 pod 的调度。对应的 k8s 又给 pod 新增了配套属性 toleration(容忍) ,用于表示这些 pod 可以(但不强制要求)被调度到具...

Kubernetes 亲和性调度

2019-03-09
阅读 8 分钟
7.3k
Kubernetes 支持限制 Pod 在指定的 Node 上运行,或者指定更倾向于在某些特定 Node 上运行。有几种方式可以实现这个功能:

Kubernetes 调度器浅析

2019-03-09
阅读 5 分钟
3.8k
Kubernetes 是 Google 开源的容器集群管理系统(谷歌内部:Borg),而今天要介绍的 kube-scheduler 是 k8s 系统的核心组件之一,其主要职责就是通过自身的调度算法,为新创建的 Pod 寻找一个最合适的 Node。主要包含如下几个步骤:

Kubernetes 核心概念

2018-09-26
阅读 4 分钟
2.7k
Kubernetes 有各类资源对象来描述整个集群的运行状态。这些对象都需要通过调用 kubernetes api 来进行创建、修改、删除,可以通过 kubectl 命令工具,也可以直接调用 k8s api,或者使用对象语言的客户端库(例如:golang , pythion )。

深入K8S Job(三):cronJob controller源码分析

2018-09-23
阅读 9 分钟
4.9k
cronJob controller 的实现比较简单,使用 Cron - Wikipedia 的方法,确定调度规则,底层的调度对象就是依赖了 job,它不会去检查任何 Pod。

深入K8S Job(二):job controller源码分析

2018-09-23
阅读 17 分钟
6.3k
k8s version: v1.11.0author: lbl167612@alibaba-inc.com 源码流程图 JobController 结构 路径:pkg/controller/job/job_controller.go {代码...} startJobController() 路径:cmd/kube-controller-manager/app/batch.go startJobController() 是启动 job controller 的入口函数,该函数会注册到 kube-controller-manage...

深入K8S Job(一):介绍

2018-09-23
阅读 2 分钟
11.1k
介绍 Kubernetes有两个概念跟job有关: Job: 负责批量处理短暂的一次性任务,仅执行一次,并保证处理的一个或者多个Pod成功结束。 CronJob: 负责定时任务,在指定的时间周期运行指定的任务。 Job Job用于批量处理短暂的一次性任务,并保证指定数量的Pod成功结束。K8S支持以下几种方式: 非并行Job: 通常只运行一个Pod,Pod...

Kubernetes 架构与设计

2018-09-23
阅读 4 分钟
4.5k
官方说明:Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.It groups containers that make up an application into logical units for easy management and discovery.

Kubernetes监控之Heapster源码分析

2017-03-28
阅读 32 分钟
5.1k
Heapster是Kubernetes下的一个监控项目,用于进行容器集群的监控和性能分析。基本的功能及概念介绍可以回顾我之前的一篇文章:《Kubernetes监控之Heapster介绍》。随着的Heapster的版本迭代,支持的功能越越来越多,比如新版本支持更多的后端数据存储方式:OpenTSDB、Monasca、Kafka、Elasticsearch等等。看过低版本(如v...

Kubernetes1.5源码分析(四) apiServer资源的etcd接口实现

2017-03-18
阅读 14 分钟
5.4k
k8s的各个组件与apiServer交互操作各种资源对象,最终都会落入到etcd中。k8s为所有对外提供服务的Restful资源实现了一套通用的符合Restful要求的etcd操作接口,每个服务接口负责处理一类(Kind)资源对象。这些资源对象包括pods、bindings、podTemplates、RC、Services等。

Kubernetes1.5源码分析(三) apiServer之go-restful的使用

2017-03-16
阅读 20 分钟
5.3k
go-restful是用于构建REST-style web服务的golang包。它是出现时因为一个javaer在golang中没找到顺手的REST-based服务构建包,所以就按照他在java里常用的JAX-RS的设计,在golang中造了一个轮子。

Kubernetes1.5源码分析(二) apiServer之资源注册

2017-03-15
阅读 38 分钟
7.2k
k8s里面有各种资源,如Pod、Service、RC、namespaces等资源,用户操作的其实也就是这一大堆资源。但这些资源并不是杂乱无章的,使用了GroupVersion的方式组织在一起。每一种资源都属于一个Group,而资源还有版本之分,如v1、v1beta1等。k8s目前正在使用的API groups:

Kubernetes1.5源码分析(一) apiServer启动分析

2017-03-14
阅读 22 分钟
4.8k
apiserver是K8S最重要的组成部分,不论是命令操作还是通过remote API进行控制,实际都需要经过apiserver。apiserver是k8s系统中所有对象的增删改查盯的http/restful式服务端,其中盯是指watch操作。数据最终存储在分布式一致的etcd存储内,apiserver本身是无状态的,提供了这些数据访问的认证鉴权、缓存、api版本适配转...

Kubelet源码分析(四) diskSpaceManager

2017-02-13
阅读 6 分钟
2.3k
前一节介绍了Garbage Collection,涉及到的策略基本与磁盘资源有关。对于k8s集群如何高效的利用各种资源,也非常值得我们涉猎学习。管理好资源才能更好的创建服务,所以这节继续学习kubelet的diskSpaceManager。diskSpaceManager顾名思义就是管理磁盘空间的,实际它的实现较为简单,就是给kubelet所在的节点预留磁盘空间...

Kubelet源码分析(三):Garbage Collection

2017-02-13
阅读 16 分钟
3.9k
在分析kubelet启动流程时,老是会碰到各类GC,这里单独提出来做下较详细的分析。kubelet's Garbage Collection主要由两部分组成:

Kubelet源码分析(二): DockerClient

2017-02-13
阅读 10 分钟
3k
而kubeletConfig的初始化是在UnsecuredKubeletConfig()接口中进行的,需要依赖最开始组建的kubeletServer配置结构,该kubeletServer结构中有DockerEndpoint字符串成员:

Kubelet源码分析(一):启动流程分析

2017-02-06
阅读 32 分钟
9.7k
在Kubernetes急群众,在每个Node节点上都会启动一个kubelet服务进程。该进程用于处理Master节点下发到本节点的任务,管理Pod及Pod中的容器。每个Kubelet进程会在APIServer上注册节点自身信息,定期向Master节点汇报节点资源的使用情况,并通过cAdvise监控容器和节点资源。

Kubernetes监控之Heapster介绍

2016-12-06
阅读 3 分钟
13.7k
Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS。Kubernetes有个出名的监控agent---cAdvisor。在每个kubernetes Node上都会运行cAdvisor,它会收集本机以及容器的监控数据(cpu,memory,filesystem,network,uptime)。在较新的版本中,K8S已经将cAdvisor功能集成到kubelet组件中。每个Node节点可以直...

Kubernetes监控之InfluxDB

2016-12-05
阅读 21 分钟
6.6k
InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。InfluxDB特征: