hanfengsasa1
码龄4年
关注
提问 私信
  • 博客:13,606
    13,606
    总访问量
  • 32
    原创
  • 139,259
    排名
  • 544
    粉丝
  • 7
    铁粉
  • 学习成就

个人简介:云原生学习圈子的一员

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2020-10-10
博客简介:

m0_51445191的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    308
    当月
    0
个人成就
  • 获得47次点赞
  • 内容获得8次评论
  • 获得49次收藏
创作历程
  • 2篇
    2024年
  • 33篇
    2023年
成就勋章
兴趣领域 设置
  • 云原生
    kubernetes
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

346人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

源码分析pod各个字段

pod是kubernetes中的一个很重要的对象,今天我们从源码的角度分析pod的各个字段,我分析的源码版本是1.18.12,位置是staging\src\k8s.io\api\core\v1\types.gotype Pod struct { metav1.TypeMeta `json:",inline"` // Standard object's metadata. // More info: https://git.k8s.io/community/contributors/devel/sig
原创
发布博客 2024.06.01 ·
767 阅读 ·
21 点赞 ·
0 评论 ·
20 收藏

node-exporter源码解析(一)

node-exporter无疑是监控主机资源的最常用的一个exporter,通过阅读exporter的源代码,对了解node-exporter的指标详来源情有很大的帮助,它就是通过go语言读取linux上的相关文件,并把它封装成prometheus相关指标以http暴露出去,我们就可以通过prometheus抓取指标了,我本着学习go语言和了解指标的来历的初心向大家分享我阅读源码的过程,现在就让我们开始吧。我们就从collector下的collector.go文件开始解析,因为它定义了这个注册函数。
原创
发布博客 2024.04.10 ·
1366 阅读 ·
22 点赞 ·
0 评论 ·
16 收藏

k8s管理系统

k8s
原创
发布博客 2023.09.21 ·
201 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

理解cicd工具tekton

from:当 Task 的 Inputs 依赖于上一个 Task 的 Outputs 时,可以通过 from 参数来指定runAfter:当 Task 间没有资源依赖,但需要使一个 Task 在另外一个 Task 之后运行的话,可以使用 runAfter 来指定。上面是针对产物需要进行传递的情况下,对于目前例子而言,由于只需要一个 Task,虽然指定了 Inputs 和 Outputs,但并没有另一个 Task 来引用这些结果。在 Tekton 中,DAG(有向无环图)的功能是原生支持的。
原创
发布博客 2023.07.08 ·
240 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

jenkins+kubernetes构建CICD

3.使用deployment安装jenkins。使用service代理jenkins外部访问。配置连接harbor,我们先安装harbor。配置jenkins连接kubernetes。jenkins安装Sonarqube插件。使用docker安装Sonarqube。1.clusterrole绑定。配置pod template。回滚的pipeline。结合Sonarqube。编写pipeline。
原创
发布博客 2023.07.04 ·
308 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

prometheus监控(二)

为什么prometheus天然适合监控kubernetes指标分析容器基础资源指标 | kubelet 内置cadvisor metrics接口 | 查看容器cpu、mem利用率等 |k8s_sd node级别直接访问node_ip| k8s资源指标 通过coredns访问k8s服务组件指标| 服务组件 metrics接口 | 查看apiserver 、scheduler、etc、coredns请求延迟等 | k8s_sd endpoint级别部署在pod中业务埋点指标| pod 的metrics
原创
发布博客 2023.06.23 ·
2148 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

prometheus监控(一)

1.mysql和mysql-exporter在一个pod里在mysql授权mysql-exporter在prometheus创建job在grafana中导入模板blackbox_exporter:blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的监控数据采集,blackbox_exporter 可用于以下监测:HTTP 测试: 定义Request Header信息、判断 Http status/Htt
原创
发布博客 2023.06.23 ·
512 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

理解kubernetes调度

默认调度器的抢占过程: 确定要发生抢占 -> 调度器将所有节点信息复制一份,开始模拟抢占 -> 检查副本里的每一个节点,然后从该节点上逐个删除低优先级Pod,直到满足抢占者能运行 -> 找到一个能运行抢占者Pod的node -> 记录下这个Node名字和被删除Pod的列表 -> 模拟抢占结束 -> 开始真正抢占 -> 删除被抢占者的Pod,将抢占者调度到Node上。K8s的资源分为两类,一类是可压缩资源(compressible resources),比如CPU,也就是当资源不足的时候Pod不会退出。
原创
发布博客 2023.06.15 ·
127 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

了解service和dns

但是,当你访问这条 A 记录的时候,它返回的是所有被代理的 Pod 的 IP 地址的集合。可以看到,这个目的地址和端口,正是被代理 Pod 的 IP 地址和端口,一直以来,基于 iptables 的 Service 实现,都是制约 Kubernetes 项目承载更多量级的 Pod 的主要障碍,而 IPVS 模式的 Service,就是解决这个问题的一个行之有效的方法,IPVS 模式的工作原理,其实跟 iptables 模式类似。而作为对这个事件的响应,它就会在宿主机上创建这样一条 iptables 规则。
原创
发布博客 2023.06.14 ·
301 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

理解kubernetes网络插件工作原理

第一类叫做main插件,它是用来创建具体网络设备的二进制文件,比如bridge,第二类是ipam负责分配ip地址的二进制文件,比如dhcp,第三类是cni插件,比如calico,tuning是一个通过sysctl调整网络设备参数的二进制文件,portmap是一个通过iptables配置端口映射的二进制文件,bandwidth是用来限流的,我们在安装好比如calico之后会生成对应的cni配置文件,它其实也是一个configmap。最后,CNI bridge 插件会为 CNI 网桥添加 IP 地址。
原创
发布博客 2023.06.14 ·
178 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

理解容器网络(一)

在实际传递数据的过程中在网络不同层次都有linu内核netfilter工作,容器想ping通另一个主机,先到达docker0网卡,然后根据宿主机上的路由规则到达另一台主机,前提是本身这两台主机都能互相通,容器之间的跨主机通信是如何实现的呢,我们可以通过软件的方式,创建一个整个集群公用的网桥,然后把集群里的所有容器都连接到这个网桥上,这种技术叫做overlay network 如图所示。当172.17.0.2ping172.17.0.3的时候我们看一下0.2的路由规则。
原创
发布博客 2023.06.14 ·
57 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

了解pv,pvc,storageclass(一)

关于pv的两阶段处理流程是独立与kubelet主控制循环的,第一阶段的attach是由volume controller负责维护的,这个控制循环的名字是attachDetachController,就是不断检查每一个pod对应的pv,和这个pod所在宿主机之间的挂载情况,从而决定是否对pv进行attach操作,第二个阶段的mount操作,必须发生在pod对应的宿主机上,所以它是kubelet组件的一部分,它叫做volumemanagerReconciler,它是独立的一个goroutine。
原创
发布博客 2023.06.13 ·
377 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

了解kubelet(一)

syncloop主要从apiserver监听更新动作,它下面有很多的podworker去处理这些动作,syncpod就是去调谐这些动作,其中的computePodaction会去计算当前pod是什么状态,你如果去创建一个pod,它会看当前有没有这个pod,relist通过pod cache这种形式收集pod的状态信息,把这些信息上报给apiserver。做个小练习,吧容器运行时换成containerd。下面是kubelet架构图。
原创
发布博客 2023.06.12 ·
370 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

kubernetes控制器(一)

一个控制器每次需要获取对象的时候都要访问 APIServer,这会给系统带来很高的负载,Informers 的内存缓存就是来解决这个问题的,此外 Informers 还可以几乎实时的监控对象的变化,而不需要轮询请求,这样就可以保证客户端的缓存数据和服务端的数据一致,就可以大大降低 APIServer 的压力了。这是因为我们首先通过 Informer 注册了事件处理程序,这样当我们启动 Informer 的时候首先会将集群的全量 Deployment 数据同步到本地的缓存中,会触发。下面我们就分析这个图。
原创
发布博客 2023.06.05 ·
253 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

了解kube-scheduler(三)

len(pod.Spec.NodeName) = 0,那么这个 Pod 没有被调度过或者是此前调度过但是调度失败的(用户修改了 Pod 的配置导致 Pod 发生变化,又被 kube-scheduler 感知到了),如果是没有调度过的 Pod 那么直接加入到 activeQ,如果是调度失败的 Pod 则根据上述规则判断是加入 backoffQ 还是 activeQ。从上面的情况,我们可以看到,集群内有事件发生变化,是可以加速调度失败的Pod被重新调度的进程的。
转载
发布博客 2023.06.05 ·
135 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

了解kube scheduler(二)

kube scheduler的调度过程是有一个个的扩展点组成的,调度阶段包括sort,filter,score,reserve,permit,绑定阶段包括bind,每个扩展点又有很多的调度插件组成,在sort阶段,待调度的pod都会放在activeQ对列中,这是一个基于堆实现的优先级对列,因为我们可以给pod设置优先级,比如加上priorityclass字段,不加这个字段,会根据pod创建的先后顺序调度,filter有三个扩展点prefilter,filter,postfilter,
转载
发布博客 2023.06.05 ·
154 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

了解kube-scheduler

调度器与apiserver采用watch连接,对那些nodename为空的进行调度,调度要考虑很多东西,公平度调度,如何让资源高效利用,pod的QoS,affinity和anti-affinity,调度器分为两个阶段,predicte就是过滤不符合条件的节点,priority就是优先级排序,选择优先级最高的节点。优先调度上匹配nodeaffinity的节点上,优先调度到匹配tainttoleration的节点上,检查pod是否可以调度到内存紧张的节点。下面看看podaffinity。
原创
发布博客 2023.06.04 ·
77 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

使用go添加认证证书

上篇我们手动添加证书很麻烦,这次我们自动生成证书,并用client-go创建mutatingwebhookconfigurations,validatingwebhookconfigurations。基于rbac的initcontainer创建证书,跟主容器共享一个目录,使用deployment部署。
原创
发布博客 2023.06.03 ·
282 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

开发apiserver实现一个容器镜像白名单的 K8S 准入控制器

在这一步之前需要创建secret,接着需要创建validatingwebhookconfigurations,mutatingwebhookconfigurations。我们使用go编写validate和mutate。我们把认证作为pod运行在集群中。dockerfile如下。
原创
发布博客 2023.06.03 ·
339 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

了解apiserver(二)

kubernetes支持更细粒度的限流当时,称谓APF(api priority and fairness),不同的请求划分成了不同的优先级,每个优先级有对应不同的flow,每个flow又对应很多queueset,就是避免某个请求持续对apiserver影响造成其他请求的访问。apiserver中的每个group内的资源在apiserver连接etcd的时候公用连接,这个是可以调的,我们也可以自定义apiserver然后通过apiserver aggregate加入到主apiserver。
原创
发布博客 2023.06.01 ·
158 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多