- 博客(48)
- 收藏
- 关注
原创 部署 Vertical Pod Autoscaler (VPA)
当设置 --kubelet-insecure-tls 时,metrics-server 或其他组件不会验证 kubelet 提供的证书是否有效。openssl11-devel:OpenSSL 1.1.x 版本的开发包,包含头文件和库。查看 kube-system 命名空间中所有 Pod 的资源使用情况(CPU 和内存)复制metrics-server.tar镜像备份文件到所有node节点,并导入镜像库。openssl-devel:OpenSSL 开发包,包含编译和开发所需的头文件和库。升级openssl(
2025-08-08 09:12:36
927
原创 kubernetes服务自动伸缩
当设置 --kubelet-insecure-tls 时,metrics-server 或其他组件不会验证 kubelet 提供的证书是否有效。查看 kube-system 命名空间中所有 Pod 的资源使用情况(CPU 和内存)表示节点的 CPU 使用率(相对于节点的总 CPU 资源)。表示节点当前使用的 CPU 资源总量(以核心为单位)。表示节点的内存使用率(相对于节点的总内存资源)。表示节点当前使用的内存总量(以字节为单位)。使用了 506m(即 0.506 核心)。的 CPU 使用率为 12%。
2025-08-08 09:10:57
799
原创 Nginx Ingress Controller
Ingress 负责定义路由规则,而 MetalLB 负责为 Ingress 提供外部 IP,使得外部用户可以通过 IP 访问集群内的服务。如果 Pod 被意外删除或节点失败,DaemonSet 会自动重新创建 Pod,确保服务的高可用性。:Kubernetes 官方提供的通用 Ingress Controller,支持基本的 HTTP/HTTPS 路由。:在将请求转发到后端服务时,Ingress 控制器会将匹配的前缀部分从路径中移除,只将剩余部分传递给后端服务。
2025-08-08 09:09:54
1071
原创 kubernetes核心概念 service(二)
在Kubernetes中,ExternalName类型的Service是一种特殊的Service类型,它通过CNAME记录将Service指向一个外部的DNS名称,而不是集群内部的IP地址。:通过二层通告,Service的IP地址会被绑定到节点的网卡上,外部网络设备(如交换机或路由器)会将流量直接发送到对应的节点。:运行在Kubernetes集群的每个节点上,用于将分配给Service的IP地址通告给集群外部的网络设备,使外部网络能够感知到这些IP地址的存在并进行通信。
2025-08-08 09:08:44
668
原创 kubernetes核心概念 Service
iptables 规则将数据包的目标 IP 地址从 Service 的 ClusterIP 转换为后端 Pod 的 IP 地址。:指定查询的记录类型为 A 记录(Address Record),A 记录用于将域名解析为 IPv4 地址。无头服务允许用户直接与 Pod 通信,避免了负载均衡器的介入,适合需要自定义网络策略的场景。客户端通过 DNS 查询无头服务的名称时,会返回所有匹配 Pod 的 IP 地址列表。无头服务不分配 ClusterIP,因此没有单一的 IP 地址可供客户端访问。
2025-08-08 09:07:26
1098
原创 Kubernetes集群使用容器镜像仓库Harbor
如果 harbor-sa 关联了镜像拉取密钥 harbor-secret,所有使用该账户的 Pod 会自动具备从私有仓库拉取镜像的权限(无需在 Pod 中单独声明 imagePullSecrets)。可以关联 Secret(如镜像拉取密钥、API 访问令牌等),这些 Secret 会自动挂载到使用该账户的 Pod 中。以便在 Kubernetes 集群中使用该 ServiceAccount 的 Pod 可以拉取私有仓库中的镜像。使用名为 harbor-secret 的 Secret 来认证并拉取私有镜像。
2025-07-18 09:20:06
746
原创 Kubernetes配置与密钥管理
创建一个名为 cm1 的 ConfigMap,并添加两个键值对:host=127.0.0.1 和 port=3306。:通过 Kubernetes API 对 ConfigMap 进行管理,便于跟踪配置的变更历史。,以便在不重新构建镜像的情况下进行配置的修改和更新。进入pod-cm2 的 Kubernetes Pod 的交互式 shell。通过一个文件内多个键值对,--from-env-file=文件路径。:将应用配置与代码分离,便于修改配置而无需重新构建镜像。通过volume的方式挂载到pod内。
2025-07-18 09:19:12
683
原创 StatefulSet控制器
每个 Pod 会获得一个稳定的网络地址(如 pod-name-0.default.svc.cluster.local),即使 Pod 重启或重新调度,该地址也不会改变。:StatefulSet 通常与 Headless 服务结合使用,为每个 Pod 提供一个固定的网络标识符(如 pod-name-0、pod-name-1 等)。:每个 Pod 的名称是固定的,通常按照 pod.name-0、pod.name-1、pod.name-2 的顺序命名。:适用于需要逐步更新的有状态应用,如分布式系统的版本升级。
2025-07-18 09:18:28
687
原创 kubernetes持久化存储卷-StorageClass
用于创建PV的插件或驱动程序,例如kubernetes.io/aws-ebs(AWS EBS)或kubernetes.io/nfs(NFS)。:基于块存储,通过专用网络(如光纤通道或iSCSI)连接存储设备和服务器,提供高性能、低延迟的存储访问。:定义了当PVC被删除时,PV的回收策略,如Delete(删除卷)或Retain(保留卷)。:提供给Provisioner的参数,用于配置存储的具体特性,如存储类型、IOPS等。:提供S3(对象存储)、EBS(块存储)、EFS(文件存储)等多种存储服务。
2025-07-18 09:17:39
543
原创 K8s存储
将本地的 /nfsdata 目录共享给所有客户端,并且客户端可以以读写模式访问该目录。查看 Kubernetes 中名为 auth-vol 的 Pod 中名为 vol2 的容器的日志输出。这里准备将NFS服务部署在master01节点上,需要在master01节点上提前规划好共享的目录。注:pause 容器,用于管理 Pod 的网络和存储资源的基础容器。(自动删除pv,网络存储数据仍保留,一般在动态供给中使用)再次删除Pod,PVC,验证PV目录下存放的数据。将两个容器都停掉或者删除后,挂载的卷还在。
2025-07-18 09:14:20
874
原创 Pod资源控制器ControllerManager
现在有一个Pod资源,且是拥有2个标签。还有svc资源,selector选择器,仅有一个符合,问:svc资源是否能成功的关联到上述的Pod资源?现在有一个Pod资源,且是拥有1个标签,svc资源中selector选择器有2个条件,问:svc资源是否能成功的关联到上述的Pod资源?选择器不同,RC只支持等值选择器,RS还额外支持基于集合的选择器。查看pod,svc启动正常,但服务和pod并未关联。运行一个web服务,在每一个节点都运行一个Pod。用于确保每一个节点都运行了某个Pod的一个副本。
2025-07-04 09:43:23
815
原创 Pod健康检查
如果你希望限制该命名空间中资源的使用,可以创建一个 ResourceQuota 对象。不同点在于他并不会触发对pod操作和重启策略,而是会将pod设置为不可用状态。给了一个退出状态码,值为1 结合pod重启策略验证。如果没有上传网页的话,pod不会就绪,只有上传了网页才会真正运行。即通过判断容器启动进程的返回值是否为零,来判断探测是否成功。只有一个容器上传了网页,上传了网页的容器才会真正运行。(不是删除,如果有副本控制器的话,删除会重建)发现:原来的容器被停止之后会重新启动一个新容器。
2025-07-04 09:42:44
732
原创 用yaml清单文件配置资源
为Pod添加标签,这里是app: ngx-dep,与selector.matchLabels中的标签一致,确保Deployment能够正确选择和管理这些Pod。- name: pod-nginx # 一个名为pod-nginx的容器。- name: nginx #定义一个容器名,一个 - name: 定义一个容器。定义容器的配置,包括image(容器镜像,这里是nginx:alpine)、name(容器名称,这里是nginx)等。
2025-07-04 09:41:33
1179
原创 命令行工具kubectl
apply: 通过文件对资源进行应用配置,用于将定义在 YAML 或 JSON 文件中的资源配置应用到 Kubernetes 集群中。暴露 Pod: Service 通过标签选择器将流量路由到 Deployment 管理的 Pod。,可以自动化地部署和管理 Kubernetes 应用,确保集群状态的一致性和可重复性。管理 Pod: Deployment 创建并管理 Pod,确保其数量和状态符合预期。是系统创建的,是集群运行的关键,删除此服务后,会自动创建服务,无法删除的。label:更新资源上的标签。
2025-07-04 09:40:44
667
原创 Kubernetes架构介绍
用于管理有状态的持久化应用,如database服务程序,它与Deployment不同之处在于,它会为每一个Pod创建一个独有的持久性标识符,并确保每个Pod之间的顺序性。根据 Deployment 的规格(如副本数量、容器镜像等),创建相应的 ReplicaSet 资源,用于管理 Pod 的副本。是k8s 集群的前端接口,各种客户端工具以及k8s的其他组件可以通过它管理k8s集群的各种资源。用于确保每一个节点都运行了某个Pod的一个副本,新增的节点一样会被添加此类Pod,在节点移除时,此类Pod会被回收。
2025-07-04 09:39:51
929
原创 Kubernetes集群部署
这使得Kubernetes能够以统一的方式与不同的容器运行时进行交互,而不需要针对每种运行时编写特定的代码。如果系统的初始化进程是 systemd(大多数现代 Linux 发行版默认使用 systemd),则需要将 kubelet 的 cgroup 驱动设置为 systemd,以确保 kubelet 和容器运行时使用相同的 cgroup 驱动。发展和应用的科技公司创立,CNCF的主要目标是支持和推动云原生计算的发展,通过提供开放的API和工具,帮助开发者更高效地构建、部署和管理微服务应用。
2025-05-16 15:17:54
1422
原创 容器编排工具docker-compose
将一个命名卷 db_data 挂载到容器的 /var/lib/mysql 目录,用于持久化数据库文件。这样即使容器被删除,数据也不会丢失。将宿主机的 80 端口映射到容器的 80 端口,使外部可以通过宿主机的 80 端口访问 WordPress 网站。将宿主机的 /webserver 目录挂载到容器内的 /usr/share/nginx/html 目录。当外部访问宿主机的 80 端口时,请求会被转发到容器的 80 端口(Nginx 默认端口)。-p 参数用于端口映射,将宿主机的端口映射到容器的端口。
2025-05-08 11:15:31
738
原创 容器化部署企业应用
v /opt/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:将宿主机的 /opt/es/config/elasticsearch.yml 配置文件挂载到容器的 Elasticsearch 配置目录。将宿主机的 /opt/nginx-server-conf 目录挂载到容器的 /usr/share/nginx/html 目录,并且以只读模式(ro)挂载。
2025-05-08 11:14:46
572
原创 Docker容器数据持久化存储机制
运行web1容器,把/opt/web1root目录挂载到/usr/share/nginx/html目录中。是一个开源的分布式文件系统,支持高可用性和可扩展性,通过将多个存储节点连接起来形成统一命名空间。是一个开源的分布式存储系统,提供对象存储、块存储和文件系统存储等多种存储方式。查看数据卷数据(MySQL容器中创建的库和表都会存在宿主机的此目录下)运行web3容器,使用--mount选项,实现数据卷挂载。:支持多种存储协议,如 iSCSI、NFS 和 S3。运行web3容器,使用-v选项,实现数据卷挂载。
2025-05-07 14:42:20
599
原创 Docker的跨主机网络
Docker默认的网络的类型是bridge,可以在单宿主机网络里面通实现容器间互通;但是跨主机的时候bridge是不可用的,可以使用overlay和underlay实现1、两种类型:overlay高层封装、underlay低层直接发送跨主机网络意味着将不同主机上的容器用同一个虚拟网络连接起来。这个虚拟网络的拓扑结构和实现技术就是网络模型。如名称所示,是 overlay 网络,建立主机间 VxLAN 隧道,原始数据包在发送端被封装成 VxLAN 数据包,到达目的后在接收端解包,扩展性和灵活性好。属于 unde
2025-05-07 14:41:21
1157
原创 Docker 单主机网络
在网络配置中,"host"模式通常意味着虚拟机或容器直接使用宿主机的网络接口,共享宿主机的IP地址和网络设置。:这些行提供了集群中消息交换的统计信息,包括发送和接收的 ping 和 pong 消息数量。使用nginx镜像创建并启动一个名为 test1 的容器,该容器运行 Nginx 服务器,并且直接使用宿主机的网络。在 Redis 集群中,数据被分片存储在主节点上,每个主节点可以有一个或多个副本节点。:表示集群中已知的节点数量为6。:设置Redis服务器监听的端口号为6379,这是Redis的默认端口。
2025-05-07 14:36:14
811
原创 Docker底层原理(优化)
默认情况下,所有容器都能够平等的读写磁盘,也可以通过--blkio-weight参数改变容器的blockIO 的优先级。在不同的PID命名空间中,进程ID可以重复,但每个命名空间内的进程ID是唯一的。创建两个容器为 c1 和 c2,若只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比为1/3和2/3。:容器中的进程可以有自己的PID空间,容器内部的进程ID从1开始,而宿主机的进程ID空间独立于容器。测试磁盘的写入性能。:为每个命名空间提供独立的挂载点,允许不同的命名空间看到不同的文件系统视图。
2025-05-07 14:35:06
874
原创 docker镜像库
将宿主机的 /registry 目录挂载到容器内的 /var/lib/registry 目录。docker-compse工具的作用是编排镜像,可以像剧本一样把要做的事先规划好,例如要启动的镜像、镜像名字、运行机制、数据卷,实现更加便捷、快速。镜像默认存储位置:/data/registry/docker/registry/v2/repositories/library。创建命名空间——名称——镜像仓库——创建镜像仓库——(仓库名称于镜像名称相同)——本地仓库。对外使用的镜像为公有仓库,自己公司使用的为私有。
2025-05-07 14:34:08
1246
原创 docker常用命令及镜像制作
指定目标 IP 地址范围,即 Docker 容器的 IP 地址范围(172.17.0.0/16 是 Docker 默认的桥接网络地址范围)。如果访问失败,先查看端口是否有冲突,如果有冲突,将指定端口的容器停止后再次尝试,若还是失败,重启docker服务。:指示 iptables 执行目标地址转换(DNAT),将数据包的目标地址改为另一个地址。:指定新的(内部)目标 IP 地址和端口,即 Docker 容器的 IP 地址和端口。容器运行时,必须有程序持续运行,否则会停止运行,处于exited状态。
2025-05-07 14:21:46
743
原创 安装docker
在这个例子中,centos 是镜像的仓库名(repository name),而 latest 是标签(tag)。:构建runc的Git提交ID,这里是v1.1.12-0-g51d5e94。:构建docker-init的Git提交ID,这里是de40ad0。:这个标志后面跟的是输出文件的路径。:服务器支持的API版本,这里是1.45,最低版本要求是1.24。:构建Docker客户端的Git提交ID,这里是5650f9b。:构建Docker服务器的Git提交ID,这里是de5c9cf。
2025-05-07 14:19:56
942
原创 mysql优化
可以做的架构是,mysql主从,一主多从。所以,我们可以做一个优化,把mysql原来的一主多从为一主多从,然后作为其他从的主,而前面的主,只负责网站业务的写入,而后面的从不负责网站任何业务,只负责给其他从同步bin-log。interactive_timeout:指的是mysql在关闭一个交互的连接之前所需要等待的秒数,比如我们在终端上进行mysql管理,使用的即使交互的连接,这时候,如果没有操作的时间超过了interactive_time设置的时间就会自动的断开,默认的是28800,可调优为7200。
2025-05-07 14:16:29
965
原创 pxc_cluster集群
在 Percona XtraDB Cluster (PXC) 的上下文中,这个服务可能用于引导(bootstrap)过程,即初始化一个新的集群或者将一个新节点加入到现有的集群中。全量同步可能会对性能产生较大影响,因为它需要复制大量的数据。:这是InnoDB的一个变种,由Percona开发,提供了一些额外的功能和优化,比如更大的事务日志和更好的并发控制,以提高大型事务处理的性能。:这是Percona公司基于MySQL的一个分支,它包含了MySQL的所有功能,并添加了一些额外的特性和改进,以提高性能和可靠性。
2025-05-07 14:15:28
940
原创 部署mgr
准确地说,在始发 server 上,当事务准备好提交时,该 server 会广播写入值(已改变的行)和对应的写入集(已更新的行的唯一标识符)。面对这种情况,组复制会判定先提交的事务为有效事务,会在整个组内重演,后提交的事务会直接中断,或者回滚,最后丢弃掉。网上对组复制和 Galera 的对比很多,特别是 2016 年组复制出生后大火的" Galera 将死"的言论,但实际上,仍然有很多人在用着 pxc,毕竟它已经扬帆航行多年,而 GR 才出没多久,前几个版本也一直在修修补补。这不是组复制要解决的问题。
2025-05-07 14:14:15
711
原创 MySQL分布式解决方案
配置文件中指定了8.19的3309实例和8.17的3307,3309实例为读的服务器,8.19的3309实例server_id为9,8.17的3307实例server_id为17,8.17的3309实例server_id为19。这个目录可能包含MyCAT的Catlet,Catlet是MyCAT中的一个概念,它是一种小型的、可插拔的组件,用于扩展MyCAT的功能,比如实现特定的数据分片算法或者数据源连接。在分布式系统中,DEFAULT_NODE=1 可能意味着默认的数据节点或者服务节点是编号为 1 的节点。
2025-05-07 14:12:32
1113
原创 第18章 双主复制(主从复制+MHA+atlas+keepalive)
(8.16)是从服务器,主是漂移IP,当主服务器8.19宕机之后,漂移IP会从8.19上漂移到8.17上,8.17是备服务器会立马接替主服务器进行工作。Keepalived监控MySQL服务器的状态,如果活跃的主服务器发生故障,Keepalived会将VIP转移到备用的主服务器上,实现故障转移。这样,客户端连接始终保持在VIP上,无需知道后端MySQL服务器的具体变化,从而实现无缝的故障转移。在双主复制架构中,两个MySQL服务器互为对方的主从服务器,即每个服务器既是主服务器也是从服务器。
2025-05-07 14:10:48
952
原创 MHA配合Atlas实现读写分离
MHA搭建具体实施步骤包括配置关键程序软连接、配置互信、检查互信是否成功、安装软件包、基于GTID配置主从同步、创建MHA需要的用户、Manager软件安装、MHA应用透明(vip)、MHA故障提醒、额外的数据补偿(binlog_server)、状态检查及开启MHA、查看MHA状态。包括下载安装Atlas的rpm包、配置Atlas的配置文件、准备mha用户和repl用户的密码、编辑配置文件、启动Atlas、Atlas的管理操作、Atlas负载测试。在标准的 mysql-proxy 使用中,没有这样的参数。
2025-05-07 14:09:56
1160
原创 第16章 高可用架构MHA
可以看见之前的主服务器是8.19,当主服务器8.19宕机后,会从两台从服务器上选举一台成为主服务器(根据配置文件的先后顺序和日志量更接近于主服务器的一台从服务器),从服务器8.17被选举为主服务器。(2) 在manager启动之前,会自动检查ssh互信(masterha_check_ssh)和主从状态(masterha_check_repl)调用 apply_diff_relay_logs 脚本,计算从库的relaylog的差异,恢复到2号从库(哪个从库更全面,就用谁当作主)
2025-05-06 21:45:36
640
原创 第15章 主从复制 (2)
配置文件中修改了忽略对t100w数据库的复制,当在主服务器上对数据库t100w进行任何操作时,数据都不会被同步到从服务器上。在从库上,使用 source 命令来执行截取的relaylog文件,模拟SQL线程的行为,重新执行这些日志中的事件。配置文件中修改为只复制指定的数据库,在主服务器上创建的其他数据库不会被同步到从服务器上。replicate_ignore_db=t100w //忽略 t100w 数据库的复制。replicate_do_db=repl //指定复制过程中需要复制的数据库。
2025-05-04 21:48:15
341
原创 第14章 主从复制 (1)
io线程负责抓取master的二进制,放到自己的日志文件(中继日志)。日志文件有了新数据,那么sql线程就会起作用。如果偏移量(position)不是从154开始的,执行reset master清空二进制日志(生产环境不建议执行此操作)将master上的旧数据导入slave上,master上新增的数据使用主从复制更新到从服务器上。(3) 从库取得(io线程)主库的binlog进行回放(SQL线程)(6) 主从架构的演变(读写分离、高可用、分布式架构)(5) 主从的特殊架构(过滤复制、延时从库)的配置使用。
2025-05-04 21:47:31
272
原创 第13章 触发器及用户权限
load data语句是将文件的内容插入到表中,相当于是insert语句,而replace语句在一般的情况下和insert差不多,但是如果表中存在primary 或者unique索引的时候,如果插入的数据和原来的primary key或者unique相同的时候,会删除原来的数据,然后增加一条新的数据,所以有的时候执行一条replace语句相当于执行了一条delete和insert语句。触发程序的执行是自动的,当对触发程序相关表的数据做出相应的修改后立即执行。之间的语句可以写的简单或者复杂。
2025-05-04 21:46:44
627
原创 第12章 备份还原2(xbk)
2. 针对InnoDB表,立即触发CKPT,copy所有InnoDB表相关的文件(ibdata1,ibd,frm).3. 在恢复时,xbk会调用InnoDB引擎的CSR过程,将数据和redo的LSN追平,然后进行一致性恢复.模拟了CSR(前滚)的全过程,在恢复之前,将数据的LSN号和redo LSN号追平。from : 备份中包含的LSN号的起点,全备:0, 增量:上次备份的结束位置。last-9 : 备份结束时的LSN.下次增量备份的起始位置.并且将备份过程中产生,新的数据变化的部分redo一起备份走。
2025-05-04 21:46:02
592
原创 第11章 备份还原
温备 : 长时间锁表备份 MyISAM(业务正在使用表的时候,就会锁表,不能备份,等业务完成才能备份)--base64-output=decode-rows -vvv (--help可以查到)入职后:备份(MySQL,邮件数据,nfs数据等)和计划任务(crontab -e)crontab -l -----> 列出当前用户的所有Crontab任务。备份脚本 -----> 备份脚本是执行备份操作的命令或脚本文件。备份策略:全备(完整备份,晚上或周末)+增量(备份增加的数据)
2025-05-04 21:45:20
232
原创 第10章 日志管理
(2) DML记录格式(statement,row,mixed),通过binlog_format=row参数控制 ****#查看当前日志缓冲区大小。独立表空间 : 5.6 开始的默认表空间,一个表一个ibd文件,存储数据行和索引. *****RC *****: 读已提交,会有 幻读,不可重复读. 在大部分互联网企业中是可以容忍的.RR *****: 可重复读:(MVCC ,undo快照)防止不可重复读, 有可能出现。2. 二进制日志(binlog)******(用于主从复制和读写分离)
2025-05-04 21:43:55
422
原创 第9章 存储引擎2
5.7版本下,临时表也被独立出来了(临时表空间,对应Linux中的文件为:ibtmp1)。可以从上图中看出,Genreal tablespaces中存储着一些临时表,而在5.6 版本中,临时表是存储在ibdata1中的Tables中的。由于MySQL 5.5版本共享表空间的缺陷,5.6版本后增加了独立表空间的概念,即将“数据字典(元数据)”、“表的列信息”、“表的数据,索引”分开存储。环境: centos 5.8 ,MySQL 5.0版本,MyISAM存储引擎,网站业务(LNMP),数据量50G左右。
2025-05-04 21:43:06
238
【数据库技术】MHA配合Atlas实现MySQL高可用性与读写分离:架构设计与优化
2025-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅