自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (3)
  • 收藏
  • 关注

翻译 1.3kubernetes核心架构_kubernetes生产化实践之路

1.3kubernetes核心架构_kubernetes生产化实践之路

2021-12-08 09:42:16 487

翻译 1.2kubernetes模型设计_kubernetes生产化实践之路

1.2.1、对象的通用设计原则kubernetes在设计对象时遵循如下原则:1、kubernetes 将业务模型化,对象的操作都是以API的形式发布出来的,因此API 设计都是声明式2、控制器的行为应该是可重入和幂等的,通过幂等的控制器使得系统一致朝用户期望状态努力,且结果稳定。(可重入就是说某个线程已经获得某个锁,可以再次获取锁而不会出现死锁。)3、所有对象应该是互补和可组合的,而不是简单的封装,通过组合关系构建的系统,通常能保持很好的高内聚,松耦合特性4、API操作负责度应该与对象数量成线性

2021-11-07 17:27:53 501

翻译 1.1云计算的变革_kubernetes生产化实践之路

云原生:将应用程序构建为微服务,并将其运行在完全动态地利用云计算模型优势的容器编排平台上的方法。云原生主要关注的是如何创建和部署程序,而不是运行在哪里。设计云原生应用可以从如下考虑:松耦合的微服务:按照业务功能设计成微服务,之间通过轻量级协议通信(例如HTTP)无状态且可规模化部署故障的容忍性和弹性:跨数据中心、跨云厂商部署时,单个服务部分实例异常不影响整体服务的质量1.1、云计算的变革物理机–虚拟机–容器化1.1.2、虚拟化时代1.基础架构即服务(Infrastructure a

2021-10-26 16:50:04 413

翻译 06 | 白话容器基础(二):隔离与限制

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。一、隔离上节说明了:Namespace技术实际上修改了应用进程看待整个计算机“视图”,即它的视线被操作系统限制,只能看到某些指定的内容。对于宿主机来说,这些被隔离了的进程和其他进程并没有太大的区别。在这个虚拟机和容器的技术对比图中,不应该把Docker Engine 或者任何容器管理工具放在跟Hypervisor 相同的位置。因为他们并不像Hypervisor 那样对应用的隔离环境负责,也不会创建任何实体的容器,真正对隔离环境负责的是宿.

2021-10-12 09:23:46 319

翻译 05 | 白话容器基础(一):从进程说开去

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。容器本身没有价值,有价值的是容器编排。进程:一个程序运行起来后的计算机执行环境的总和。 一个程序被执行起来,它就从磁盘上的二进制文件,变成了计算机内存中的数据,寄存器里的值,堆栈中的指令,被打开的文件,以及各种设备的状态的信息集合。容器的核心技术:通过约束和修改进程的动态表现,从而为其创造出一个边界。Cgroups 技术是用来制造约束的主要手段;Namespace 技术用来修改进程视图的主要手段==在容器中可以看到进程的PID 是从.

2021-10-08 14:51:47 281

翻译 加餐02 | 理解perf:怎么用perf聚焦热点函数?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。一、问题回顾什么情况下使用perf工具的,perf工具给我们带来了哪些信息?在调试网路延时的时候,我们使用了 ebpf 的工具之后,发现了节点上一个 CPU,也就是 CPU32 的 Softirq CPU Usage(在运行 top 时,%Cpu 那行中的 si 数值就是 Softirq CPU Usage)时不时地会增高一下。在发现CPU Usage 异常增高的时候,肯定需要排查是什么程序导致的,这个时候就用到了 perf。抓取数据,.

2021-09-30 11:13:59 714

翻译 加餐01 | 案例分析:怎么解决海量IPVS规则带来的网络延时抖动问题?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。一、问题背景虚拟机迁移到了 Kubernetes 平台上。迁移之后,用户发现他们的应用在容器中的出错率很高,相比在之前虚拟机上的出错率要高出一个数量级。分析了应用程序的出错日志,发现在 Kubernetes 平台上,几乎所有的出错都是因为网络超时导致的。经过网络环境排查和比对测试,我们排除了网络设备上的问题,那么这个超时就只能是容器和宿主机上的问题了。在虚拟机中的出错率是 0.001%,而在容器中的出错率是 0.01%~0.04%。偶发.

2021-09-29 16:31:09 824

翻译 加餐福利 | 课后思考题答案合集

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。

2021-09-28 16:30:34 172

翻译 20 | 容器安全(2):在容器中,我不以root用户来运行程序可以吗?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。

2021-09-12 17:37:15 1722

翻译 19 | 容器安全(1):我的容器真的需要privileged权限吗?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。下面说下容器安全的模块。容器的安全很大程度由容器的架构特性决定的:比如容器与宿主机共享Linux 内核,通过Namespace来做资源的隔离,通过 shim/runC 的方式来启动等。这些容器架构特性,在选择使用容器之后,作为容器的用户,其实没有多少能力去对架构层面做安全上的改动了。你可能会说用Kata Container、gVisor 就是安全“容器”了。不过,Kata 或者 gVisor 只是兼容了容器接口标准,而内部的实现完全是另外.

2021-09-07 21:48:53 1831

翻译 18 | 容器网络配置(3):容器中的网络乱序包怎么这么高?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。

2021-09-05 17:28:15 1612

翻译 17|容器网络配置(2):容器网络延时要比宿主机上的高吗?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。上一节说了网络接口配置中的,veth 的接口配置方式,是大部分容器缺省用的网络配置方式。veth 的方式:一个数据包要从容器里发送到宿主机外,需要先从容器里的eth0(veth_container)把包发送到宿主机上 veth_host ,然后再在宿主机上通过nat或者路由的方式,经由宿主机上的eth0 向外发送。...

2021-09-01 17:10:28 635

翻译 16 | 容器网络配置(1):容器网络不通了要怎么调试?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。下面了解下容器网络不通了怎么调试。一、问题再现在容器中ping 公网地址不通;在宿主机上是可以的。# docker run -d --name if-test centos:8.1.1911 sleep 36000244d44f94dc2931626194c6fd3f99cec7b7c4bf61aafc6c702551e2c5ca2a371# docker exec -it if-test bash [root@244d44f9.

2021-08-31 21:48:34 1865

翻译 15 | 容器网络:我修改了/proc/sys/net下的参数,为什么在容器中不起效?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。今天了解下和 Network Namespace 相关的一个问题,容器中的网络参数。一、问题再现容器中运行的应用程序,如果需要用到 tcp/ip 协议栈的话,常常需要修改一些内核中网络协议栈的参数。很大一部分网络参数都在 /proc 文件系统下的 /proc/sys/net/ 目录里。内核网络相关的参数1、直接到/proc 文件系统下的/proc/sys/net/ 目录里对参数做修改2、或者使用sysctl 工具来修改先在宿主机.

2021-08-30 20:49:48 1480

翻译 14 | 容器中的内存与I/O:容器写文件的延时为什么波动很大?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。Linux 中两种I/O模式:Direct I/O,Buffered I/O模式Buffered I/O 是Linux的系统调用 write() 缺省模式。这种模式的write()函数调用返回要快一些,使用的更普遍一些。当使用Buffered I/O的应用程序从虚拟机迁移到容器后,多了Memory Cgroup的限制后,write()写相同大小的数据块花费的时间,波动延时比较大。一、问题再现场景:从文件中每次读取一个64KB大小的数据.

2021-08-29 16:27:38 726

翻译 13 | 容器磁盘限速:我的容器里磁盘读写为什么不稳定?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。一、场景再现运行 代码 运行一下make image来做一个带 fio 的容器镜像,用来测试磁盘文件读写性能的工具。mkdir -p /tmp/test1docker stop fio_test1;docker rm fio_test1docker run --name fio_test1 --volume /tmp/test1:/tmp registery/fio:v1 fio -direct=1 -rw=write -ioengi.

2021-08-24 21:56:34 1084

翻译 12 | 容器文件Quota:容器为什么把宿主机的磁盘写满了?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。

2021-08-24 14:34:34 685

翻译 11 | 容器文件系统:我在容器中读写文件怎么变慢了?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。把 Linux 从 ubuntu18.04 升级到 ubuntu20.04 之后,在容器里用 fio 这个磁盘性能测试工具,在 ubuntu 20.04 宿主机上的容器中文件读写的性能只有 ubuntu18.04 宿主机上的 1/8 左右了。一、问题再现先启动一个 ubuntu18.04的虚拟机,Linux内核版本是4.15。虚拟机上用命令 docker run -it ubuntu:18.04 bash 启动一个容器接着容器里运行f.

2021-08-01 14:42:59 873

翻译 10 | Swap:容器可以使用Swap空间吗?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。swap空间:它就是一块磁盘空间,当内存写满的时候,就可以把内存中不常用的数据暂时写到这个 swap 空间上,这样一来内存空间就可以释放出来,用来满足新的内存申请的需求。它的好处是可以应对一些瞬时突发的内存增大需求,不至于因为内存一时不够而触发OOM killer,导致进程被杀死。那么容器里使用 swap 有什么影响呢?一、问题再现在一个有swap的机器上启动一个容器,设置好memory cgroup 限制。创建swap的命令:.

2021-07-27 10:01:03 999

翻译 09 | Page Cache:为什么我的容器内存使用量总是在临界点?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。上一节我们知道,如果容器使用的物理内存超过了 memory.limit_in_bytes,容器中的进程会被 OOM Killer 杀死。不过在有一些容器使用场景中,容器应用有很多文件读写,你会发现整个容器的内存使用量已经接近 Memory Cgroup 上限值了,但是在容器中再申请内存,还是可以申请出来,并没有发生OOM。一、问题再现测试使用的代码:https://github.com/chengyli/training/tree/ma.

2021-07-18 17:09:04 2130

翻译 08 | 容器内存:我的容器为什么被杀了?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。一、问题再现容器在系统中被杀掉,只有一种情况,那就是容器中的进程使用了太多的内存。具体来说就是:容器里所有进程使用的内存量,超过了容器所在Memory Cgroup 里的内存限制,这时 Linux 系统就会主动杀死容器中的一个进程,往往这会导致整个容器的退出。测试代码: https://github.com/chengyli/training/tree/main/memory/oom启动一个容器,然后给容器的Cgroup 内存上限设.

2021-07-15 10:01:22 839

翻译 07 | Load Average:加了CPU Cgroup限制,为什么我的容器还是很慢?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。CPU Cgroup 无法控制 Load Average 的平均负载。而没有这个限制就会影响系统资源的合理调度,很可能导致我们的系统变得很慢。今天说下为什么加了CPU Cgroup的配置后,即使保证了容器的CPU资源,容器中的进程还是会运行的很慢。一、问题再现...

2021-07-11 17:32:19 413

翻译 06|容器CPU(2):如何正确地拿到容器CPU的开销?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。CPU开销的异常,往往是程序异常最明显的一个指标一、问题重现容器中运行top,"%Cpu(s)"那一行中显示的数值,并不是这个容器的 CPU 整体使用率,而是容器宿主机的 CPU 使用率。1.1、进程CPU使用率查看 /proc/[pid]/stat文件中有50多项信息,包括:进程的运行状态,父进程PID,进程优先级,进程使用的内存等等这里关注 stat文件中的 14项utime,15项stime。utime:表示进程的用户态部分在.

2021-07-05 16:03:16 1400 1

翻译 05|容器CPU(1):怎么限制容器的CPU使用?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。容器在Linux系统中最核心的两个概念是 Namespace 和 Cgroups。通过Cgroups 技术限制资源,可以分为很多类型,比如 CPU、Memory、Storage、Network。今天说下如何限制容器的CPU 使用。以k8s为例apiVersion: v1kind: Podmetadata: name: frontendspec: containers: - name: app image: .

2021-07-04 14:45:53 557

翻译 04 | 理解进程(3):为什么我在容器中的进程被强制杀死了?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。今天说下为啥容器中的进程被强制杀死了,帮助理解更好的管理进程,让容器中的进程可以优雅的退出。为啥优雅的停止很重要呢?实际生产环境中,不少应用在退出的时候需要做一些清理工作,比如清理一些远端的链接,或者清除一些本地的临时数据。这样的清理工作,可以尽可能避免远端或者本地的错误发生,比如减少丢包等问题。这些退出清理的工作,通常在SIGTERM 这个信号用户注册的 handler 里进行的。如果进程是被kill -9 ,就是进程收到了 SIG.

2021-06-20 21:20:36 1286

翻译 03|理解进程(2):为什么我的容器里有这么多僵尸进程?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。一、问题再现例子:https://github.com/chengyli/training/tree/master/init_proc/zombie_proc目的:在容器中弄出来很多个僵尸进程(Zombie Process)。# docker run --name zombie-proc -d registry/zombie-proc:v102dec161a9e8b18922bd3599b922dbd087a2ad60c9b34afc.

2021-05-30 14:53:13 546

翻译 02 | 理解进程(1):为什么我在容器中不能kill 1号进程

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。1、问题容器中 kill -9 1为什么不起作用?2、解释2.1、如何理解init 进程init 进程 就是 1号进程Linux 操作系统中,打开电源执行BIOS/boot-loader之后,boot-loader 负责加载Linux 内核。Linux内核执行文件一般放在 /boot 目录下,文件名类似 vmlinuxz* ,在内核完成了操作系统的各种初始化后。 这个程序需要执行的第一个用户态进程就是init 进程。内核代码启动.

2021-05-21 17:05:43 2088

翻译 01-认识容器:容器的基本操作和实现原理

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。1、运行一个镜像# docker run -d centos/httpd:latest解释:run 表示启动一个容器-d : daemon的首字母,表示后台运行centos/httpd:latest : 表示具体启动哪个镜像,默认从dockerhub上下载镜像就是一个特殊的文件系统,提供了容器中程序执行所需的所有文件容器中包含应用程序启动需要三类文件:1、相关的程序可执行文件2、库文件3、配置文件容器运行的时候就不再.

2021-04-21 16:06:42 342

翻译 06 | zabbix分布式监控

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。1、分布式监控:1、proxy用于本区域数据收集,并将数据发送给server2、nodenode节点提供完整的zabbix server 用以建立分布式监控中的层级2、node节点部署的架构3、node架构特性4、proxy架构5、proxy特性6、zabbix proxy的功能...

2021-04-16 11:00:35 81

翻译 05 | zabbix发现、自动注册和web监控

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。之前课程总结:不同的监控方式:一、网络发现定义:根据用户事先定义的规则自动添加监控的主机或服务。

2021-04-15 17:07:43 77

翻译 04 | zabbix宏和用户自定义监控

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。宏(macros):相当于是定义变量对用的值zabbix内置的宏举例:{HOST.NAME}、{HOST.IP} {TRIGGER.NAME}官网定义的宏

2021-04-14 15:33:48 939

翻译 03 | zabbix触发器、action及模板

zabbix的工作过程:数据采集–>数据存储–>数据展示和分析–>报警数据采集:SNMP、agent、ICMP/SSH/IPMI、web数据存储:cacti:rrdnagios:mysqlzabbix:mysql/pgsql/oracle

2021-04-12 09:48:48 140

翻译 14 | 进程数据结构(下):项目多了就需要项目管理系统

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。

2021-04-11 18:15:45 106

翻译 13 | 进程数据结构(中):项目多了就需要项目管理系统

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。继续说task_struct 结构…1.1、运行统计信息参照员工工作情况,也需要了解进程的工作情况,例如进程在用户态、内核态消耗的时间,上下文切换次数等。u64 utime;//用户态消耗的CPU时间u64 stime;//内核态消耗的CPU时间unsigned long nvcsw;//自愿(voluntary)上下文切换计数unsigned long nivcsw;//非自愿(in.

2021-04-01 17:24:16 102

翻译 12 | 进程数据结构(上):项目多了就需要项目管理系统

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。

2021-03-25 10:37:07 131

翻译 02 | zabbix安装配置及基本监控功能的实现

一、zabbix安装zabbix,zabbix-sever,zabbix-mysql,zabbix-agent,zabbix-sender等二、zabbix界面使用说明主机:表示监控的项目吧,宏里面可以定义 key value应用集:多个监控项可以归为一类,比如都是某个服务的,或者某个方面的监控项:具体的一个监控项目触发器:达到什么条件出发阈值图形:多个监控项的数据想放在同一个图形中显示,使用图形来设置。...

2021-03-24 14:32:56 72

翻译 01 | zabbix架构

一、信息了解SNMP协议简单了解:https://www.jianshu.com/p/6a9e83aa41c0IPMI协议简单了解:https://blog.51cto.com/pesen/1283836SNMP 获取网络设备的数据IPMI 可以ping服务器,可以控制温度和风扇二、zabbix架构有哪些监控方式,获取数据的方式:...

2021-03-22 20:43:09 248

翻译 11 | 线程:如何让复杂的项目并行执行?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。一、为什么要有线程进程默认有一个主线程。线程负责执行二进制指令,根据指令一行行执行下去。进程管理的范围更大,除了指令,还包内存,文件系统等。进程相当于一个项目;线程是为了完成项目需求,而建立的一个个开发任务。使用进程实现并行执行的问题有:1、创建进程占用资源太多2、进程之间的通信需要数据在不同的内存空间传来传去,无法共享Linux中,前台任务和后台任务分开。有些任务需要马上返回结果,例如输入一个字符有些任务可以默默执行的.

2021-03-20 17:50:07 209

翻译 10 | 进程:公司接这么多项目,如何管?

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。

2021-03-16 21:27:04 132

翻译 09 | 系统调用:公司成立好了就要开始接项目

本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。

2020-11-11 22:22:38 193

nginx-1.8.0.tar.gz

nginx的1.8版本的压缩源码文件,可以下载使用。

2015-09-26

mysql-community-release-el5-5.noarch.rpm

yum安装mysql所需noarch.rpm

2015-09-26

mysql-community-release-el6-5.noarch.rpm

yum安装最近mysql所需noarch.rpm,el6版本

2015-09-26

空空如也

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

TA关注的人

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