如何控制每次更新操作只触发最后一个replicaSet生效先执行一个指令
kubelet rollout pause
这个指令的意思是暂停deployment,所以我们对其进行修改也不会触发deployment滚动更新
修改完之后,再执行一条指令
kubelet rollout resume
即可恢复, 这样就只会触发最后一个更新了
如何设置deployment的保留历史个数deployment有一个对象字段, pec.revisionHistoryLimit,即是历史保留数量,即可以回滚的版本
123456apiVersion: v1kind: Podmetadata annotations: "initializer.kubernetes.io/envoy": "true" ...
在metadata中加一个类似于这样的annotation就可以了
Local Persistent Volume是用来做什么的可以实现pod在本地的持久化存储, 而不需要依赖远程存储服务来提供持久化 , 即使这个pod再次被调度的时候 , 也能被再次调度到local pv所在的node
出现原因既然有了hostPath Volume这种方式 , 为什么还要 再搞一个local PV呢 , 这是因为hostPath Volume这种方式并不适合在线上环境使用 , 原因如下:
如果使用hostPath Volume这种方法 , 还得选择节点来调度
需要事先创建好目录 , 而且还得注意权限的配置, 比如root用户创建的目录 , 普通用户就用不了了
不...
构建企业级云服务生态指南—-CNCF云原生生态系统大览(CNCF Cloud Native Interactive Landscape)
现在企业越来越多的用容器来部署自己的服务 , 有点企业早就架构了微服务 , 有的还在慢慢转向微服务 , 而到底用什么软件来部署 , 用什么软件比较好, 大家都是一头混乱 , 因为现在市面上的软件很多 , 也很繁杂 , 一天一个样子 , 学什么 , 怎么做 , 没有一个方向 , 也没有一个大纲来管理的企业架构 , 所以呆在树林里是看到到森林的 , 一定要高屋建瓴的去学 , 整体有个框架, 有一份云原生生态系统的地图 , 所以我整理了CNCF Cloud...
StorageClass是什么kubernetes自动创建pv的机制核心就是在于StorageClass这个API对象 , 这个对象的作用就是创建pv模板
StorageClass对象定义的部分如下:
pv属性 , 比如存储类型 , volume大小
创建pv用到的存储插件 , 比如ceph等等
有了这些 , kubernetes就能根据用户提交的pvc , 找到一个对应的StorageClass了 , 之后 , kubernetes会调用该StorageClass声明的存储插件 , 创建出需要的pv
例子比如要创建GCE的Persistent Disk类型的volume的话, 可...
基本过程:
用户创建pod包含一个PVC
Pod被分配到节点NodeA
kubelet等待volume manager准备设备
pv controller调用相应的volume plugin(in-tree或者out-of-tree)创建持久化卷并在系统中创建pv对象和pvc
attach/detach controller或者volume manager通过volume plugin实现块设备挂载(attach)
attach/detach controller会不断检查每一个pod对应的pv , 和这个pod所在宿主机之间的挂载情况, 从而决定是否对这个pv进行attac...
以kubernetes项目中的addon里的EFK为例
官方github地址: https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch
这个 例子中每个fluentd都是以daemonset的形式部署 , 用于收集日志节点
检查容器的log-driver配置fluentd要读取/var/log/containers/目录下的log日志,这些日志是从/var/lib/docker/containers/${CONTAINER_ID}/${CONTAINER_ID}-...
kubernetes官网文档描述的很详细 , 具体地址是: https://kubernetes.io/docs/concepts/cluster-administration/logging/
总结如下:
日志收集的级别是分为三种:
pod levelpod级别的日志 , 默认是输出到标准输出和标志输入
例子: debug/counter-pod.yaml
12345678910apiVersion: v1kind: Podmetadata: name: counterspec: containers: - name: count image: busybox a...
kubelet是kubernetes中重要的一个组件 , 它运行在每个node上
kubelet工作原理
kubelet的核心便是SyncLoop
触发SyncLoop的条件:
pod更新事件
pod生命周期变化
kubelet本身设置的执行周期
定时清理事件
SyncLoop循环kubelet在启动的时候, 首先第一件事情会做的就是先去设置listers , 就是注册它所关心的informer
之后会依次启动其他的:
diskSpaceManage
oomWatcher
initNetworkPlugin
chooseRuntime(dockershim , remote)
N...
在yaml中
加个小横线代表这个是个列表 所有列表都可以写成中括号 , 在kubernetes中explain的时候, 当出现<[]object>的时候 , 就表明 这个是列表 , 得用小横线去添加
所有映射数据可以写为花括号