首页
学习
活动
专区
工具
TVP
发布

田飞雨的专栏

专注 k8s 云原生实践 个人博客:https://blog.tianfeiyu.com/
专栏作者
88
文章
173937
阅读量
54
订阅数
kubernetes 中 Evicted pod 是如何产生的
最近在线上发现很多实例处于 Evicted 状态,通过 pod yaml 可以看到实例是因为节点资源不足被驱逐,但是这些实例并没有被自动清理,平台的大部分用户在操作时看到服务下面出现 Evicted 实例时会以为服务有问题或者平台有问题的错觉,影响了用户的体验。而这部分 Evicted 状态的 Pod 在底层关联的容器其实已经被销毁了,对用户的服务也不会产生什么影响,也就是说只有一个 Pod 空壳在 k8s 中保存着,但需要人为手动清理。本文会分析为什么为产生 Evicted 实例、为什么 Evicted 实例没有被自动清理以及如何进行自动清理。
田飞雨
2021-10-08
4.5K0
kubernetes 中的增强特性(Kubernetes Enhancement Proposal)
kubernetes 增强特性(kep)是为了解决社区中的疑难问题而创建的一个项目,每一个增强特性都对 kubernetes 的部分功能有较大的影响,需要 kubernetes 项目下的多个组(SIG)协作开发,对应的特性通常要经过 alpha、beta以及 GA 三个版本,所以每个方案的开发周期比较长,大多需要经过 9~10 个月才能完成,某些特性甚至已经讨论多年至今仍未开发完成,像 crd、dry-run、kubectl diff、pid limit 等已经开发完成的功能都是在 kep 中提出来的。本文会介绍几个比较重要的已经在 kep 中孵化的特性。
田飞雨
2020-04-15
1.2K0
kube-apiserver 中 apiserver service 的实现
在 kubernetes,可以从集群外部和内部两种方式访问 kubernetes API,在集群外直接访问 apiserver 提供的 API,在集群内即 pod 中可以通过访问 service 为 kubernetes 的 ClusterIP。kubernetes 集群在初始化完成后就会创建一个 kubernetes service,该 service 是 kube-apiserver 创建并进行维护的,如下所示:
田飞雨
2020-03-06
2.6K0
kubelet 中垃圾回收机制的设计与实现
本文主要分析 kubelet 中的垃圾回收机制,垃圾回收的主要目的是为了节约宿主上的资源,gc controller 的回收机制可以参考以前的文章 garbage collector controller 源码分析。
田飞雨
2020-02-17
1.4K0
NodeController 源码分析
在早期的版本中 NodeController 只有一种,v1.16 版本中 NodeController 已经分为了 NodeIpamController 与 NodeLifecycleController,本文主要介绍 NodeLifecycleController。
田飞雨
2020-01-13
9270
garbage collector controller 源码分析
在前面几篇关于 controller 源码分析的文章中多次提到了当删除一个对象时,其对应的 controller 并不会执行删除对象的操作,在 kubernetes 中对象的回收操作是由 GarbageCollectorController 负责的,其作用就是当删除一个对象时,会根据指定的删除策略回收该对象及其依赖对象,本文会深入分析垃圾收集背后的实现。
田飞雨
2019-12-31
1K0
kube-scheduler 优先级与抢占机制源码分析
前面已经分析了 kube-scheduler 的代码逻辑以及 predicates 与 priorities 算法,本节会继续讲 scheduler 中的一个重要机制,pod 优先级与抢占机制(Pod Priority and Preemption),该功能是在 v1.8 中引入的,v1.11 中该功能为 beta 版本且默认启用了,v1.14 为 stable 版本。
田飞雨
2019-12-20
8380
kube-on-kube-operator 开发(一)
kubernetes 已经成为容器时代的分布式操作系统内核,目前也是所有公有云提供商的标配,在国内,阿里云、腾讯云、华为云这样的公有云大厂商都支持一键部署 kubernetes 集群,而 kubernetes 集群自动化管理则是迫切需要解决的问题。对于大部分不熟悉 kubernetes 而要上云的小白用户就强烈需要一个被托管及能自动化运维的集群,他们平时只是进行业务的部署与变更,只需要对 kubernetes 中部分概念了解即可。同样在私有云场景下,笔者所待过的几个大小公司一般都会维护多套集群,集群的运维工作就是一个很大的挑战,反观各大厂同样要有效可靠的管理大规模集群,kube-on-kube-operator 是一个很好的解决方案。
田飞雨
2019-12-20
8880
部署 kubernetes 可视化监控组件
随着 kubernetes 的大规模使用,对 kubernetes 组件及其上运行服务的监控也是非常重要的一个环节,目前开源的监控组件有很多种,例如 cAdvisor、Heapster、metrics-server、kube-state-metrics、Prometheus 等,对监控数据的可视化查看组件有 Dashboard、 Prometheus、Grafana 等,本文会介绍 kube-dashboard 和基于 prometheus 搭建数据可视化监控。
田飞雨
2019-12-20
6610
kube-proxy iptables 模式源码分析
在前面的文章中已经介绍过 iptable 的一些基本信息,本文会深入介绍 kube-proxy iptables 模式下的工作原理,本文中多处会与 iptables 的知识相关联,若没有 iptables 基础,请先自行补充。
田飞雨
2019-12-20
9620
kubeadm 安装 kubernetes
kubeadm 是 Kubernetes 主推的部署工具之一,正在快速迭代开发中,当前版本为 GA,暂不建议用于部署生产环境,其先进的设计理念可以借鉴。
田飞雨
2019-12-19
5490
kubelet 架构浅析
kubelet 是运行在每个节点上的主要的“节点代理”,每个节点都会启动 kubelet进程,用来处理 Master 节点下发到本节点的任务,按照 PodSpec 描述来管理Pod 和其中的容器(PodSpec 是用来描述一个 pod 的 YAML 或者 JSON 对象)。
田飞雨
2019-12-19
8430
daemonset controller 源码分析
在前面的文章中已经分析过 deployment、statefulset 两个重要对象了,本文会继续分析 kubernetes 中另一个重要的对象 daemonset,在 kubernetes 中 daemonset 类似于 linux 上的守护进程会运行在每一个 node 上,在实际场景中,一般会将日志采集或者网络插件采用 daemonset 的方式部署。
田飞雨
2019-12-19
9630
kube-scheduler predicates 与 priorities 调度算法源码分析
在上篇文章kube-scheduler 源码分析中已经介绍了 kube-scheduler 的设计以及从源码角度分析了其执行流程,这篇文章会专注介绍调度过程中 predicates 和 priorities 这两个调度策略主要发生作用的阶段。
田飞雨
2019-12-19
5040
kubelet 状态上报的方式
分布式系统中服务端会通过心跳机制确认客户端是否存活,在 k8s 中,kubelet 也会定时上报心跳到 apiserver,以此判断该 node 是否存活,若 node 超过一定时间没有上报心跳,其状态会被置为 NotReady,宿主上容器的状态也会被置为 Nodelost 或者 Unknown 状态。kubelet 自身会定期更新状态到 apiserver,通过参数 --node-status-update-frequency 指定上报频率,默认是 10s 上报一次,kubelet 不止上报心跳信息还会上报自身的一些数据信息。
田飞雨
2019-12-18
2.8K0
使用插件扩展 kubectl
由于笔者所维护的集群规模较大,经常需要使用 kubectl 来排查一些问题,但是 kubectl 功能有限,有些操作还是需要写一个脚本对 kubectl 做一些封装才能达到目的。比如我经常做的一个操作就是排查一下线上哪些宿主的 cpu/memory request 使用率超过某个阈值,kubectl 并不能直接看到一个 master 下所有宿主的 request 使用率,但可以使用 kubectl describe node xxx查看某个宿主机的 request 使用率,所以只好写一个脚本来扫一遍了。
田飞雨
2019-12-18
5020
kube-scheduler 源码分析
Kube-scheduler 是 kubernetes 的核心组件之一,也是所有核心组件之间功能比较单一的,其代码也相对容易理解。kube-scheduler 的目的就是为每一个 pod 选择一个合适的 node,整体流程可以概括为三步,获取未调度的 podList,通过执行一系列调度算法为 pod 选择一个合适的 node,提交数据到 apiserver,其核心则是一系列调度算法的设计与执行。
田飞雨
2019-12-18
1.3K0
kubernetes 指标采集组件 metrics-server 的部署
metrics-server 是一个采集集群中指标的组件,类似于 cadvisor,在 v1.8 版本中引入,官方将其作为 heapster 的替代者,metric-server 属于 core metrics(核心指标),提供 API metrics.k8s.io,仅可以查看 node、pod 当前 CPU/Memory/Storage 的资源使用情况,也支持通过 Metrics API 的形式获取,以此数据提供给 Dashboard、HPA、scheduler 等使用。
田飞雨
2019-12-18
3.3K0
daemonset controller 源码分析
在前面的文章中已经分析过 deployment、statefulset 两个重要对象了,本文会继续分析 kubernetes 中另一个重要的对象 daemonset,在 kubernetes 中 daemonset 类似于 linux 上的守护进程会运行在每一个 node 上,在实际场景中,一般会将日志采集或者网络插件采用 daemonset 的方式部署。
田飞雨
2019-12-18
7740
kube-proxy iptables 模式源码分析
在前面的文章中已经介绍过 iptable 的一些基本信息,本文会深入介绍 kube-proxy iptables 模式下的工作原理,本文中多处会与 iptables 的知识相关联,若没有 iptables 基础,请先自行补充。
田飞雨
2019-12-15
4600
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档