随笔分类 - 云原生devops
云原生devops主要介绍使用jenkins,tekton等工具打造基于docker和kubernetes的devops平台
摘要:"系列目录" 动态准入控制器文档介绍了如何使用标准的,插件式的准入控制器.但是,但是由于以下原因,插件式的准入控制器在一些场景下并不灵活: 它们需要编译到kube apiserver里 它们仅在apiserver启动的时候可以配置 准入钩子(Admission Webhooks 从1.9版本开始)解
阅读全文
摘要:"系列目录" 什么是pod安全策略 pod安全策略是集群级别的用于控制pod安全相关选项的一种资源. 定义了一系列pod相要进行在系统中必须满足的约束条件,以衣一些默认的约束值.它允许管理员控制以下方面内容 | Control Aspect | Field Names | | | | | 以特权运行
阅读全文
摘要:"系列目录" 使用docker创建只读文件系统 容器化部署对应用的运维带来了极大的方便,同时也带来一些新的安全问题需要考虑.比如黑客入侵到容器内,对容器内的系统级别或者应用级别文件进行修改,会造成难以估量的损失.(比如修改hosts文件导致dns解析异常,修改web资源导致网站被嵌入广告,后端逻辑被
阅读全文
摘要:"系列目录" 问题描述:测试环境由于异常断电导致服务器重启一后,有一个节点的状态一直是 .通过 没有错误日志输出.通过 查看日志信息,发现有输出日志 这样的错误.经过排查这是由 于 的 "一个bug造成" 的.截至目前该问题已经修复,但是新的版本还没有发布. 目前的解决办法是先把这个节点从集群中删除
阅读全文
摘要:"系列目录" 问题描述:周五写字楼整体停电,周一再来的时候发现很多pod的状态都是 ,经排查是因为测试环境kubernetes集群中的有些节点是PC机,停电后需要手动开机才能起来.起来以后节点恢复正常,但是通过 查看日志不断有以下错误 我们通过cd进入 目录,使用ls查看 可以看到,错误信息里的po
阅读全文
摘要:"系列目录" 案例现场: 测试环境集群本来正常,突然间歇性地出现服务不能正常访问,过一会儿刷新页面又可以正常访问了.进入到服务所在的pod查看输出日志并没有发现异常.使用 命令正好发现一个节点是 状态 为了方便观察,使用 来观测一段时间,发现 节点不断的在Ready和NotReady状态之间切换(使
阅读全文
摘要:"系列目录" 由由种种原因,在安装或者使用kubernetes的过程中,可能会遇到各种各样的问题.本篇按照官网的介绍罗列出一些常见的故障,以帮助快速解决一些常见的错误. 安装赛程中出现ebtables or some similar executable not found 在执行 中出现以下警告
阅读全文
摘要:"系列目录" 前面两节我们由浅入深介绍了不少kubernetes管理比较常用的命令.本节我们通过案例讲解一些需要更为复杂的操作才能完成的命令. 选择一个deployment下的所有pod 前面讲到过,kubernetes的deployment和pod的命令上有关联关系,我们可以通过查看deploym
阅读全文
摘要:"系列目录" 上一节我们介绍了一些基本的命令,这一节我们介绍一些更为复杂的命令. pod排序 使用kubectl get pod获取pod资源默认是以名称排序的,有些时候我们可能希望按其它顺序排序.比如说我们想要按照节点来排序.以便可以看到不同的节点上都运行着哪些pod. 这个需求可以使用linux
阅读全文
摘要:"系列目录" 我们把集群管理命令分为两个部分,第一部分介绍一些简单的,但是可能是非常常用的命令以及一些平时可能没有碰到的技巧.第二部分将综合前面介绍的工具通过示例来讲解一些更为复杂的命令. 列出集群中所有pod 使用 获取的一般是默认名称空间的信息(可以在配置文件中指定默认全称空间,如果没有指定则默
阅读全文
摘要:"系列目录" 首先要声明,这里的jq并不是批前端框架里的jquery,而是一个处理json的命令行工具. jq工具相比yq,它更加成熟,功能也更加强大,主要表现在以下几个方面 支持递归查找(我点对我们平时查看文件很方便) 支持条件过滤 支持控制语句 支持数组范围索引 这个工具在macos和windo
阅读全文
摘要:"系列目录" 前面我们讲解过使用go template或者jsonpath格式(kubectl get 资源 output go tempalte(或jsonpath))来截取属性的值,并且我们比较了使用它们较使用grep,awk等字符串截取在准确获取属性值方面的优势.然而更多时候我们是查看属性,使
阅读全文
摘要:"系列目录" 前面一节我们介绍了使用go template截取属性,go template功能非常强大,可以定义变量,使用流程控制等,这是jsonpath所不具备的.然而,jsonpth使用的时候更为灵活.通过上一节我们发现,我们想要找到某个具体属性,必须从最外层一层层向内找到具体属性,这对于嵌套层
阅读全文
摘要:"系列目录" 在学习docker的时候,大家可能经常看到不少示例在docker run的时候指定环境变量(比如wordpress的docker示例就是通过环境变量传入账户和密码到容器内).这里之所以经常用到环境变量,主要基于以下两点原因 容器内的操作往往都是自动化的,而不像在windows会有图形界
阅读全文
摘要:"系列目录" 在kubernetes里,pod,service,rs,rc,deploy,resource等对象都需要使用yaml文件来创建,很多时候我们都是参照照官方示例或者一些第三方示例来编写yaml文件以创建对象.虽然这些示例很有典型性和代表性,能够满足我们大部分时候的需求,然而这往往还是不够
阅读全文
摘要:"系列目录" 上节提到过,QoS影响pod的调度和驱离,本节讲解如何通过配置pod来使它自动被赋予一个QoS 实际上是pod的配置达到一定标准,则kubernetes会自动为其它添加一个QoS类 QoS类型 当一个pod被创建,kubernetes会赋予它们以下类型的值之一 Guaranteed B
阅读全文
摘要:"系列目录" kubernetes提供了 和`readinessProbe(就绪性探针)`对容器的健康性进行检测,当然这仅仅简单的关于可用性方面的探测,实际上我们不仅仅要对容器进行健康检测,还要对容器内布置的应用进行健康性检测,这不在本篇讨论之列,后面会有专门篇幅来讨论结合APM工具,grafana
阅读全文
摘要:"系列目录" 首先我们创建一个名称空间 创建资源配额 通过命令创建它 查看它的详细信息: 资源配额对名称空间quota mem cpu example增加了以下限制: 每一个pod都必须内存申请/限制,cpu申请/限制 这里是针对上面的示例来说的,因为示例中配额同时配置了这4个选项,因此pod必须声
阅读全文
摘要:"系列目录" LimitRange从字面意义上来看就是对范围进行限制,实际上是对cpu和内存资源使用范围的限制 前面我们讲到过资源配额,资源配额是对整个名称空间的资源的总限制,是从整体上来限制的,而LimitRange则是对pod和container级别来做限制的 由于LimitRange是基于名称
阅读全文
摘要:"系列目录" 本篇将介绍如何使用 处理资源耗尽的情况 当可用的计算机资源非常低的时候,kubelet仍然要保证节点的稳定性.当处理不可压缩的计算机资源(比如内存或磁盘空间)时,这尤其重要,当这些资源被耗尽时,节点将变得不稳定 驱离策略 kubelet会积极的监视并阻止可用计算机资源耗尽.这种情况下,
阅读全文