自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(137)
  • 收藏
  • 关注

原创 K8s scheduler 调度:NodeName、NodeSelector与Taint

1前言上篇介绍了k8s调度的预选和优选策略,K8s scheduler 调度:预选和优选策略。本篇介绍三个影响pod调度的配置:NodeName、NodeSelector与Taint。2NodeNameNodeName是根据node的名称调度pod。可用于强制约束Pod跳过默认的Kubernetes调度规则,直接调度Pod到指定的Node节点上。参数Pod.spec.nodeName。例如我们有3...

2023-05-19 16:02:26 853

原创 K8s scheduler 调度:预选和优选策略

1环境准备kube-scheduler是k8s的核心组件之一,主要负责Pod的调度。scheduler通过监听kube-apiserver,查询未分配 Node的Pod,根据配置的调度策略,将Pod调度到最优的工作节点上,从而高效、合理地利用k8s集群资源。在master节点通过ps命令可以查看scheduler的启动参数root 2035 1930 0 10:17 ? ...

2023-05-16 09:54:14 651

原创 Cilium架构简介&eBPF数据流向查看

1环境准备上一篇文章将 k8s 的网络插件改为 cilium 同时部署了观测平台 hubble,部署方式可参考上篇。基于eBPF的k8s网络插件Cilium部署与流量治理浅尝本篇讲一下 cilium的架构和数据流向的查看方式。首先,你需要一个kubernetes集群,并使用了 cilium 网络插件。部署后可以看到,每个节点上都启动了一个cilium pod,还有一个cilium-operato...

2023-04-26 11:33:40 791 1

原创 基于eBPF的k8s网络插件Cilium部署与流量治理浅尝

1环境准备基于 ebpf的kubernetes 的 CNI 插件 cilium 最近的关注度也越来越高,并且有配套的可观测平台hubble,为流量治理、可视化追踪有很大帮助,本文先将k8s的网络插件改为 cilium 并将 hubble 进行部署使用,具体原理请期待下篇。Cilium 要求 Linux kernel 版本在 4.8.0 以上,Cilium 官方建议 kernel 版本至少在 ...

2022-11-13 09:40:57 1635

原创 使用rpm包快速升级centos7内核版本

1为什么要升级版本Centos7 默认使用的内核版本是 3.10,可以使用如下命令查看当前机器的内核版本。# uname -rsmLinux 3.10.0-1160.el7.x86_64 x86_64因为准备尝试一下 Cilium,Cilium 要求 Linux kernel 版本在 4.8.0 以上,Cilium 官方建议 kernel 版本至少在 4.9.17 以上,所以需要升级一下 Cen...

2022-11-12 12:26:37 944

原创 以kubelet为例使用go tool pprof分析服务性能

1pprof是什么pprof 是 go 语言自带的基础库,可以分析程序的运行情况,并且提供可视化的功能。它包含两个相关的库:runtime/pprof 和net/http/pprof ,net/http/pprof可以提供一个HTTP 接口,获得性能数据,它的底层使用的runtime/pprof。2pprof如何使用一般如果我们使用 net/http/pprof 并开启了端口监听,如80...

2022-10-24 09:23:18 644

原创 使用 Sar 命令进行系统性能分析

1sar 是什么sar 命令是分析 linux 系统性能的重要工具之一,通过该命令可以全面地获取系统的 CPU、内存、网络、磁盘I/O、分区(交换区)、CPU 中断等性能数据。sar命令包含在sysstat软件包内。可以下载软件包编译安装,也可以通过yum install -y sysstat 或者 apt-get install sysstat 安装。2sar 如何使用sar 功能强大,参数也比...

2022-10-19 18:51:01 1164

原创 以kubelet为例使用strace命令分析进程系统调用

1strace是什么strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。在运维的日常工作中,有些故障和问题未能排查出原因时,使用strace分析一下进程在进行哪些系统调用,也许能提供一些排查的思路与方向。熟悉常用系统调用,能够更好地理解和使用strace。2strace如何使用strace的使用方式之一...

2022-10-15 10:16:46 415

转载 K8s、Docker、Containerd、CRI之间到底是什么关系

0前言容器化、kubernetes、云计算等等技术应用已经越来越广泛,我们经常会听到诸如 kubernetes 弃用 docker、containerd、libcontainer、runc、OCI 等等,本文就此做一下梳理。1docker发展史Docker 可以将应用程序及其依赖打包成一个容器镜像,这个镜像就可以在几乎任何服务器上运行。是 docker 把容器技术推向了巅峰。从 docker 1....

2022-10-13 11:50:01 1428

转载 Linux proc虚拟文件系统说明

1/proc目录这里说的proc文件系统,就是说的linux中的/proc目录,proc目录中的文件不对应硬盘上任何文件,只存储在内存中,通过文件系统的形式为访问系统内核数据的操作提供接口。所以把它叫做虚拟文件系统,或者伪文件系统。如果你还不了解什么是文件系统,可以查看这篇文章什么是文件系统?/proc 的文件能够用于访问有关内核的状态、计算机的属性、正在运行的进程的 状态等信息。大部分 /pr...

2022-09-28 18:10:37 178

原创 入门 Linux 内存管理,这一篇就够了

说到内存我们都知道,机器插多大的内存条就有多大的内存,这也是我们常说的物理内存。而 linux 为了更好地管理和使用内存,定义了虚拟内存的概念。虚拟内存Linux操作系统采用虚拟内存管理技术,使得每个进程都有各自互不干涉的进程地址空间。32位操作系统的虚拟内存是大小为4G的线性虚拟空间,也就是2^32,64位操作系统一般是2^48。用户所看到和接触到的都是虚拟地址,无法看...

2022-04-16 12:19:09 464

原创 kubernetes源码之kubelet初始化

从这篇开始阅读一下kubernetes的源码,kubernetes是使用cobra构建的,如果对cobra还不了解的,可以查看我的上篇文章。零基础入门Cobra---kubernetes源码学习必备kubernetes的源码先从kubelet开始看起。kubelet的启动文件在cmd/kubelet/kubelet.go,入口通过app.NewKubeletCommand...

2022-03-26 23:56:34 786

原创 零基础入门Cobra---kubernetes源码学习必备

Cobra 是用 go 语言实现的用于创建 CLI 应用程序和命令文件的工具。许多 Go 的项目都是使用 Cobra 构建的,包括:kubernetesetcdhugodocker……本篇...

2022-03-20 00:05:31 1515

原创 从 Network Namespace 了解 Pod 是如何访问外网的

Network namespace 是实现 linux 网络空间隔离和网络虚拟化的基础,无论是docker还是其他虚拟化技术也都是通过 linux 的 network namespace ...

2022-03-13 16:26:36 2469

原创 Linux 中的 Page Cache

在前几篇中我们介绍了磁盘、文件系统、inode、硬链接、软链接、文件描述符,没看过的同学可以先看一下前几篇文章。什么是文件系统?文件系统2:软链接、硬链接与inode文件描述符简介由于硬件...

2022-03-09 23:04:50 296

原创 文件描述符简介

在上两篇中我们介绍了磁盘、文件系统、inode、硬链接、软链接,没看过的同学可以先看一下前两篇文章。什么是文件系统?文件系统2:软链接、硬链接与inode从之前的文章中我们知道,一个ino...

2022-03-05 22:55:07 960

原创 kubernetes中Pod网络的创建原理

Pod的概念Pod是kubernetes中最重要的概念,无论是deployment、daemonSet还是job等等各种容器编排方式,都是围绕着pod进行的。其实pod从根本上讲只是一个逻...

2022-03-04 11:51:25 705

原创 文件系统2:软链接、硬链接与inode

在之前的文章中已经介绍了磁盘、文件系统与inode的关系,没看过的同学可以先看一下这篇文章。什么是文件系统?从之前的文章中我们知道,一个inode是用来表示一个文件,用于描述文件的创建时间...

2022-03-03 14:14:41 500

原创 文件系统简介

什么是文件系统?我们都知道,数据是存储在硬盘、u盘等存储设备中的,数据在这些物理设备中的最终形态,都是0和1这种二进制的形式。而我们平时在windows或linux操作系统中,都是以文件夹...

2022-02-28 19:45:57 719

原创 Kubernetes网络插件flannel原理简介

Flannel是kubernetes的网络插件之一,通过构建k8s集群节点之间的overlay网络,实现跨节点通信等功能。flannel常用的网络转发模式有hostgw、udp、vxlan...

2022-02-25 23:49:27 1588

原创 一键部署kubernetes集群脚本(单master)

效果可以看视频:b站视频暂时只是部署单master的集群,纯属娱乐。高可用版脚本慢慢写。master=(192.168.249.10) #你的master节点,也是执行脚本的节点node=(192.168.249.11 192.168.249.12) # node节点,节点间用空格隔开password=root #账户的密码kubernetesVersion=1.23.3 #kubernetes版本serviceCIDR=10.1.0.0/16 #kubernetes service ip网段

2022-02-20 10:30:38 774

原创 kubeadm join第二个master报错

在第二台master使用命令时报错kubeadm join 192.168.249.10:6443 --token 2svtiw.68ice6gm6w6c8bje --discovery-token-ca-cert-hash sha256:70165bfced0533d756796d16845f466cd6cfbec506c7733134eb483bddad36c8 --control-plane --certificate-key 06c460c8470c0fe734ce43e9fba227f0907

2022-02-18 22:53:44 1091

原创 kubernetes service 从简介到原理一篇全学会

kubernetes中提供同一个服务的pod一般是多副本,而且pod的ip不固定,所以kubernetes提供了service这种资源对象来为一组具有相同功能的容器提供统一的入口,完成po...

2022-02-18 21:44:29 385

原创 零基础入门 iptables

Iptables作为linux的一个服务,可以提供数据包过滤、网络地址转换(nat)、数据包内容修改等功能。但是其实准确的来说,这些功能并不是iptables本身实现的,而位于linux内...

2022-02-17 22:28:46 593

原创 使用kubeadm快速部署K8S集群

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。环境准备master 192.168.249.10 (2核2G)node1 192.168.249.11 (...

2022-02-13 19:20:39 1326

原创 ​mac安装CentOS虚拟机

下载CentOS7的镜像文件CentOS官方镜像站点列表地址:https://www.centos.org/download/mirrors/中国境内CentOS镜像下载地址:阿里:...

2022-02-08 22:16:03 4880 1

原创 从零写一个 Vue(七)v-if 和 v-for

写在前面本篇是从零实现 vue2 系列第七篇,在 YourVue 中实现 v-if 和 v-for。文章会最先更新在公众号:BUPPT。代码仓库:https://github.com/b...

2020-06-25 11:40:35 290

原创 从零写一个 Vue(六)组件化

写在前面本篇是从零实现vue2系列第六篇,将在 YourVue 中实现 component。从这篇开始实现的内容,博客上讨论的就比较少了,不过啃源码肯定要啃完整。正文将 main.js ...

2020-06-21 22:06:33 195

原创 从零写一个 Vue(四)虚拟 DOM

写在前面本篇是从零实现 vue2 系列第四篇,为 YourVue 添加虚拟 dom。之前在第一篇实现 vue 流程的时候,将模版解析成 ast,直接生成了真实 dom。这并不是 vue 的实现方式,真正的实现方式是将 parse(template) 生成的 ast 通过 gencode 生成 render 函数,然后执行 render 函数生成 VNode,构建虚拟 dom 树,然后通过虚拟 dom 树创建真实 dom。代码仓库:https://github.com/buppt/YourVue正文

2020-06-20 11:43:37 256

原创 从零写一个 Vue(三)数组监听

写在前面本篇是从零实现 vue2 系列第三篇,为 YourVue 添加数组监听。文章会最先更新在公众号:BUPPT。代码仓库:https://github.com/buppt/YourVue正文上一篇我们实现了双向绑定,篇幅原因没有处理数组。我们知道 vue 是通过重写了几个数组的方法实现的数组监听,先在 Observer 中添加几行代码。class Observer{ constructor(value) { this.value = value this

2020-06-20 11:36:02 206

原创 从零写一个 Vue(二)双向绑定

写在前面本篇是从零实现 vue2 系列第二篇,为 YourVue 添加双向绑定。双向绑定大家可能都比较熟悉来,如果你能回答出下面几个问题,就可以跳过看下一篇了:vue2 通过 Object.defineProperty 修改 get 和 set 方法,实现订阅发布。为什么要用栈结构的 Dep.target 来存储当前 watcher ?为什么 watcher 每次更新后要 cleanupDeps,以及是如何 cleanupDeps 的?代码仓库:https://github.com/buppt

2020-06-19 15:31:12 254 1

原创 从零写一个 Vue(一)主流程实现

写在前面vue3 马上要来了,vue2 学会了吗?最近看到了不少类似标题的文章,虽然 vue 的双向绑定、虚拟dom、diff算法等等面试常见问题你可能在几年前就学过了,不过让从零开始实现一个 vue,你可以吗。本着学习的最好方法就是自己实现一次的原则,趁着疫情无法返校,计划实现一个尽量完整的 vue,删掉了 flow 和很多的类型判断,只保留各功能的主流程,旨在为直接阅读 vue 源码提供过渡。毕竟 vue 源码还是比较难啃的,看网上的文章也很难将各个模块联系起来。跟着我先搭起整个框架,然后一个功

2020-06-19 14:40:43 300

原创 从零写一个 Vue(五)DOM 生成与更新

写在前面本篇是从零实现vue2系列第五篇,将 YourVue 实例的 render 函数转换成真实 dom 和更新算法。正文上篇文章我们把 render 函数挂在了 options 属性...

2020-06-19 10:30:18 127

原创 vue2 中 template 转换成 ast 过程简介

这篇文章主要简单介绍 template 转换成 ast 的过程,也就是 vue 中 parse 的过程。假设 template 模版为const template = `<div&...

2020-06-13 23:35:27 898

原创 网页布局的发展历程

这篇文章是网页布局的发展历程,主要包括表格布局、position 布局、浮动布局、栅栏布局、flex 布局和 grid 布局。HTML 最初是用来定义网页结构的,页面内容从上到下依次显示...

2020-04-29 23:23:52 866

原创 HTML的发展历程,Flash从兴盛到衰落,HTML5的崛起

HTML是Tim Berners-Lee在发明万维网时发明的三项技术之一,如果你对万维网还不够了解,推荐你看我的上一篇文章➡️万维网的发展历程,互联网、因特网、万维网有什么区别呢?本篇文...

2020-04-12 21:54:53 602

原创 JS模块化的发展历程,CommonJS、AMD、CMD、UMD、ES6模块化

你应该听过 CommonJS、AMD、CMD、UMD、JS 模块化等等,这篇文章讲的就是这些名称都是什么意思,为什么会出现JS模块化,以及他们分别是如何实现JS模块化的。最早,我们就是直...

2020-04-06 21:03:16 382

原创 零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码)

自己也是一个初学者,主要是总结一下最近的学习,大佬见笑。中文分词说到命名实体抽取,先要了解一下基于字标注的中文分词。 比如一句话 “我爱北京天安门”。分词的结果可以是 “我/爱/北京/天安门”。那什么是基于字标注呢? “我/O 爱/O 北/B 京/E 天/B 安/M 门/E”。就是这样,给每个字都进行一个标注。我们可以发现这句话中字的标注一共...

2020-03-15 09:55:40 45587 56

原创 根据vue源码手动实现虚拟dom

网上实现虚拟dom的文章也很多了,本项目代码结构、函数等完全按照[email protected]源码思路实现,主要也是为了总结一下自己的学习。github地址在这里。从图中可以看到,这个dom树改变了许多地方,但是只新建了一个div元素,这说明其余的元素只是做了移动和文本内容的修改,这比重新渲染整棵dom树要节省很多资源。不多解释了,下面直接看代码吧。因为vue是通过模版解析之后生成的虚拟dom,我主要...

2018-12-21 23:11:37 390

原创 根据vue源码手动实现双向绑定

其实写双向绑定的文章也挺多了,不过都没有仔细讲发布者-订阅者模式在其中的使用,本文尽量讲解清楚所有代码,代码结构、函数等完全按照[email protected]源码思路实现(除了新建vue类以及初始化的时候)。github地址在这里。图中,input的value、h1、h2都与data.name绑定,可以通过input改变data.name,data.name改变后(发布者)与之绑定的h1、h2(两个订阅者...

2018-12-21 22:25:22 421

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除