自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 k8s之配置资源管理

由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中。Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。2)作为容器的环境变量。

2024-03-01 07:31:46 643

原创 pod控制器

无状态1)deployment 认为所有的pod都是一样的2)不用考虑顺序的要求3)不用考虑在哪个node节点上运行4)可以随意扩容和缩容有状态1)实例之间有差别,每个实例都有自己的独特性,元数据不同,例如etcd,zookeeper2)实例之间不对等的关系,以及依靠外部存储的应用。

2024-02-29 07:38:34 981

原创 PV与PVC

容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。其次,在Pod中同时运行多个容器时,这些容器之间通常需要共享文件。Kubernetes 中的Volume抽象就很好的解决了这些问题。Pod中的容器通过Pause容器共享Volume。

2024-02-28 04:48:02 418

原创 K8S集群调度

一、调度约束Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Pod 和 Container。APIServer 经过 API 调用,权限控制,调用资源和存储资源的过程,实际上还没有真正开始部署应用。这里 需要 Controller Manager、Scheduler 和 kubelet 的协助才能完成整个部署过程。

2024-02-26 01:47:00 636

原创 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,所以检测实际结果要比标出的少一些。这里包含调度到node上的时间以及下载镜像的时间,会持续一小段时间。

2024-02-26 01:46:03 643

原创 yaml文件详解

targetPort 是 Pod 的端口,从 port 或 nodePort 来的流量经过 kube-proxy 反向代理负载均衡转发到后端 Pod 的 targetPort 上,最后进入容器。kind: Deployment #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等。name: nginx-deployment #定义资源的名称,在同一个namespace空间中必须是唯一的。

2024-02-26 01:44:59 1476

原创 Pod yaml文件详解

●NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问Service。//为deployment的nginx创建service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort。

2024-02-26 01:43:37 774

原创 kubectl命令详解

●NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问Service。//为deployment的nginx创建service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort。

2024-02-26 01:42:10 1201

原创 kubeadm安装部署

目前比较常用的CNI网络组件是flannel和calico,flannel的功能比较简单,不具备复杂的网络策略配置能力,calico是比较出色的网络管理插件,但具备复杂网络配置能力的同时,往往意味着本身的配置比较复杂,所以相对而言,比较小而简单的集群使用flannel,考虑到日后扩容,未来网络可能需要加入更多设备,配置更多网络策略,则使用calico更好。将 Pod 的 IP 和所在的 Node 的 IP 关联起来,通过这个关联让不同 Node 上 Pod 之间直接通过内网 IP 地址通信。

2024-02-26 01:38:55 434

原创 K8s二进制安装部署

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

2024-02-26 01:37:07 930

原创 Kubernetes 概述

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

2024-02-23 00:17:15 511

原创 ansible

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

2024-01-18 22:58:06 604

原创 Docker--harbor

总共分为7个容器运行,通过在docker-compose.yml所在目录中执行 docker-compose ps 命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数的更新,Harbor.cfg 将被忽略。之后, 此设置将被忽略,并且应在 UI 中设置管理员的密码。

2024-01-18 22:58:00 728 3

原创 Docker consul

服务部署简单,只有一个可运行的二进制的包。后端服务A-N可以把当前自己的网络位置注册到服务发现模块,服务发现就以K-V的方式记录下来,K一般是服务名,V就是IP:PORT。server-leader是所有server节点的老大,它和其它server节点不同的是,它需要负责同步注册的信息给其它的server节点,同时也要负责各个节点的健康监测。

2024-01-18 22:06:07 861

原创 docker-compose

●注释: 使用 # 号表示注释。比如,要实现一个 Web 项目,除了 Web 服务容器,还需要后端的数据库服务容器和可能的负载均衡容器。在这个文件中,可以指定应用程序的各个服务、它们之间的关系、容器的映像、端口映射、环境变量等。Build(构建): 如果需要构建自定义镜像,可以使用Docker Compose文件中的build指令,指定构建上下文和Dockerfile的位置。Ports(端口): 可以在Docker Compose文件中定义端口映射,将容器内部的端口映射到主机上的端口,以允许外部访问服务。

2024-01-18 21:37:57 1994

原创 compose 实验

浏览器访问:http://192.16886.30:1216。#上传 docker-compose安装包。进入到compose_nginx目录。此时顺便将nginx安装包拖进来。

2024-01-16 02:51:58 382

原创 反向代理+web集群+mysql mha实验总结

实验要求 通过keepalived的虚拟ip(vip)访问静态或者动态网页,mysql中的master节点能够实现故障自动切换[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0[root@localhost ~]# hostnamectl set-hostname ha01[root@localhost ~]# hostnamectl set-hostname ha02[root@localhos

2024-01-10 10:12:21 1638

原创 Docker 的数据管理与容器互联

端口映射机制将容器内的服务提供给外部网络访问,实质上就是将宿主机的端口映射到容器中,使得外部网络访问宿主机的端口便可访问容器内的服务。------------------容器互联(使用centos镜像)--------------------------------------------------端口映射-----------------------------------------------------Docker 的数据管理---------------------

2024-01-10 09:15:07 636

原创 docker资源控制

例:docker run -itd --name test9 --device-read-bps /dev/sda:1M centos:7 /bin/bash。所以 -m 300m --memory-swap=1g 的含义为:容器可以使用 300M 的物理内存,并且可以使用 700M(1G - 300)的 swap。CFS默认的调度周期是100ms。使用 --cpu-period 即可设置调度周期,使用 --cpu-quota 即可设置在每个周期内容器能使用的CPU时间。

2024-01-10 09:14:26 1066

原创 Docker 网络

如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即 docker run 创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

2024-01-10 09:13:45 800

原创 Docker 概述

docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。====namespace的六项隔离============================================

2024-01-10 09:11:31 580

原创 zabbix

●zabbix server:zabbix 服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix_proxy 的数据最终都提交给 zabbix server;zabbix 监控部署在系统中,包含常见的五个程序: zabbix_server、zabbix_agent、zabbix_proxy、zabbix_get、zabbix_sender 等。●zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。

2024-01-10 09:08:44 358

原创 Zookeeper集群 + Kafka集群

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

2024-01-10 09:07:48 1346

原创 elk日志分析系统

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用 grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。

2023-12-26 09:09:34 464

原创 GFS分布式文件系统

GlusterFS的设计理念是通过横向扩展和分布式存储来满足现代数据存储和处理的需求,使得用户能够构建可靠、高性能的存储基础设施。术语 砖(Brick): 指可信主机池中由主机提供的用于物理存储的专用分区,是GlusterFS中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。分布式存储中,将所有节点的命名空间整合为统一命名空间,将整个系统的所有节点的存储容量组成一个大的虚拟存储池,供前端主机访问这些节点完成数据读写操作。此外,它支持自动的数据自愈机制,即修复由于节点故障导致的数据损坏。

2023-12-26 09:07:07 365

原创 rsync远程同步配置

Rsync 是 Linux 系统下的数据镜像备份工具,使用快速增量备份工具 Remote Sync 可以远程同步, 可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法, 传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。描述:增量备份也是备份自上一次备份以来发生变化的数据,但与差量备份不同,增量备份会清除存档属性。

2023-12-26 09:04:22 392

原创 Redis集群高可用

例如,如果单机内存太大,bgsave和bgrewriteaof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。总体而言,Redis集群通过分片和多节点的方式实现了高性能、高可用性的分布式存储系统,同时具备自动故障转移和动态扩展的能力。如果一个主节点不可用,集群会通过投票机制选举新的主节点,并进行故障转移,以保持数据的可用性。自动重新平衡: 当节点的数量发生变化时,Redis集群能够自动重新平衡哈希槽的分配,以适应新的节点配置。

2023-12-26 09:03:32 392

原创 redis持久化、性能管理

持久化 RDB持久化 RDB(Redis Database Backup)持久化是Redis用于将内存中的数据定期保存到硬盘上的一种持久化方式。RDB持久化流程: 触发条件: RDB持久化可以通过配置文件中的定时触发(例如每隔一段时间执行一次)或者根据写操作的数量来触发。由于是追加操作,AOF持久化方式通常比RDB更耗时,但可以提供更好的数据安全性,因为它可以记录每一次写操作。这样可以均衡负载,提高并发处理能力。集群模式通过节点间的协调和通信,实现了数据的自动迁移和负载均衡,增强了系统的可扩展性和容错性。

2023-12-26 09:02:20 357

原创 I/O模型及相似概念

并发是指程序中多个独立的执行单元同时执行的能力,而并行是指同时执行多个任务的能力。这些概念与 I/O 模型相关,因为不同的 I/O 模型可以影响程序的并发性和性能。在网络编程中,通道可以是网络连接,而在 Java NIO(New I/O)中,通道是一种用于进行 I/O 操作的抽象。GraphQL Subscriptions 是 GraphQL 的一部分,支持在客户端和服务器之间建立实时、双向的数据传输通道,用于订阅和推送数据变更。在 I/O 中,流通常用于描述数据的传输,如输入流和输出流。

2023-12-26 09:00:22 412

原创 Redis配置与优化

总体来说,Redis之所以如此快速,是因为它在设计和实现上注重了简单、高效、专注的原则,并充分利用了内存、单线程、异步I/O等特性。非阻塞的I/O操作: Redis使用非阻塞的I/O操作,通过使用异步I/O和事件驱动机制,充分利用了操作系统提供的异步特性,降低了I/O操作的开销,提高了并发处理能力。由于内存的高速访问特性,Redis能够提供非常低延迟的数据访问。优化的数据结构: Redis提供了多种灵活的数据结构,如字符串、哈希表、列表等,这些数据结构的实现经过了优化,能够在常见的操作上达到极高的性能。

2023-12-26 08:58:26 388

原创 mysql的mha高可用及故障切换

当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 mas然后将所有其他的 slave 重新指向新的 master。●使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。●自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失。MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

2023-12-20 08:48:50 335

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

复制方式 异步复制: 在异步复制中,主节点(master)将写操作的更改记录到二进制日志(binary log),然后从节点(slave)定期连接主节点,从主节点的二进制日志中读取这些更改,并将其应用到自己的数据库中。SQL 线程(SQL Thread)是 MySQL 主从复制中从数据库(Slave)上的一个关键组件,其主要责任是读取中继日志(Relay Log)中的数据并执行相应的 SQL 语句,从而实现与主数据库的数据同步。它通过监听主数据库上的二进制日志文件的变化,实时地将变更的数据传输到从数据库。

2023-12-20 08:47:58 358

原创 MySQL视图与存储

实参 +--------+-------+---------+ | name | score | address | +--------+-------+---------+ | wangwu | 80.00 | beijing | +--------+-------+---------+ 1 row in set (0.00 sec)通常使用 NULL 来表示缺失 的值,也就是在表中该字段是没有值的。2、简介------------- 1、存储过程是一组为了完成特定功能的SQL语句集合。

2023-12-19 10:51:24 891

原创 MySQL高阶语句

ERROR 1248 (42000): Every derived table must have its own alias #此时会报错,原因为: select * from 表名 此为标准格式,而以上的查询语句,"表名"的位置其实是一个完整结果集,mysql并不能直接识别,而此时给与结果集设置一个别名,以”select a.id from a“的方式查询将此结果集视为一张"表",就可以正常查询数据了,如下: select a.id from (select id,name from info) a;

2023-12-19 10:44:07 961

原创 MySQL完全备份与恢复

--base64-output=decode-rows:使用64位编码机制去解码(decode)并按行读取(rows) #-v: 显示详细内容 #--no-defaults : 默认字符集(不加会报UTF-8的错误) PS: 可以将解码后的文件导出为txt格式,方便查阅 mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002 > /opt/mysql-bin.000002。

2023-12-19 10:18:18 370

原创 MySQL的恢复与备份

#复制段 log-error=/usr/local/mysql/data/mysql_error.log general_log=ON general_log_file=/usr/local/mysql/data/mysql_general.log log-bin=mysql-bin slow_query_log=ON slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log long_query_time=5。

2023-12-19 10:13:18 395

原创 MySQL事务

①、脏读(读取未提交数据):脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。④、丢失更新:两个事务同时读取同一条记录,A先修改记录,B也修改记录(B不知道A修改过),B提交数据后B的修改结果覆盖了A的修改结果。修改数据的事务可在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。说白了,所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

2023-12-19 10:05:19 322

原创 MySQL索引

在连接查询(JOIN)时,索引能够快速定位连接列的匹配数据,提高连接操作的速度,尤其是对于大型数据表的连接操作。某些类型的索引(如 B+ 树索引)能够更好地支持范围查询和排序操作,提高相关查询的性能。对于排序和分组操作,索引可以加速这些操作,减少系统的负载,提高排序和分组的效率。可以创建唯一索引,确保某些列或列组合的值是唯一的,保证数据的完整性和唯一性。在某些情况下,合适的索引可以提高数据写入的速度,尤其是对于已排序的索引列。索引是一种帮助系统更快的查询查找的信息的数据结构,索引是一种优化。

2023-12-19 09:51:54 317

原创 MySQL数据库管理

另外还有“.ibd”和 ibdata 文件,这两种文件都是用来存放 Innodb 数据的,之所以有两种文件来存放 Innodb 的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储 方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和 MyISAM 数据相同的位置。每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。

2023-12-19 09:44:38 336

原创 Mysql基础知识

关系数据库结构是二维数据库表,二维表当中每个字段(列)用来描述对象的一个属性,每个记录(行)用来描述一个对象的信息(完整信息),关系数据库写到哪里也就是存储在硬盘当中 读写系统就会受到的IO限制或者瓶颈。1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。1)数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。

2023-12-19 09:42:59 361

空空如也

空空如也

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

TA关注的人

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