自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(249)
  • 收藏
  • 关注

原创 Calico网络策略

相比于k8s网络策略,calico网络策略对其进行了扩展,能支持更多的功能,比如可以对流量进行allow, deny, log, pass,而在k8s网络策略中只能对匹配的流量进行allow,而deny只能通过default的方式,灵活度不够。

2021-12-18 22:58:58 1368

原创 K8S网络策略

注:本文基于K8S v1.21.2版本编写1 关于网络策略k8s的网络能力主要表现在两个方面,一个是连通性,保证pod之间能够互通,另一个就是隔离性,考虑安全、流量限制等业务需求。而默认情况下,k8s集群的网络没任何限制,集群中的所有pod都是互通的,这对于一些业务来说是不符合安全需求的。同时如果考虑多租户的场景,这就更不能接受了,因此需要有方法能对集群网络进行限制,这就有了Network Policy。但有一点,并不是所有网络插件都支持Network Policy,比如flannel就不支持网络策

2021-11-30 22:07:04 1839

原创 K8S调试工具之--kubectl debug

容器调试,kubectl debug,EphemeralContainers,shareProcessNamespace

2021-11-22 22:17:47 2538

原创 K8S调试工具之--nsenter

nsenter就是namespace enter的意思,它可以进入到目标程序所在的namespace中,因此可以用来调试容器程序。我们都知道目前存在的几个namespace,比如网络,用户,pid等,nsenter都有对应的参数可以指定,从而进入该namespace

2021-10-18 22:25:34 2907

原创 K8S Calico网络插件之BGP模式

注:本文基于K8S v1.21.2版本编写1 切换到BGP模式因为按照官网的配置文件部署calico时,默认使用的是IPIP模式,如果需要使用BGP模式,就要做一些修改。主要有两种方式,修改IPPool中的ipipMode为Never,也就是禁用IPIP模式[root@master home]# kubectl edit ippool ipipMode: Never也可以使用calicoctl或者kubectl命令修改,[root@master home]# kubectl get

2021-10-17 17:37:50 6171

原创 K8S Calico网络插件之IPIP模式

注:本文基于K8S v1.21.2版本编写1 关于Calicoflannel是overlay网络, 主要工作在L2(VXLAN),calico主要是L3,通过BGP路由协议在机器之间传送报文。2 安装Calico(IPIP模式)因为之前有安装flannel,因此需要先删除,kubectl delete -f kube-flannel.yml同时需要删除flannel.1和cni0这两个网络设备,ip link delete cni0ip link delete flannel.1之后就

2021-10-10 22:58:49 4634

原创 Linux下查看网络设备类型

注:本文基于CentOS 7.4编写1、网络设备类型linux网络设备的抽象类型有:Bridge、VLAN、VETH、TAP等,我们可以通过ip命令查看系统支持的类型,[root@master ~]# ip link help...TYPE := { vlan | veth | vcan | dummy | ifb | macvlan | macvtap | bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |

2021-09-27 21:43:07 4313

原创 kube-proxy模式之ipvs

注:本文基于K8S v1.21.2版本编写

2021-09-26 22:38:38 3923

原创 kube-proxy模式之iptables

注:本文基于K8S v1.21.2版本编写1 默认模式2 关于iptables3 针对一个特定服务分析数据流

2021-09-18 22:11:14 2197

原创 K8S dashboard登录超时时间修改

注:本文基于K8S dashboard v2.2.0编写k8s dashboard默认的登录超时时间是900s,也就是15分钟,对于需要频繁查看修改集群信息是非常不便的,需要频繁重新登录。为了增加超时时间,可以修改dashboard启动参数,增加以下配置,即超时时间为1天,- '--token-ttl=86400'直接在dashboard上修改对应的deployment文件即可。...

2021-08-24 08:55:37 1983

原创 部署ArgoCD

已通过kubeadm搭建集群环境,直接使用官网的yaml文件

2021-08-08 22:43:21 1936

原创 Kibana搜索原理

注:本文基于Kibana 7.13.4版本1. 背景在上一篇文章——Kibana常用搜索语法,我们简单介绍了kibana的常用搜索语法,但在实际使用中,总是出现各种异常,为什么明明存在的字符串就是匹配不到,搜不出来,今天我们就来稍微深入下Kibana的搜索原理。2. 关于Kibana的正则表达式因为Kibana的正则表达式引擎并不是使用perl pcre,因此有一些正则并不支持,比如开头和结尾锚定符号,^和$,详细的支持符号可以查看官方文档,https://www.elastic.co/guide/

2021-08-05 22:58:40 1433

原创 Kibana常用搜索语法

Kibana搜索语法

2021-08-04 22:27:49 3834

原创 部署k8s dashboard

1 前提已通过kubeadm搭建集群环境,具体可参考——使用kubeadm部署k8s 1.15集群——基于CentOS 72 创建dashboard应用直接使用官网提供的yaml文件,kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml执行成功后,查看创建的pod资源,[root@master ~]# kubectl get pod -

2021-07-28 21:55:09 1704

原创 CentOS 8重启网络服务

注:本文基于CentOS 8.4编写CentOS 7中支持network.service和NetworkManager.service 2种方式配置网络,而在CentOS 8中已经废弃network.service,需要通过NetworkManager.service配置网络。因此通过systemctl restart network已经无法使用了。[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 8.4.2105[ro

2021-07-07 22:38:46 14387 1

原创 git常用命令

1、配置2、

2021-07-04 22:42:44 189

原创 aws-shell的安装

1、aws-shell使用awscli时会发现命令众多,一不小心就打错命令,这时我们可以考虑使用aws-shell这个小工具,它可以根据用户输入提示和补全命令。2、安装aws-shell在这里插入代码片参考:

2021-06-25 22:54:53 519

原创 CentOS 7安装python3

1、下载源码包wget https://www.python.org/ftp/python/3.4.10/Python-3.4.10.tar.xz以Python-3.4.10为例,其他版本可以到https://www.python.org/ftp/python/,自行下载。2、安装依赖、解压及编译安装yum install -y zlib-devel bzip2-devel sqlite sqlite-devel openssl-develtar -xf Python-3.4.10.tar.x

2021-06-25 22:28:21 120

原创 安装和配置awscli

注:本文基于CentOS 7.4编写1、安装awsclicurl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zip./aws/install安装完成后,我们查看下awscli的版本号,[root@localhost~]# aws --versionaws-cli/2.2.13 Python/3.8.8 Linux/3.10.0-693.21.1.el7.

2021-06-24 22:15:48 5695

原创 SLUB缓存管理

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.21、关于SLUB目前大多数系统都不使用slab作为缓存的管理模式,转而使用slub,比如CentOS 7和8默认都是使用slub管理器。slub是基于slab的进一步优化改进,slub保留了slab的API接口函数,保证了对slab的兼容和无缝迁移。slub与slab的主要差异有以下几点,每CPU变量不再保存对象,而是保存slab缓冲区精简每node结点的三个链表,只保留部分空slab链表取消每

2021-06-21 22:57:39 307

原创 物理地址、线性地址、虚拟地址和逻辑地址以及页表

https://www.cnblogs.com/diyingyun/archive/2012/01/03/2311327.html

2021-06-04 22:34:00 2962

原创 块缓冲区和缓冲区首部buffer_head

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.21 buffer_head2 struct buffer_head主要成员变量在这里插入代码片3 创建buffer_head4 删除buffer_head5 结构关系

2021-05-20 08:48:19 1733

原创 页缓存page cache和地址空间address_space

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.21 page cachepage cache用于在内存中缓存磁盘文件,几乎所有文件的读写都依赖于page cache,除非使用直接IO的方式。它是文件系统cache中占比最大的部分,也是对文件系统读写性能提升最大的部分,而地址空间address_space则是page cache的核心管理结构。2 struct address_space主要成员变量struct address_space { s

2021-05-03 18:19:03 1848

原创 文件系统之file

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.24 file4.1 file主要成员变量4.2 创建file4.3 删除file

2021-04-14 22:00:07 545

原创 文件系统之dentry

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.23 dentry3.1 dentry主要成员变量3.2 添加dentry到cache3.3 从cache中删除dentry(回收dentrycache)4 file4.1 file主要成员变量4.2 创建file4.3 删除file

2021-04-03 13:20:36 3204

原创 文件系统之inode

2 inode2.1 inode主要成员变量2.2 添加inode到cache2.3 从cache中删除inode(回收inode cache)3 dentry3.1 dentry主要成员变量3.2 添加dentry到cache3.3 从cache中删除dentry(回收dentrycache)4 file4.1 file主要成员变量4.2 创建file4.3 删除file...

2021-03-28 21:52:26 2772

原创 文件系统之super_block

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.21 super_blocksuper_block,即超级块代表的是一种文件系统类型,比如ext3、ext4都有对应的super_block结构体。一台机器可以有多块硬盘,一个硬盘可以有多个分区,每个分区都有自己的文件系统类型,可以是一样的,也可以不一样。我们来了解下超级块的主要成员变量。1.1 super_block主要成员变量在这里插入代码片1.2 注册一个文件系统内核为了管理系统上的所有文

2021-03-26 19:57:45 3184 4

原创 vm内核参数之swap分区使用控制swappiness

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.2

2021-03-07 22:43:01 1446 1

原创 kswapd进程工作原理(四)——总结

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.2kswapd进程工作原理(一)——初始化及触发kswapd进程工作原理(二)——回收内存上半部kswapd进程工作原理(三)——回收LRU链表关于kswapd进程,我们通过之前这三篇文章分析了它的具体工作原理,现在就做一个简单的梳理,从大框架去回顾下。kswapd_init---------------------------------kswapd进程初始化 kswapd_run------

2021-03-06 22:07:47 1489

原创 kswapd进程工作原理(三)——回收LRU链表

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.2在上篇文章——kswapd进程工作原理(二)——回收内存上半部中,我们分析了kswapd进程的具体回收过程,今天我们再继续往下,看看kswapd是如何回收LRU链表。1 shrink_list主要流程:如果操作的是活动LRU链表,需要满足非活动LRU链表中页面过少,才会回收活动链表如果操作的是活动LRU链表,直接开始回收static unsigned long shrink_list(enu

2021-03-06 20:42:47 993

原创 kswapd进程工作原理(二)——回收内存上半部

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.2在上篇文章——kswapd进程工作原理(一)中,我们分析了kswapd进程的初始化以及触发场景,那kswap到底是怎么回收内存,回收哪些内存呢,我们来看下kswap进程实体。1 kswapd主要流程:标识自己为kswap进程,并进行一些初始化尝试睡眠,有可能kswap是被意外唤醒如果kswap确实需要工作,调用balance_pgdat开始回收内存static int kswapd(voi

2021-03-02 23:05:14 2860 2

原创 kswapd进程工作原理(一)——初始化及触发

[root@localhost ~]# numactl -Havailable: 2 nodes (0-1)node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23node 0 size: 32689 MBnode 0 free: 593 MBnode 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28...

2021-02-28 21:16:36 5948

原创 LRU链表及LRU缓存

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.21、 关于LRU2、系统存在的LRU链表#define LRU_BASE 0#define LRU_ACTIVE 1#define LRU_FILE 2enum lru_list { LRU_INACTIVE_ANON = LRU_BASE, LRU_ACTIVE_ANON = LRU_BASE + LRU_ACTIVE, LRU_INACTIVE_FILE = LRU_BASE + L

2021-01-11 22:07:02 2661

原创 Prometheus Alertmanager告警模板

1、告警模板关于Alertmanager的告警模板,我们以上篇《Prometheus配置和使用Alertmanager发送告警至企业微信》的模板为例,对其做个说明,[root@centos74 home]# cat /usr/local/prometheus/alertmanager/wechat.tmpl{{ define "wechat.default.message" }}{{- if gt (len .Alerts.Firing) 0 -}}{{- range $index, $alert

2020-12-19 22:50:16 12371 1

原创 Prometheus配置和使用Alertmanager发送告警至企业微信

注:本文基于CentOS 7.4编写1、下载alertmanager我们以官网最新版本为例,官网地址,https://prometheus.io/download/wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz如果觉得官网下载实在慢,可以通过以下链接下载,alertmanager-0.21.0.linux-amd64.t

2020-12-18 15:10:18 5974

原创 Prometheus rules配置

1、前提在前面的文章——《Prometheus搭建》中,我们安装好了prometheus,并确认配置正确,web中也能查看到监控的机器情况,现在我们就来尝试制定告警规则,监控我们的机器和服务。2、配置规则默认的prometheus配置文件中,rules section并没有配置规则,因此我们需要添加新的规则,[root@centos74 prometheus]# cat /usr/local/prometheus/prometheus.yml ...rule_files: - "rules/

2020-12-15 21:34:39 8483

原创 内存管理之内存节点Node、Zone、Page

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.21、NodeNode是内存管理最顶层的结构,在NUMA架构下,CPU平均划分为多个Node,每个Node有自己的内存控制器及内存插槽。CPU访问自己Node上的内存时速度快,而访问其他CPU所关联Node的内存的速度比较慢。而UMA则被当做只有一个Node的NUMA系统。内核中使用struct pglist_data来描述一个Node节点,我们看下主要的一些变量,/* * On NUMA mach

2020-11-28 18:58:23 2060

原创 zabbix agent的主动模式和被动模式

1、区别主动模式:这里的主动是对于agent来说,也就是agent主动向server查询和发送需要发送哪些监控数据被动模式:也就是agent等待server来拉取监控数据,此时agent需要监听端口,默认10050[root@my-test ~]# netstat -nl | grep 10050tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN tcp6 0 0 :

2020-11-24 21:42:23 1956

原创 zabbix 4.0 Linux客户端部署

1、Linux服务器1.1 安装zabbix reporpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm然后直接安装agentyum install-y zabbix-agent 1.2 配置agent目前zabbix默认采用主动模式,即客户端主动向zabbix server发送监控数据,这样之后便于扩展,不会让zabbix server负载过大。不过配置时,

2020-11-22 21:19:19 271

原创 SLAB缓存管理之缓存回收cache_reap

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.21、背景slab缓存使用需要从buddy system中获取页框并初始化为slab对象提供给进程使用,进程使用结束后,这些对象就会堆积在每个CPU和Node节点上,虽然没有进程在使用,但是其他进程也无法使用,因此需要有进程去回收这些不再使用的slab缓存。回收可分为被动回收和主动回收,被动回收指系统内存不足时,触发当前需要使用内存的进程阻塞的去释放空闲内存;而主动回收是有进程每个一段时间就去回收,今天

2020-10-05 19:59:05 1513

空空如也

空空如也

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

TA关注的人

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