自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 问答 (2)
  • 收藏
  • 关注

原创 04-容器基础:深入了解Docker容器

在前面三次分享中,已经介绍了Linux Namespace的隔离能力,Linux Cgroups的限制能力,以及基于rootfs的文件系统三个角度,剖析了一个Linux容器的核心实现原理。之所以要强调Linux容器,是因为比如Docker on Mac,以及Windows Docker(Hyper-V实现)​,实际上是基于虚拟化技术实现的而在今天的分享中,会通过一个实际案例,对前面的所有内容做一次深入的总结和扩展。希望通过这次的讲解,能够让你更透彻地理解Docker容器的本质。

2024-08-23 11:26:55 395

原创 03-容器基础:深入理解容器镜像

在这一章介绍了Linux容器文件系统的实现方式。而这种机制,正是我们经常提到的容器镜像,也叫作:rootfs。它只是一个操作系统的所有文件和目录,并不包含内核,最多也就几百兆。而相比之下,传统虚拟机的镜像大多是一个磁盘的“快照”​,磁盘有多大,镜像就至少有多大。通过结合使用Mount Namespace和rootfs,容器就能够为进程构建出一个完善的文件系统隔离环境。

2024-08-22 11:23:17 1182

原创 JWT-JSON Web Token

总的来说,JWT是一种特定的令牌格式,具有结构化的JSON表示和基于密钥的签名验证机制。结构:常规的令牌通常只包含令牌本身的信息,而JWT由三个部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部包含令牌的类型和签名算法,载荷包含有关用户和其他相关信息的声明,签名用于验证令牌的完整性。(4)JWT 的最大缺点是,由于服务器不保存 session 状态,因此无法在使用过程中废止某个 token,或者更改 token 的权限。另外,持久层万一挂了,就会单点失败。

2024-08-22 10:20:01 789

原创 02-容器基础:隔离与限制

在上一篇文章中,详细介绍了Linux容器中用来实现“隔离”的技术手段:Namespace。而通过这些讲解,你应该能够明白,Namespace技术实际上修改了应用进程看待整个计算机“视图”​,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。但对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有太大区别。

2024-08-21 10:36:30 926

原创 01-容器基础:从进程说起

那么容器究竟是怎么一回事呢?顾名思义,沙盒就是能够像一个集装箱一样,把你的应用"装"起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便的搬来搬去,这不就是PaaS最理想的状态吗。不过这两个技术说起来简单,但真要人从技术手段去实现它们,可能很多人就无从下手了。所以,就先说说这个"边界"的实现手段把。

2024-08-21 10:35:34 1337

原创 平均负载是什么?

这里我再举个例子,假设我们在一个单 CPU 系统上看到平均负载为 1.73,0.60,7.98,那么说明在过去 1 分钟内,系统有 73% 的超载,而在 15分钟内,有 698% 的超载,从整体趋势来看,系统的负载在降低。讲完了什么是平均负载,现在我们再回到最开始的例子,不知道你能否判断出,在 uptime 命令的结果里,那三个时间段的平均负载数,多大的时候能说明系统负载高?但70%这个数字并不是绝对的,最推荐的方法,还是把系统的平均负载监控起来,然后根据更多的历史数据,判断负载的变化趋势。

2024-08-20 10:10:23 465

原创 Git入门

自诞生于2005年以来,Git日渐完善,它的速度很快,极其适合管理大型项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。Git是一个版本控制软件,具有以下几点优点本地建立版本库本地版本控制多主机异地协同工作重写提交说明可以进行版本回退更好的提交列表更好的差异比较更完善的分支系统速度极快Github与GitLab都是用于管理版本的服务端软件GitLab用于在企业内部管理Git版本库,功能上类似于GitHub。

2024-08-20 10:05:50 1010

原创 第十七章:kubernetes应用扩展

随着Kubernetes⽣态系统的持续发展,越来越多⾼层次的对象将会不断涌现。⽐起⽬前使⽤的对象,新对象将更加专业化。有了它们,开发者将不再需要逐⼀进⾏Deployment、Service、ConfigMap等步骤,⽽是创建并管理⼀些⽤于表述整个应⽤程序或者软件服务的对象。我们能使⽤⾃定义控件观察⾼阶对象,并在这些⾼阶对象的基础上创建底层对象。

2024-08-12 15:44:12 1111

原创 第十六章:开发应用的最佳实践

除了常规的容器,pod还可以包括init容器。如容器名所⽰,它们可以⽤来初始化pod,这通常意味着向容器的存储卷中写⼊数据,然后将这个存储卷挂载到主容器中。⼀个pod可以拥有任意数量的init容器。init容器是顺序执⾏的,并且仅当最后⼀个init容器执⾏完毕才会去启动主容器。换句话说,init容器也可以⽤来延迟pod的主容器的启动——例如,直到满⾜某⼀个条件的时候。init容器可以⼀直等待直到主容器所依赖的服务启动完成并可以提供服务。

2024-08-12 15:39:27 979

原创 第十五章:高级调度

默认情况下,一个集群的主节点需要设置污点,这样才能保证控制平面pod才能部署到主节点上。显示节点的污点信息可以通过kubectl describe node查看节点的污点信息,如以下代码清单所⽰。主节点包含⼀个污点,污点包含了⼀个key、value,以及⼀个 effect,表现为=:。上⾯显⽰的主节点的污点信息,包含⼀个为noderole.kubernetes.io/master的key,⼀个空的value,以及值为NoSchedule的effect。

2024-08-12 15:36:25 1188

原创 第十四章:自动横向伸缩pod与集群节点

还有两种其他类型的度量指标,他们被认为是(自定义度量指标): 即 Pod 度量指标和 Object 度量指标。这些度量指标可能具有特定于集群的名称,并且需要更高级的集群监控设置。第一种可选的度量指标类型是Pod 度量指标。这些指标从某一方面描述了 Pod, 在不同 Pod 之间进行平均,并通过与一个目标值比对来确定副本的数量。它们的工作方式与资源度量指标非常相像,只是它们仅支持target类型为。

2024-08-12 15:31:20 886

原创 第十三章:计算资源管理

Kubernetes允许⽤户为节点添加属于⾃⼰的⾃定义资源,同时⽀持在pod资源requests⾥申请这种资源。⾸先,需要通过将⾃定义资源加⼊节点API对象的capacity属性让Kubernetes知道它的存在。这可以通过执⾏HTTP的PATCH请求来完成。资 源 名 称可 以 是 不 以 kubernetes.io 域 名 开 头 的 任 意值 , 例 如example.org/myresource,数量必须是整数(例如不能设为100m,因为 0.1不是整数;

2024-08-12 15:28:23 963

原创 CPU利用率100%该怎么办

Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。为了维护 CPU 时间,Linux 通过事先定义的节拍率(内核中表示为 HZ)​,触发时间中断,并使用全局变量 Jiffies 记录了开机以来的节拍数。每发生一次时间中断,Jiffies 的值就加 1。节拍率 HZ 是内核的可配选项,可以设置为100、250、1000 等。

2024-08-04 11:13:34 804

原创 第十二章:设置pod和容器权限-保障集群内节点和⽹络安全

PodSecuri​tyPol​icy是⼀种集群级别(⽆命名空间)的资源,它定义了⽤户能否在pod中使⽤各种安全相关的特性。维护PodSecuri​tyPol​icy资源中配置策略的⼯作由集成在API服务器中的PodSecuri​tyPol​icy准⼊控制插件完成​。需查看是否开启了PodSecurityPolicy准入插件。当有⼈向API服务器发送pod资源时,PodSecuri​tyPol​icy准⼊控制插件会将这个pod与已经配置的PodSecuri​tyPol​icy进⾏校验。

2024-08-04 09:55:43 789

原创 第十一章:Kubernetes API服务器的安全防护

现在已经了解到了API服务器要求客户端在服务器上执行操作之前对自己进行身份验证,了 解 了 是 怎 么 通 过 发 送pod/var/run/secrets/kubernetes.io/serviceaccount/token ⽂件内容来进⾏⾝份认证的。这个⽂件通过加密卷挂载进每个容器的⽂件系统中。但是这个文件代表了什么呢?每个pod上都与一个ServiceAccount相关联,它代表了运行在pod中应用程序的身份证明。token文件持有ServiceAccount的认证token。

2024-08-04 09:51:22 940

原创 公钥和私钥

它的主要任务是为数字通信中的参与者(比如网站、应用程序等)提供数字证书,以确保其身份的真实性、数据传输的保密性和完整性。简单来说,公钥的公开的,谁都能拿到;但有时候我们会有传输大量重要数据的时候,这个时候不管是对称加密和非对称加密好像都不太行,要么安全性不高,要么效率太慢。最好是使用安全的对称加密,也就是使用安全的方法把一个密钥传输给对方,这样就能比较安全的使用对称加密了。上一段讲了如何确定消息是发送方发送的,我们要使用到公钥对数字签名进行验证,那么我们如何确定我们获得的公钥就是对方的公钥呢?

2024-07-31 19:20:23 465

原创 第十章:了解Kubernetes机制

如何部署插件通过提交YAML清单文件到API服务器,这些组件会成为插件并作为pod部署。有些组件是通过deployment资源或者ReplicationController资源部署的,有些是通过daemonset。DNS服务器是如何工作的集群中的所有pod默认配置使用集群内部DNS服务器。这使得pod能够轻松的通过名称查询服务,甚至是无头服务pod的IP地址。DNS服务器pod通过kube-dns服务对外暴露,使得该pod能够像其他pod一样在集群中移动。服务的IP地址在每个集群每个容器的文件的。

2024-07-31 19:19:30 912

原创 第九章:StatefulSet-部署有状态的多副本应用

让pod拥有可预知的名称和主机名并不是全部,与普通的pod不一样的是,有状态的pod有时候需要通过其主机名来定位,而无状态的pod则不需要,因为每个无状态的pod都是一样的,在有需要的时候随便选择一个即可。但对于有状态的pod来说,因为它们都是彼此不同的,通常希望操作的是其中特定的一个。基于以上原因,一个StatefulSet通常要求你创建一个用来记录每个pod网络标记的headless Service。

2024-07-31 19:17:05 437

原创 第八章:Deployment-声明式的升级应用

根据前面介绍的章节已经知道如何将应用程序打包进容器,将它们分组到pod中,并为它们提供临时存储或持久化存储,将密钥或配置文件注入并可以使pod之间相互通信。除此之外,还需要升级应用程序。这一章讲述如何升级在Kubernetes集群中运行的应用程序,以及Kubernetes如何帮助实现真正的零停机升级过程。升级操作可以通过ReplicationController或ReplicaSet实现,但Kubernetes提供了另一种基于ReplicaSet的资源deployment,并。

2024-07-22 15:49:01 978

原创 第七章:从应用访问pod元数据及其他资源

当暴露容器级的元数据时,如容器可使用的资源限制或资源请求,必须指定引用资源字段对应的容器名称.

2024-07-22 15:48:05 561

原创 第六章:ConfigMap和Secret-配置应用程序

在Docker中运行完整的指令需要同时指定命令与参数。ENTRYPOINT与CMDENTRYPOINT定义容器启动时被调用的可执行程序。CMD指定传递给ENTRYPOINT的参数。可以直接使用CMD指定镜像运行时想要执行的命令,但还是推荐使用ENTRYPOINT。# 可以使用--entrypoint替换ENTRYPOINT命令# 直接在后面接参数即可覆盖cmd# 安装curl# 设置ENTRYPOINT# 设置CMD作为默认参数shell与exec形式区别shell形式:如。

2024-07-22 15:46:49 965

原创 第四章:服务-让客户端发现pod并与之通信

kubernetes服务是一种为一组功能相同的pod提供单一不变的接入点的资源。当服务存在时,它的IP和端口不会改变。客户端通过IP地址和端口号建立连接,这些连接会被路由到提供该服务的任意一个pod上。通过这种方式,客户端不需要知道每个提供服务的pod的地址,这样这些pod就能被随意的在集群中增加或删除。在之前的内容中,我们介绍了存活探针,就绪探针与存活探针一样,都会定期调用,确定特定的pod是否准备好接收客户端请求了。与存活探针不同的是,就绪探针就算检查失败,也不会终止或重启pod。

2024-07-17 20:30:51 882

原创 第五章:卷-将磁盘挂载到容器

Kubernetes的卷是pod的一个组成部分,因此卷在pod的规范中定义。它们不是独立的Kubernetes资源,也不能单独创建或删除。pod中所有容器都可以使用卷,但必须先将它挂载在每个需要访问它的容器中。在每个容器中都可以在文件系统的任意位置挂载卷。

2024-07-17 20:26:46 1113

原创 第三章:副本机制和控制器

在上一节中,学会了如何创建、监控和管理pod,但在实际应用中,我们希望部署能自动保持运行,并且保持健康,无需手动干预任何东西,而要做到以上几点,我们需要创建或Deployment这类资源,由他们来创建并管理实际的pod。

2024-07-17 20:23:27 893

原创 第二章:pod-运行于kubernetes中的容器

本章内容包括pod是kubernetes中最为重要的核心概念,其他对象仅仅为管理、暴露pod或被pod使用。

2024-07-17 20:20:15 1198

原创 xargs命令

xargs命令是将标准输入转换为命令行参数,默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。为什么有了管道还需要这个命令?这是因为很多命令不支持管道,所以需要xargs命令来接收命令的输出来当下一个命令的参数。

2023-11-22 15:07:33 186

原创 文件查找命令:find

find命令在Linux中常用的用于查找目录和文件,同时也可以调用其他命令执行相应的操作的命令。十分重要语法格式常用操作cwbkMGfdl。

2023-11-20 20:43:43 151

原创 深入Ansible

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

2023-11-20 14:43:07 362

原创 Prometheus入门与实战

1.Prometheus介绍 1.什么是监控? 从技术角度来看,监控是度量和管理技术系统的工具和过程,但监控也提供从系统和应用程序生成的指标到业务价值的转换。这些指标转换为用户体验的度量,为业务提供反

2023-11-15 14:39:39 453

原创 Zabbix深入解析与实战

前段时间在面试的时候,本来面的一切顺利,但是在聊到nginx的时候,面试官突然提问到:“你平时nginx都是用什么用户启动的?”,我一愣,猜想肯定有坑,但也只能见招拆招了,“nginx用户”,果不其然,面试官立马接下一招:"那你用nginx用户启动nginx,这时候nginx还能监听80端口嘛?"我一愣,就这?按照平时使用nginx的经验,我回答到:“能”。但是面试官一叹气:“再回去多看看吧”。我脑海中模糊的闪过一些系统端口和系统用户的知识,但为时已晚,一结束面试,马上开始查漏补缺。

2023-11-10 18:04:39 566

原创 为什么nginx用户使用的nginx不能监听80端口?

前段时间在面试的时候,本来面的一切顺利,但是在聊到nginx的时候,面试官突然提问到:“你平时nginx都是用什么用户启动的?”,我一愣,猜想肯定有坑,但也只能见招拆招了,“nginx用户”,果不其然,面试官立马接下一招:"那你用nginx用户启动nginx,这时候nginx还能监听80端口嘛?"我一愣,就这?按照平时使用nginx的经验,我回答到:“能”。但是面试官一叹气:“再回去多看看吧”。我脑海中模糊的闪过一些系统端口和系统用户的知识,但为时已晚,一结束面试,马上开始查漏补缺。

2023-11-09 21:19:46 658

原创 一篇文章带你搞懂DNS全流程

DNS是指域名系统,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。一个由分层的DNS服务器实现的分布式数据库一个使得主机能够查询分布式数据库的应用层协议FQDN-->IPFQDN 是的缩写,是指一个完整的域名,包括主机名和域名。DNS是一个分布式数据库,DNS不是一台服务器负责全球域名映射,而是由全球各个区域多个服务器组合成的一个复杂的系统,每个服务器负责一部分映射。

2023-11-08 21:08:45 1479

原创 文件和目录操作命令:cp

cp命令相信大家都不陌生,Linux中专门用来复制文件或目录的命令,但是平时大多都只是用来进行简单的复制操作,但其实cp能让复制更加多样化。

2023-11-08 15:30:13 860

原创 文件和目录操作命令:tree

在中文中的意思是树,功能是以树状图列出指定目录下的所有内容,包括所有文件、子目录及子目录中的目录和文件。如果命令不带任何选项和目录,那么默认会显示当前目录的目录结构。选项有个有意思的地方,那就是如果命令后不带目录,使用。开头,如果带了目录,那么会以后面的目录替换这个。选项一起使用,用来获取目录下所有完整路径。选项,用来区分文件和目录。

2023-11-07 16:30:13 136

原创 Linux命令行

众所周知,Linux是一个主要通过命令行来进行管理系统的操作系统,即通过键盘输入指令来管理系统的相关操作,如编辑文件、启动停止服务等。这和Windows用鼠标进行可视化管理不同,通过命令行来管理系统的优点是能够十分便捷的批量、自动化管理系统。很多命令选项是可选的,基础使用的时候可以不带,甚至有的命令参数都可以省略。如bc计算器,直接一个命令就能使用。

2023-11-07 15:37:40 66

原创 自定义终结符:EOF

在平时使用Shell的时候,我们可能对于EOF并不陌生,我们经常使用来批量写入文件,但我们其实对于EOF又很陌生,很多人都只知道EOF有这么一个用法,但其实并不知道EOF代表什么,EOF其实就是,自定义终止符,为什么说是自定义呢?往下看就知道了。上面的例子是多数人都会使用的批量文本重定向到文件,这是Shell中通常将EOF与

2023-11-06 22:47:15 482

原创 kubernetes网络详解

kubernetes网络是Kubernetes的一个重要部分,各个pod之间或者pod与service之间的通信都是通过Kubernetes网络进行的

2023-11-03 10:17:30 512

原创 Linux三剑客

函数介绍Linux Shell中的函数和大多数编程语言中的函数一样将相似的任务或代码封装到函数中,供其他地方调用函数定义如何调用函数直接使用函数名调用,可以想象为Shell中的一条命令函数内部可以直接使用参数$1、2.....2.....2.....n调用函数:function_name $1 $2# 把一个检查nginx进程是否存在的功能封装成一个函数 #!

2023-03-18 18:30:51 169 1

原创 使用set命令完善shell脚本

在Linux中编写Shell脚本,当脚本中有命令执行失败,我们又没有写相对于的判断条件时,脚本并不会向其他语言一样自动退出,而是忽略执行失败的命令继续向下执行,这可能会导致很多错误,增加我们排错的难度、浪费我们的时间。set命令是Linux系统中的一个内置变量,用来设置和取消设置shell变量和选项,。它通常用在shell脚本中,用来配置环境和控制脚本的行为。set也能定义变量,跟export类似,但不同的是set只定义当前shell的变量,而export是定义环境变量。当然不是,在脚本编写中。

2023-03-18 18:28:16 173

原创 计网[未完...]

为了支持支持网络系统的互联互通,国际化标准组织(ISO)与1984年提出开放系统互连(OSI)参考模型OSI参考模型解释通信过程各层具体功能应用层:所有能和用户交互产生网络流量的程序服务:文件传输(FTP),电子邮件(SMTP),万维网(HTTP)表示层:用于处理在两个通信系统中交换信息的表示方式(语法和语义)功能:1.数据格式变换2.数据加密解密3.数据压缩和恢复会话层:向表示层实体/用户进程提供建立连接并在连接上有序的传输数据。这是会话,也是建立同步(SYN)功能。

2022-10-29 20:29:33 548

MySQL数据库笔记.md

MySQL数据库笔记.md

2022-11-03

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

TA关注的人

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