随笔分类 -  Kubernetes

摘要:Taints和Tolerations(污点和容忍) 在 "《K8S之节点亲和性》" 中,我们说到的的NodeAffinity节点亲和性,是在pod上定义的一种属性,使得Pod能够被调度到某些node上运行。Taint刚好相反,它让Node拒绝Pod的运行。 Taint需要与Toleration配合使 阅读全文
posted @ 2018-05-28 18:41 breezey 阅读(9314) 评论(1) 推荐(1)
摘要:[toc] Pod Affinity 通过 "《K8S调度之节点亲和性》" ,我们知道怎么在调度的时候让pod灵活的选择node,但有些时候我们希望调度能够考虑pod之间的关系,而不只是pod与node的关系。于是在kubernetes 1.4的时候引入了pod affinity。 为什么有这样的需 阅读全文
posted @ 2018-05-28 18:40 breezey 阅读(3901) 评论(0) 推荐(0)
摘要:Node Affinity Affinity 翻译成中文是“亲和性”,它对应的是 Anti Affinity,我们翻译成“互斥”。这两个词比较形象,可以把 pod 选择 node 的过程类比成磁铁的吸引和互斥,不同的是除了简单的正负极之外,pod 和 node 的吸引和互斥是可以灵活配置的。 Aff 阅读全文
posted @ 2018-05-28 18:38 breezey 阅读(21524) 评论(0) 推荐(0)
摘要:Kubernetes 调度简介 除了让 kubernetes 集群调度器自动为 pod 资源选择某个节点(默认调度考虑的是资源足够,并且 load 尽量平均),有些情况我们希望能更多地控制 pod 应该如何调度。比如,集群中有些机器的配置更好( SSD,更好的内存等),我们希望比较核心的服务(比如说 阅读全文
posted @ 2018-05-28 18:37 breezey 阅读(3353) 评论(0) 推荐(0)
摘要:Kubelet Node Allocatable Kubelet Node Allocatable用来为Kube组件和System进程预留资源,从而保证当节点出现满负荷时也能保证Kube和System进程有足够的资源。 目前支持cpu, memory, ephemeral-storage三种资源预留 阅读全文
posted @ 2018-05-28 15:17 breezey 阅读(2805) 评论(0) 推荐(0)
摘要:[toc] k8s挂载Ceph RBD k8s挂载Ceph RBD有两种方式,一种是传统的PV&PVC的方式,也就是说需要管理员先预先创建好相关PV和PVC,然后对应的deployment或者replication来挂载PVC使用。而在k8s 1.4以后,kubernetes提供了一种更加方便的动态 阅读全文
posted @ 2018-04-15 21:11 breezey 阅读(9859) 评论(0) 推荐(0)
摘要:[toc] Node的扩缩容 在实际生产系统中经常遇到服务器容量不足的情况,这时候就需要购买新的服务器,对应用系统进行水平扩展以实现扩容。 在k8s中,对一个新的node的加入非常简单,只需要在node节点上安装docker、kubelet和kube proxy服务,然后将kubelet和kube 阅读全文
posted @ 2018-04-15 21:05 breezey 阅读(15600) 评论(0) 推荐(0)
摘要:[toc] 滚动更新简介 当kubernetes集群中的某个服务需要升级时,传统的做法是,先将要更新的服务下线,业务停止后再更新版本和配置,然后重新启动并提供服务。如果业务集群规模较大时,这个工作就变成了一个挑战,而且先全部了停止,再逐步升级的方式会导致服务较长时间不可用。kubernetes提供了 阅读全文
posted @ 2018-04-12 20:01 breezey 阅读(1325) 评论(0) 推荐(0)
摘要:Deployment相对于RC的优势 RS与Deployment主要用于替代RC。RS的全称为Replica Set。相对于RC,RS与Deployment的优势如下: RC只支持基于等式的selector,如env=dev或者environment!=qa。但在RS中,还支持新的基于集合的sele 阅读全文
posted @ 2018-04-12 19:59 breezey 阅读(6264) 评论(0) 推荐(0)
摘要:[toc] 简介 在很多应用场景中,应用在启动之前都需要进行如下初始化操作: 等待其他关联组件正确运行(例如数据库或某个后台服务) 基于环境变量或配置模板生成配置文件 从远程数据库获取本地所需配置,或者将自身注册到某个中央数据库中 下载相关依赖包,或者对系统进行一些预配置操作 kubernetes 阅读全文
posted @ 2018-04-12 19:57 breezey 阅读(2287) 评论(0) 推荐(0)
摘要:[toc] 说明 我们知道,每个Pod在成功创建出来之后,都会被系统分配唯一的名字、IP地址,并且处于某一个namespace中,那么我们如何在pod的容器内获取pod的这些重要信息呢? 答案就是使用Downward API。 Downward API可以通过以下两种方式将pod信息注入容器内部: 阅读全文
posted @ 2018-04-12 19:48 breezey 阅读(1101) 评论(0) 推荐(0)
摘要:使用containerdns的理由 先说下我们为什么要使用containerdns,事实上该项目开源时间并不长,而且没有完善的社区,也没有丰富的文档。说白了,我们选中它,是因为它刚好切合我们的需求。 目前市面上支持kubernetes的开源dns并不多,除了containerdns,就只有skydn 阅读全文
posted @ 2017-12-13 16:13 breezey 阅读(1338) 评论(0) 推荐(0)
摘要:使用背景最近一直在准备k8s上线事宜,目前已经在测试环境中全面部署并通过压力测试环境检验。离正式上线基本只剩下时间问题。我们目前测试环境中的容器负载均衡大量使用到了nginx,就是借助了ngx_upstream_jdomain模块,从而放弃了k8s官方的ingress。 在这里简单说下k8s的ing 阅读全文
posted @ 2017-09-11 16:46 breezey 阅读(5652) 评论(2) 推荐(0)
摘要:在之前的博文中,我们演示过如何通过ceph来实现kubernetes的持久存储,以使得像mysql这种有状态服务可以在kubernetes中运行并保存数据。这看起来很美妙,然而在实际的生产环境使用中,通过分布式存储来实现的磁盘在mysql这种IO密集性应用中,性能问题会显得非常突出。所以在实际应用中 阅读全文
posted @ 2017-03-20 11:12 breezey 阅读(16265) 评论(2) 推荐(1)
摘要:我们知道使用kubernetes的rc或者rs创建的pod,kubernetes会实时监控其健康状态,如果发现pod挂掉以后,会自动启动一个新的,让pod的数量始终保持在指定的replicas上。那么问题就来了,在有些场景下,我们就是想要运行一些容器执行某种特定的任务,任务一旦执行完成,容器也就没有 阅读全文
posted @ 2017-03-19 22:34 breezey 阅读(3644) 评论(0) 推荐(0)
摘要:这篇博文,我们来说一说,关于在kubernetes的pod中自定义配置的问题。 我们知道,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如说在web的程序中,需要连接数据库,缓存甚至是队列等等。而我们的一个应用程序从写第一行代码开始,要经历开发环境、测试环境、预发布环境只到最终的线上环境。而每 阅读全文
posted @ 2017-03-19 20:25 breezey 阅读(42689) 评论(0) 推荐(2)
摘要:在上一篇博文,我们通过kubernetes的devlopment和service完成了sonarqube的部署。看起来已经可用,但是仍然有一个很大的问题。我们知道,像mysql这种数据库是需要保存数据而且不能让数据丢失的。而容器恰恰是一旦退出,所有数据都会丢失。我们的mysql-sonar容器一旦重 阅读全文
posted @ 2017-03-16 13:06 breezey 阅读(2726) 评论(0) 推荐(0)
摘要:前面几篇博文我们一直在说kubernetes的基础环境的安装及部署。在基础环境部署完成以后,我们开始尝试使用kubernetes来管理我们的应用。本篇博文通过一个简单的示例来向大家展示如何通过deployment和service来部署一个应用。我们以部署一个sonarqube为例。 sonarqub 阅读全文
posted @ 2017-03-16 10:54 breezey 阅读(1003) 评论(0) 推荐(0)
摘要:Heapster是kubernetes集群监控工具。在1.2的时候,kubernetes的监控需要在node节点上运行cAdvisor作为agent收集本机和容器的资源数据,包括cpu、内存、网络、文件系统等。在新版的kubernetes中,cAdvisor被集成到kubelet中。通过netsta 阅读全文
posted @ 2017-03-15 21:58 breezey 阅读(3758) 评论(0) 推荐(0)
摘要:配置kubernetes的dashboard相对简单。同样的,只需要从源码中获取到dashboard-controller.yaml及dashboard-service.yaml文件,稍加修改即可: 修改dashboard-controller.yaml如下: dashboard-service.y 阅读全文
posted @ 2017-03-15 17:20 breezey 阅读(4721) 评论(2) 推荐(0)