自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 K8s-Traefik Ingress Controller

traefik 本身设计的就能够实时跟 kubernetes api 交互,感知后端 service,pod 等的变化,自动更新配置并重载。deployment 可以更方便的伸缩,但是不能确定有哪些 Node 在运行 traefik 所以不能确定的知道后端 ip。daemonset 能确定有哪些 Node 在运行 traefik,所以可以确定的知道后端 ip,但是不能方便的伸缩。//访问 Traefik UI,浏览器访问 http://Nodeip:NodePort/dashboard/

2023-11-14 09:14:31 455

原创 k8s 对外服务之 Ingress

ingress-controller并不是k8s自带的组件,实际上ingress-controller只是一个统称,用户可以选择不同的ingress-controller实现,目前,由k8s维护的ingress-controller只有google云的GCE与ingress-nginx两个,其他还有很多第三方维护的ingress-controller,具体可以参考官方文档。在Kubernetes中,Pod的IP地址和service的ClusterIP仅可以在集群网络内部使用,对于集群外的应用是不可见的。

2023-11-14 09:08:27 471

原创 k8s 配置资源管理

●kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中;在数据卷里面使用 ConfigMap,就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容。●作为挂载到一个或多个容器上的卷 中的文件。

2023-11-09 16:54:17 462

原创 k8s-Pod控制器

而在 deployment中pod模板中创建的存储卷是一个共享的存储卷,多个pod使用同一个存储卷,而statefulset定义中的每一个pod都不能使用同一个存储卷,由此基于pod模板创建pod是不适应的,这就需要引入volumeClainTemplate,当在使用statefulset创建pod时,会自动生成一个PVC,从而请求绑定一个PV,从而有自己专用的存储卷。当节点挂了,重建之后的标识符是不变的,每一个节点的节点名称是不能改变的。当有 Node 加入集群时,也会为他们新增一个 Pod。

2023-11-08 15:13:20 442

原创 k8s持久化存储PV、PVC

Retain就是保留现场,K8S集群什么也不做,等待用户手动去处理PV里的数据,处理完后,再手动删除PV。上面介绍的PV和PVC模式是需要运维人员先创建好PV,然后开发人员定义好PVC进行一对一的Bond,但是如果PVC请求成千上万,那么就需要创建成千上万的PV,对于运维人员来说维护成本很高,Kubernetes提供一种自动创建PV的机制,叫StorageClass,它的作用就是创建PV的模板。-------------------- emptyDir存储卷 --------------------

2023-11-08 09:32:27 285

原创 Kubernetes 亲和性 反亲和性 污点 容忍及维护驱逐

但我们可以在 Pod 上设置容忍(Tolerations),意思是设置了容忍的 Pod 将可以容忍污点的存在,可以被调度到存在污点的 Node 上。使用 kubectl taint 命令可以给某个 Node 节点设置污点,Node 被设置上污点之后就和 Pod 之间存在了一种相斥的关系,可以让 Node 拒绝 Pod 的调度执行,甚至将 Node 已经存在的 Pod 驱逐出去。(1)调度到某台 node 上。//将 Node 标记为不可调度的状态,这样就不会让新创建的 Pod 在此 Node 上运行。

2023-11-08 08:59:01 2412

原创 List-Watch集群调度

原因很简单,假设这个时候 kubectl 发命令,要扩充 Pod 副本数量,那么上面的流程又会触发一遍,kubelet 会根据最新的 Pod 的部署情况调整 Node 的资源。12、kubelet 是在 Node 上面运行的进程,它也通过 List-Watch 的方式监听(Watch,通过https的6443端口)APIServer 发送的 Pod 更新的事件。1、Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。

2023-11-01 16:13:03 125

原创 pod进阶--02

2、Running:pod已经与node绑定了(调度成功),而且pod中所有的container已经创建出来,至少有一个容器在运行中,或者容器的进程正在启动或者重启状态。但如果长时间处于Waiting状态,container会有一个字段reason表明它所处的状态和原因,如果这个原因很容易能标识这个容器再也无法启动起来时,例如ContainerCannotRun,整个服务启动就会迅速返回。4、Failed:pod中的所有容器都被terminated,至少一个container是非正常终止的。

2023-11-01 10:56:45 70

原创 k8s---pod进阶

举例PS:在买硬盘的时候,操作系统报的数量要比产品标出或商家号称的小一些,主要原因是标出的是以 MB、GB为单位的,1GB 就是1,000,000,000Byte,而操作系统是以2进制为处理单位的,因此检查硬盘容量时是以MiB、GiB为单位,1GiB=2^30=1,073,741,824,相比较而言,1GiB要比1GB多出1,073,741,824-1,000,000,000=73,741,824Byte,所以检测实际结果要比标出的少一些。最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。

2023-10-31 19:50:47 386

原创 kubeadm方式部署单节点kubernetes环境

----------------------------- 部署 Dashboard -------------------------------------------------- 所有节点安装kubeadm,kubelet和kubectl -------------------------------------------------- 环境准备 ------------------------------########### 内核参数优化方案 ##########

2023-10-26 09:20:24 290

原创 K8s 部署 CNI 网络组件+k8s 多master集群部署+负载均衡

目前比较常用的CNI网络组件是flannel和calico,flannel的功能比较简单,不具备复杂的网络策略配置能力,calico是比较出色的网络管理插件,但具备复杂网络配置能力的同时,往往意味着本身的配置比较复杂,所以相对而言,比较小而简单的集群使用flannel,考虑到日后扩容,未来网络可能需要加入更多设备,配置更多网络策略,则使用calico更好。------------------------------ 部署 CNI 网络组件 ------------------------------

2023-10-25 09:35:00 1858

原创 二进制部署 Kubernetes(master和node)

etcd内部采用raft协议作为一致性算法,etcd是go语言编写的。------------------------------ 部署 Master 组件 ------------------------------------------------------------ 部署 docker引擎 ------------------------------------------------------------ 部署 etcd 集群 ------------------------------

2023-10-23 16:27:12 113

原创 Kubernetes概述及其组件/核心组件

从 Master 节点获取自己节点上 Pod 的期望状态(比如运行什么容器、运行的副本数量、网络或者存储如何配置等), 直接跟容器引擎交互实现容器的生命周期管理,如果自己节点上 Pod 的状态与期望状态不一致,则调用对应的容器平台接口(即 docker 的接口)达到这个状态。在K8S的集群里,虽然每个Pod会被分配一个单独的IP地址,但由于Pod是有生命周期的(它们可以被创建,而且销毁之后不会再启动),随时可能会因为业务的变更,导致这个 IP 地址也会随着 Pod 的销毁而消失。K8S 的存储服务。

2023-10-23 09:12:13 126

原创 Ansible 的脚本 --- playbook 剧本

Jinja是基于Python的模板引擎。(4)在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建。此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件。在Ansible中,提供的唯一一个通用的条件判断是when指令,当when指令的值为true时,则该任务执行,否则不执行该任务。

2023-10-17 14:13:45 517

原创 ansible

Ansible其中一个比较鲜明的特性是Agentless,即无Agent的存在,它就像普通命令一样,并非C/S软件,也只需在某个作为控制节点的主机上安装一次Ansible即可,通常它基于ssh连接来控制远程主机,远程主机上不需要安装Ansible或其它额外的服务。Ansible是基于模块工作的,它只是提供了一种运行框架,它本身没有完成任务的能力,真正执行操作的是Ansible的模块, 比如copy模块用于拷贝文件到远程主机上,service模块用于管理服务的启动、停止、重启等。

2023-10-13 12:06:15 762

原创 Docker--harbor私有仓库部署与管理

然后运行 prepare 脚本来填充配置;------------------------------------2、 Harbor 简介 ------------------------------------------------------------------------ 维护管理Harbor ------------------------------------------------------ 1、搭建本地私有仓库 ------------------------------

2023-10-11 19:18:02 382

原创 docker compose和consul(服务注册与发现)

后端服务A-N可以把当前自己的网络位置注册到服务发现模块,服务发现就以K-V的方式记录下来,K一般是服务名,V就是IP:PORT。docker-compose 可以简化docker容器的管理,使得多个容器之间的部署,连接变得更加简单、可靠,同时还能够实现服务的自动扩展和容器的定期更新等功能,此外还支持设置各种容器之间的依赖关系。------------------------------------ consul 部署 ------------------------------------

2023-10-10 09:41:28 440

原创 dockerfile lnmp 搭建wordpress、docker-compose搭建wordpress

创建Docker网络:mynetwork 子网:172.18.0.0/16 选项:com.docker.network.bridge.name=docker1。#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。写完相对应的Dockerfile文件后编写docker-compose.yml文件。使用标签"nginx:lnmp"构建Docker镜像。同上:在相应的目录内编写Dockerfile文件!格式:docker pull 仓库名称[:标签]

2023-10-09 10:01:20 921

原创 Docker 的数据管理与Dockerfile 镜像的创建

但是当编写一个新的Dockerfile文件来基于A镜像构建一个镜像(比如为B镜像)时,这时构造A镜像的Dockerfile文件中的ONBUILD指令就生效了,在构建B镜像的过程中,首先会执行ONBUILD指令指定的指令,然后才会执行其它指令。在Docker镜像的最底层是bootfs,这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。(5)镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件,只是这个文件在 Docker 容器中不可见了。

2023-10-06 12:01:00 986

原创 Docker基本管理

这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。--------------------------------资源控制---------------------------------------------------

2023-10-05 14:16:45 247

原创 zabbix监控

被动模式:被动模式就是zabbix server 向agent发出指令获取数据,zabbix agent被动的去获取数据并返回给zabbbix server,zabbix server端周期性的向agent索取数据,这种模式的最大问题就是加大zabbix server的工作量,在数百台服务器的环境下zabbix server不能及时获取最新的数据,但是这也是默认的工作方式。-------------------- 安装 zabbix 5.0 --------------------

2023-09-22 09:10:39 196

原创 Filebeat+Kafka+ELK搭建

4.浏览器访问 http://20.0.0.106:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引“filebeat_test-*”,单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。1.部署 Zookeeper+Kafka 集群 (前面已经配过 20.0.0.101、20.0.0.102、20.0.0.103)3.部署 ELK,在 Logstash 组件所在节点上新建一个 Logstash 配置文件。

2023-09-20 10:58:44 361

原创 Zookeeper集群 + Kafka集群

Kafka 是最初由 Linkedin 公司开发,是一个分布式、支持分区的(partition)、多副本的(replicar 协调的分布式消息中间件系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景,比如基于 hadoop 的批处理系统、低延迟的实时系统、Spark/Flink 流式处理引擎,nginx 访问日志,消息服务等等,用 scala 语言编写,此时服务器1票数0票,服务器2票数2票,没有半数以上结果,选举无法完成,服务器1,2状态保持LOOKING。

2023-09-19 11:32:19 335

原创 ELK 企业级日志分析系统

这样是不是感觉很繁琐和效率低下。ELK日志分析系统是一套基于Elasticsearch(ES),Logstash,kibana三个开源的一个日志收集和存储、检索、可视化的日志收集解决方案,ELK可以帮助用户快速定位和分析应用程序的故障,监控应用程序的性能和安全性,以及提供一个丰富的数据分析和展示功能。一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

2023-09-15 14:57:25 381

原创 GFS 分布式文件系统

1 .查看GlusterFS卷gluster volume list 2 .查看所有卷的信息gluster volume info 3 .查看所有卷的状态gluster volume status 4 .停止一个卷gluster volume stop dis-stripe 5 .删除一个卷,注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则删除不成功。

2023-09-13 11:53:53 138

原创 redis主从复制、哨兵、集群模式

(4)Master机器收到Slave端机器的连接后,将其完整的数据文件发送给Slave端机器,如果Mater同时收到多个Slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的Slave端机器,确保所有的Slave端机器都正常。●自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其它从节点改为复制新的主节点。且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

2023-09-08 11:15:01 150

原创 redis 高可用-----持久化

持久化的功能:Redis是内存数据库,数据都是存储在内存中,为了避免服务器断电等原因导致Redis进程异常退出后数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;缺点:RDB文件的致命缺点在于其数据快照的持久化方式决定了必然做不到实时持久化,而在数据越来越重要的今天,数据的大量丢失很多时候是无法接受的,因此AOF持久化成为主流。RDB持久化是将进程数据写入文件,而AOF持久化,则是将Redis执行的每次写、删除命令记录到单独的日志文件中,查询操作不会记录;

2023-09-07 12:00:00 849

原创 NoSQL之Redis配置与优化(一)

要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。例如,在读写分离的MySQL数据库环境中,可以把经常访问的数据存储在非关系型数据库中,提升访问速度。关系型和非关系型数据库的主要差异是数据存储的方式。注:在 Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。2、Redis命令处理的核心模块为单线程,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗。

2023-09-06 13:42:42 695

原创 MHA高可用配置及故障切换

当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 mas然后将所有其他的 slave 重新指向新的 master。●使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。5.mha最后再选择完成新的master之后,会再其余的slave之上执行change master操作,指向新的master,来保障mysql集群的健康性。

2023-09-05 11:24:12 196

原创 MYSQL主从复制与读写分离

(3)同时Master节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至Slave节点本地的中继日志(Relay log)中,Slave节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,即解析成 sql 语句逐一执行,使得其数据和 Master节点的保持一致,最后I/O线程和SQL线程将进入睡眠状态,等待下一次被唤醒。在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。数据库复制被用来把主数据库上事务性操作导致的变更同步到集群中的从数据库。

2023-09-04 11:22:48 91

原创 MySQL高阶语句(三)

需要注意 的是,NULL 值与数字 0 或者空白(spaces)的字段是不同的,值为 NULL 的字段是没有 值的。通常在 FROM 子句中使用关键字 INNER JOIN 来连接多张表,并使用 ON 子句设置连接条件,内连接是系统默认的表连接,所以在 FROM 子句后可以省略 INNER 关键字,只使用 关键字 JOIN。左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参 考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行。使用较多的连接查询包括:内连接、左连接和右连接。

2023-09-01 10:17:49 1031

原创 Mysql高阶语句(二)

需要注意的是,子查询只能返回一列数据,如果需 求比较复杂,一列解决不了问题,可以使用多层嵌套的方式来应对。视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。AS 之后的别名,主要是为表内的列或者表提供临时的名称,在查询过程中使用,库内实际的表名 或字段名是不会被改变的。在嵌套的时候,子查询内部还可以再次嵌套新的子查询,也就是说可以多层嵌套。UPDATE 内的子查询,在 set 更新内容时,可以是单独的一列,也可以是多列。

2023-08-31 19:12:32 236

原创 Mysql高阶语句 (一)

通过 SQL 查询出来的结果,还可以对其进行分组,使用 GROUP BY 语句来实现 ,GROUP BY 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来,如果对查询的结果进行排序,可以使用 ORDER BY 语句来对语句实现排序,并最终将排序后的结果返回给用户。

2023-08-30 11:01:22 686

原创 MySQL数据备份与恢复

以上次完整备份或上次增量备份的时间为时间点,仅备份这之间的数据变化,因而备份的数据量小,占用空间小,备份速度快。: 每次对数据进行完整的备份,即对整个数据库、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。使用免费的第三方Percona xtraBackup热备份软件,支持在线热备份Innodb和xtraDB,也可以支持MySQL表备份,不过MyISAM表的备份要在表锁的情况下进行。恢复数据时,只需恢复上次的完全备份与最近的一次差异备份。主节点一般不需要这个日志。

2023-08-29 11:03:36 1878

原创 Mysql索引、事务与存储引擎 (事务、MySQL 存储引擎)

InnoDB :支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。动态表包含可变字段(varchar),记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁的更新、删除记录会产生碎片,需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命令来改善性能,并且出现故障的时候恢复相对比较困难。MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。

2023-08-27 09:34:57 338

原创 Mysql索引、事务与存储引擎 (索引)

对于 MyISAM 引擎而言,索引文件和数据文件是分离的,索引文件用于保存数据记录的地址。③所以在使用 select 语句查询时 where 条件使用的字段顺序必须和组合索引中的排序一致,否则索引将不会生效。因为主键具有唯一性,外键关联的是主表的主键,查询时可以快速定位。①数据库利用各种快速定位技术,能够大大加快查询速度,这是创建索引的最主要的原因。⑥经常出现在 where 子句中的字段,特别是大表的字段,应该建立索引。⑨索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引。

2023-08-25 14:17:57 101

原创 MySQL数据库

另外还有“.ibd”和 ibdata 文件,这两种文件都是用来存放 Innodb 数据的,之所以有两种文件来存放 Innodb 的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。3.数据库:表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据集合,是按照数据结构来组织、存储和管理数据的仓库。1)数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。

2023-08-24 08:41:07 127

原创 Haproxy搭建Web集群

总之,F5 SLB是一种基于硬件的负载均衡技术,可以提供高可用性、高性能、安全性和灵活性等优势,适用于需要处理大量并发请求和保证服务连续性和可用性的应用场景。高性能:F5 SLB具有高性能和高并发的特点,可以处理大量的并发请求,同时可以平衡服务器的负载,避免某个服务器过载而导致性能下降。●基于源的粘性,类似nginx的ip_hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;●详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能;

2023-08-21 15:06:38 147

原创 LVS-DR+keepalived实现高可用负载群集

在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。●core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。

2023-08-18 16:31:19 439

原创 LVS负载均衡DR(直接路由)模式

这意味着后端服务器和客户端直接通信,负载均衡器(LVS)只在请求和响应的转发过程中起到中间转发的作用,减少了负载均衡器的处理负担,提高了性能和吞吐量。此外,负载均衡器(LVS)和后端服务器之间需要通过网络隔离,以避免数据包循环和冲突。-----------------DR模式 LVS负载均衡群集部署-----------------------------------发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址。

2023-08-17 12:08:21 936

空空如也

空空如也

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

TA关注的人

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