自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux工具:ss

SS常用命令及其解释-t/-u:区分 TCP/UDP-l:只看监听-n:数字化(IP/端口)(即ssh/22;http/80)-p:显示进程ss。。“本地端口 (sport)” + “本地地址 (src)” 与 “远端端口 (dport)” + “远端地址 (dst)” 一起构成(src IP, src port, dst IP, dst port, 协议),内核用它区分每条连接。

2025-05-14 14:20:38 1105

原创 Linux:profile文件和bashrc文件(配合alias验证和使用)

每次启动一个新的交互式 shell(如打开新的终端窗口或运行 bash 命令时),系统会加载 /etc/bashrc 和 ~/.bashrc。非登录式 shell 配置:/etc/bashrc 和 ~/.bashrc 会在你 打开新终端窗口或启动新的shell 会话 时加载。登录式 shell 配置:/etc/profile 和 ~/.bash_profile 会在你 登录 系统时加载。通过 echo 输出的方式可以验证这两个文件是否生效。通过 echo 输出的方式可以验证这两个文件是否生效。

2025-05-11 19:25:36 511

原创 k8s基础:nodeselector和nodename和affinity

podAffinity / podAntiAffinity:控制 Pod 与其他 Pod 的相对位置,例如强制 Pod 在同一节点或不同节点上运行。affinity:你更灵活地分配任务,你可能会说:“我更倾向于把任务交给擅长 Python 的早班工人,但如果没有合适的,我可以选择其他人。affinity 是 nodeSelector 的增强版,支持更加复杂的匹配方式,可以使用逻辑表达式来定义调度规则。解释:调度器优先选择位于 us-east 区域的节点,但如果没有合适的节点,调度器可以选择其他区域的节点。

2025-05-08 14:08:55 1126

原创 k8s基础:pod的调度(污点,容忍,亲和)

理解和总结:关于污点的三种类型,noschedule是否可以理解为将该节点“封闭”起来,只允许具有同种类型污点的pod调度进入,prefernoschedule是否可以理解为将该节点作为“备胎”,只有在没有其他节点选择时候再最后选择,noexecute是否可以理解为将该节点内的pod进行“提纯”,只允许具有同类型污点的pod存留。调度器会 尽量避免 将不具有相应 toleration 的 Pod 调度到带有 taint 的节点上,但如果没有其他合适的节点时,它仍然可能会将这些 Pod 调度到这个节点上。

2025-05-08 14:06:26 944

原创 k8s基础:pod如何使用pv

PersistentVolume(PV):这是集群级别的存储资源,由管理员事先创建,并且它的生命周期独立于 Pod,通常用于持久化存储。当用户创建 Pod 并在 Pod 中通过 volumeMounts 使用 PVC 时,Pod 中的容器可以将 PV 提供的持久化存储挂载到容器文件系统的特定路径下(如 /data)。PVC 和 PV 的绑定:pvc-storage 已经绑定了 PV,因此当 Pod 使用 pvc-storage 时,它实际上使用的是该 PV 提供的持久化存储资源。

2025-05-08 14:00:16 361

原创 k8s基础:存储卷(emptydir,hostpath,pv)

通过这种配置,Pod 可以使用 PVC 来挂载持久化存储卷,所有写入 /data 目录的数据都会保存到与 PVC 绑定的 PV 中。PersistentVolumeClaim 是用户对存储的请求,它指定了需要的容量和访问模式。PersistentVolumeClaim(PVC):表示对存储资源的请求,用户通过 PVC 请求具体的存储资源,Kubernetes 会匹配合适的 PV。管理员创建 PersistentVolume(PV):PV 是集群中的共享资源,预先由管理员配置,表示可供 Pod 使用的存储。

2025-05-08 13:55:20 533

原创 k8s基础:优雅关闭

在这个时间内,容器有机会完成关闭过程。容器的优雅关闭:preStop 执行完成后,容器继续处理关闭过程,直到在 terminationGracePeriodSeconds 内完成。Kubernetes 给予容器一个 优雅关闭的宽限期(默认是 30 秒,但可以在 Pod 配置中通过 terminationGracePeriodSeconds 设置),在这个时间内,容器可以完成任务并清理资源。这个钩子是在 容器实际终止前的最后一步,为你提供了一个机会,在容器关闭前执行一些自定义的清理或其他操作。

2025-05-08 13:51:46 823

原创 k8s基础:三种探针(livenessprobe,readingprobe,startuprobe)

不过,探针的检测结果会影响容器的行为,例如重启或从负载均衡中移除容器。在 Kubernetes 中,HTTP 存活探针(HTTP Liveness Probe)和 TCP 存活探针(TCP Liveness Probe)都是用于检测容器健康状态的机制,但它们的工作方式和使用场景有所不同。作用: 专门用于监控容器的启动阶段。何时检测结束:Liveness Probe 的作用在容器的生命周期内是持续的,只要容器在运行,Liveness Probe 会一直按照配置的频率进行探测,除非容器被终止。

2025-05-07 19:06:51 376

原创 k8s基础:ClusterIP,NodePort,Headless,Ingress

所以我的大体理解是这样的:因为在集群内部,pod的IP是动态分布的,这样管理和使用很麻烦,所以引出了clusterip和nodeport这种稳定的ip访问方式,而clusterip是集群内部之间访问pod的一种方式,nodeport则是clusterip的一种拓展,既可以集群内部访问pod,也可以从外部来访问内部的pod的资源。NodePort 是 ClusterIP 的一种扩展类型,它允许外部客户端通过 Kubernetes 集群中每个节点的 IP 和指定的 NodePort 端口访问集群内的服务。

2025-05-07 19:02:42 511

原创 k8s基础:Ingress和Ingress Controler

Ingress Controller 处理请求:Ingress Controller 接收请求,并根据 Ingress 资源中定义的规则(如基于域名或路径的规则),决定将请求路由到哪个 Service。当客户端发起请求时,Ingress Controller 会根据 Ingress 中的规则,解析请求并将其转发到对应的 Kubernetes Service。基于域名或路径的路由:你可以根据请求的域名或 URL 路径,将流量路由到不同的 Kubernetes Service 中,适合需要运行多个服务的场景。

2025-05-07 19:01:21 538

原创 k8s基础:Service服务发现(Headless)

Headless Service 在 Kubernetes 中的实际作用主要是在分布式应用程序和有状态应用场景下,允许客户端直接与具体的 Pod 通信,而不是通过 Kubernetes 的负载均衡机制进行流量分配。自定义流量分配策略:如果应用程序有自己复杂的负载均衡策略,或者需要根据 Pod 的状态(例如健康检查结果)来选择流量的目标 Pod,那么 Headless Service 可以让应用获取到所有后端 Pod 的 IP,然后根据实际需求决定如何分配流量。

2025-05-07 18:57:57 713

原创 k8s基础:Service服务发现(clusterip和nodeport)

即使 Pod 的 IP 地址发生变化,Service 仍然可以通过内部的负载均衡将流量转发到正确的 Pod。你通过 Service 来暴露这个 Pod,Service 在集群内部监听 9000 端口(Port=9000),并在集群外部通过 NodePort 暴露,外部通过节点的 30007 端口访问(NodePort=30007)。NodePort:除了提供 ClusterIP 类型的集群内部访问外,还在每个节点上开放了一个指定的端口(NodePort),通过这个端口,集群外部的客户端也可以访问服务。

2025-05-07 18:44:13 1048

原创 k8s基础:kubernetes控制器

ReplicaSet 是 Kubernetes 中的一种控制器,它的主要作用是确保集群中始终有指定数量的 Pod 副本(replicas)在运行,无论是由于 Pod 崩溃、节点宕机还是其他原因导致的 Pod 停止运行,ReplicaSet 都会自动创建或删除 Pod 来达到期望的副本数量。ReplicaSet 的核心功能是维护指定数量的 Pod 副本。创建 Pod 副本:当 ReplicaSet 被创建时,它会根据 Pod 模板创建指定数量(replicas)的 Pod,并分布在可用的节点上。

2025-05-07 18:35:19 432

原创 k8s基础:pod和static pod

静态 Pod 的状态会被反映到 API Server:虽然静态 Pod 是由 Kubelet 创建和管理的,但其状态仍然会被 Kubelet 上报给 Kubernetes API Server,因此你可以通过 kubectl get pods 查看静态 Pod 的状态。即使是相同的镜像,也可以执行不同的任务和命令。Static Pod 的配置文件放置在 Kubelet 监视的目录中(如 /etc/kubernetes/manifests/),Kubelet 自动管理这些 Pod 的生命周期。

2025-05-07 18:30:11 449

原创 k8s基础:namespace和pod以及和docker的关系

默认情况下,Kubernetes 提供了一个默认的命名空间 default,如果你不显式地为 Pod 指定命名空间,Pod 就会运行在 default 命名空间中。通过命名空间,管理员可以限制某个命名空间中 Pod 使用的资源量,比如 CPU、内存的配额限制,这样可以确保集群中的资源分配更加合理,不同项目、团队之间不会因为资源竞争而互相影响。命名空间为 Pod 提供了隔离:不同的命名空间中的 Pod 是相互隔离的,Pod 的名字在命名空间内必须唯一,但不同命名空间中的 Pod 可以有相同的名字。

2025-05-07 17:30:46 335

原创 k8s基础:镜像和容器

Docker 镜像存储在 Docker Registry(如 Docker Hub)上,每当用户需要运行一个容器时,Docker 就会从这些镜像源下载相关的镜像。在 docker run -d -p 8000:80 --name container1 nginx 命令中,-p 选项用于指定端口映射,即将容器内的某个端口映射到宿主机(Docker 所在的主机)的端口。什么是镜像源,为什么在国内使用docker时,在访问docker hub会出现网络问题,这个镜像源是怎么解决该网络问题的。

2025-05-07 17:26:00 590

原创 linux的BIOS启动问题及其启动过程

Linux启动报错报错原因:

2025-05-07 16:59:11 207

原创 k8s:Etcd脑裂的表现和排查

2.在生产级集群里,通常会有多个 kube-apiserver 实例默认情况下,apiserver 允许“可串行化读”(--etcd-quorum-read=false),也就是它可以向任意它能连通的 etcd 成员(包括少数派上的 follower)发起读请求。(即在该etcd集群中172.16.130.213为leader,但如果出现脑裂,情况为节点1和节点3为一个子集群,节点2单独成为一个子集群,这样在节点2中查看etcd集群信息会发现对于节点2来说,节点1和节点3的状态可能是unknown的)

2025-05-07 16:54:59 546

原创 k8s:解决pod拉取镜像失败问题(docker和containerd)

我用dockerd来运行了一个镜像仓库,该镜像仓库的运行端口是127.0.0.1:30081/woqutech/registry:2,并且我的宿主机上是同机双仓库,存在有dockerd和containerd两个本地镜像池,如果想要从镜像仓库拉取镜像都需要docker/crictl pull 127.0.0.1:30081...这样的命令。4.使用docker拉取镜像并检查本地dockerd镜像池是否拉取成功。1.确认两个镜像池都没有对应镜像,并查询镜像仓库是否有对应镜像。2.查看镜像存在有哪些版本。

2025-05-07 16:49:14 773

原创 k8s:通过curl来访问私有镜像仓库

var/lib/registry/.../repositories/irds/busybox/_manifests/tags/v1.36.0 里保存的是 BusyBox v1.36.0 对应的 manifest 和指针,告诉 Registry 去 blobs 目录下找对应该版本的 layer。------------------------------------------------------------------------------(本地文件存储查找)

2025-05-07 16:47:29 825

原创 k8s:区分docker和containerd

Docker的实际创建容器是用的containerd,只不过docker上层还多了build,dockerfile这些功能,所以在1.24版本后k8s将docker其他部分给剔除了,只保留了containerd容器进行时,然后因为有些docker功能还需要使用,例如镜像推送和拉取,所以还用到了docker。2.验证同一个pod中的容器共享网络,并且说明在事实上并不存在一个pod作为边界来隔离容器,pod只是一个逻辑概念,pod的本质是一组共享网络的容器,并且可以共享存储。(2)查找A和B容器的实际PID。

2025-05-07 16:39:00 370

原创 3节点的k8s集群发生两节点系统盘故障处理措施

2.使用--force-new-cluster恢复单节点:--force-new-cluster会重置集群元数据(如集群 ID、成员列表),但保留键值存储的数据。3.加入现有集群:新节点通过指定 --initial-cluster-state existing 并连接到现有集群成员,成为集群的一部分。3、修改新节点hosts配置:编辑hosts使k8smaster.qfusion.irds域名指向存量master节点,ip为master节点的集群IP,第二行为新节点的集群IP和主机名,需要和之前保持一致。

2025-05-07 16:36:40 358

原创 Linux-sed工具

sed 's/foo/bar/' filename # 将第一处匹配的 foo 替换为 bar。sed '2s/foo/bar/' filename # 只替换第2行的 foo 为 bar。sed 's/foo/bar/g' filename # 将所有的 foo 替换为 bar。sed -n '/pattern/p' filename # 打印匹配pattern的行。sed -n '2,4p' filename # 打印第2到第4行。6.^ 用于匹配行的开头,可以用来在行首添加内容。

2025-05-06 00:55:45 150

原创 Linux的yum源配置

enabled:是否启用(1 启用,0 禁用)(yum repolist和yum repolist all)2.手动新建 .repo 文件(用于添加一个自定义或私有仓库,那就可以自己写一个 .repo 文件。baseurl:仓库地址,可支持 HTTP、HTTPS、FTP、本地文件(file:///path)。gpgcheck:是否校验 GPG 签名(1 校验,0 不校验)(不校验则不用gpgkey)3.配置本地文件系统仓库(使用光盘镜像或 ISO 文件,也可以当作本地仓库)·创建本地 repo 文件。

2025-05-05 21:46:08 872

原创 Linux操纵系统配置RAID

例如以上例子中,/dev/nvme2n0首次合并md5失败是因为被/dev/nvme2n0被md127使用,在对md127进行删除后第二次合并失败是因为/dev/nvme2n0上还残留有md127的超级块(Superblock),需要擦除超级块后才能被mdadm重新使用。例如:将两块磁盘使用RIAD1模式作为一块磁盘(系统盘),当一块磁盘出现故障,另一块磁盘立即接管,将数据完全复制到该盘。4.重启后设置数据盘,即:将系统所有nvme磁盘做一个软RIAD为md5,共6个nvme盘,已合并5个。

2025-05-05 21:32:41 955

原创 配置网卡和Bond以及初次网卡配置遇到的问题

发现问题:但配置完发现无法通信,后经指点原因是不能将p1和p8两个物理网口作为bond来通信,因为这两个网口连接的不是本机,而是有可能是交换机,所以需要使用em3和em4来做一个bond(即使em4为down,但在bond中只要有一个网口为up便能通信)。并且对bond0进行了IP,掩码,网关设置。问题出现在第一次配置bond0时候对路由字段输入错误,导致系统没有识别到路由位置,所有在路由表中为显示,那么便需要在/etc/rc.local配置文件中配置持久化路由,然后重启验证即可。

2025-05-05 21:30:06 549

转载 假如让你来设计网络

A 将源 MAC 地址(AAAA)与网关 MAC 地址(ABAB)封装在数据链路层头部,又将源 IP 地址(192.168.0.1)和目的 IP 地址(192.168.2.2)(注意这里千万不要以为填写的是默认网关的 IP 地址,从始至终这个数据包的两个 IP 地址都是不变的,只有 MAC 地址在不断变化)封装在网络层头部,然后发包。所以如果 A 给 C 发消息,A 和 C 的 IP 地址分别 & A 机器配置的子网掩码,发现不相等,则 A 认为 C 和自己不在同一个子网,于是把包发给路由器,就不管了,

2025-05-05 20:56:48 31

原创 安装和升级MySQL

2.mysqld.service 是 systemd 服务单元文件,用于定义和管理 MySQL 服务的启动、停止、重启等行为,将其存放到/usr/lib/systemd/system目录下可将mysql配置为systemd使用。1.为什么需要mysqld.service文件放到/usr/lib/systemd/system目录下,而为容器配置为服务自启动需要使用generate生成配置文件并存放到~/.config/systemd/user/下?将现MySQL 5.7升级到MySQL 8.0。

2025-05-05 20:40:14 1025

原创 k8s的50问

Linux中的Namespace(命名空间):资源隔离机制,Linux对不同类型的资源创建独立的Namespace实例,每个Namespace内的进程只能看到该Namespace内的资源。他和Init容器的区别在于,Sidecar容器在Pod整个生命周期中都在运行,而Init容器只有在Pod启动时运行。Pod代表集群中的一个运行实例。Headless Service:没有 ClusterIP 的服务,这种服务不会进行负载均衡,而是直接返回后端 Pod 的 IP 地址,适用于需要 Pod 直接通信的场景。

2025-05-05 20:27:20 919

原创 RH134-章4-归档和传输文件

使用tar命令创建存档,使用create和file选项,并将存档文档名作为第一个参数,后跟被存档的文件和目录列表(默认情况下tar会使用相对路径在当前目录创建存档,因为tar命令会覆盖目标目录下的文件)(用户必须对被归档文件有读取权限)该工具仅同步已更改的文件部分,所以除首次同步时和复制使时大致相同,之后的同步只需复制差异部分,从而提高更新速度(例如官网和epic)交互式fstp会话接受的命令和本地文件系统中相同,例如ls,cd,mkdir,rmdir和pwd(lpwd)

2025-05-05 20:08:55 363

原创 RH134-章13-运行容器

最后容器就是实际的app,run运行一个容器就是使用容器镜像来创建一个容器,类似于从app安装包安装应用程序,rm可以删除一个容器实际就是删除该应用程序,但app安装包还在,也就是镜像还在,就可以创建容器,类似于安装包还在,只要安装包还在就可以再次创建应用程序,ps可以查看运行的容器,就是类似于查看运行的应用程序,inspest查看容器配置,就是相当于查看应用程序的配置信息,和容器交互exec就是实际使用应用程序。注意,服务文件必须放在~/.config/systemd/user/目录中。

2025-05-05 20:04:58 838

原创 RH134-章11-管理网络安全

如果要将允许httpd服务侦听某端口,需要将该端口设置httpd_port_t标签:-a选项可添加新端口标签,-t选项表示类型,-p选项则表示协议。·默认区域设置为 dmz,将来自192.168.0.0/24网络的所有流量都分配给internal区域,并在 internal区域上打开用于mysql服务的网络端口。3.网络接口:不同的网络接口连接(比如家庭网络、公共Wi-Fi)会被分配到不同的区域。1.预定义区域:firewalld 服务将网络流量分配到不同的区域,每个区域有不同的访问规则。

2025-05-05 20:03:06 826

原创 RH134-章10-控制启动过程

通过 rd.break启动救援模式下的root shell 和 chroot更改进程的根目录这两条命令,绕过了正常的操作系统启动过程,因为救援模式下的操作系统不会完全挂载/根文件系统,反而是临时挂载在/sysroot目录下。默认情况下,/sysroot 是以只读模式挂载的,为了修改文件(例如重置 root 密码),你需要将 /sysroot 挂载为 读写模式,这样才能进行更改(例如修改 /etc/shadow 文件)。(一个临时的根文件系统,包含基本的启动文件,但不是操作系统的完整根文件系统)

2025-05-05 19:58:45 732

原创 RH134-章9-访问网络附加存储

假设您的公司有一个 NFS 共享目录,您希望所有用户都能通过 /mnt/nfs_shared 访问这个共享目录,并且每当访问这个目录时,自动挂载共享文件系统。目标:识别NFS导出信息,创建用作挂载点的目录,使用mount命令或通过配置/etc/fstab文件来挂载NFS导出,以及使用umount命令卸载NFS导出。3.lsof命令:查询挂载点,显示与挂载点目录交互的进程。当访问 /home 目录时,autofs 会查找 /etc/auto.home 文件,按照该文件中的配置挂载用户的主目录。

2025-05-05 19:57:00 890

原创 RH134-章8-管理存储堆栈

3.创建逻辑卷:(LV):使用lvcreate将卷组中可用的PE创建逻辑卷。(将分区设置为lvm分区,但不设置分区的文件系统标签)(Information提示刷新/etc/fstab,即使用udevadm settle向内核注册新分区)2.创建物理卷(PV):使用pvcreate将一个或多个lvm分区标记为物理卷,后跟lvm分区路径位置(物理卷不用指定其名称,只需要将lvm分区标记为物理卷)3.创建卷组(VG):使用vgcreate将一个或多个物理卷组成卷组,第一个参数是卷组名,后跟一个或多个物理卷。

2025-05-05 19:55:32 730

原创 RH134-章7-管理基本存储

交换空间:通过将磁盘中不活动的页面保存到内存中来补充系统RAM,目的是在内存不足时临时增加系统内存,但不可作为持续性解决方案(过度使用swap交换空间会导致系统相应变慢,系统性能降低)向新磁盘写入分区表:当需要对一个新设备进行分区时候,首先要写入磁盘标签,该标签指定了分区所用的分区方案,即MBR方案或GPT方案。1.创建分区(以MBR分区为例)(GPT分区同理,但对于GPT方案每个分区会获得一个名称)GPT分区方案:该方案是磁盘分区的标准,解决MBR方案的限制,最多提供128个分区。使用rm <分区编号>

2025-05-05 19:53:31 414

原创 RH134-章6管理 SELinux 安全性

(对SElinux的理解是,在保护文件上, 文件权限可以控制特定用户和特定组的访问权限,但不能控制这些拥有权限的用户和组对其文件执行非预期的用途,比如修改文件内容或删除文件,所以SELinux策略制定了一组访问规则,明确定义进程和资源被允许的操作,如果该策略为空,则所有操作都会被拒绝。目标:使用semanage fcontext命令管理确定文件和命令默认上下文的SELinux策略规则,并使用restorecon命令将SELinux策略定义的上下文应用到文件和目录。否则该新文件将记录父级目录的标签。

2025-05-05 19:52:08 946

原创 RH134-章5调优系统性能

配置动态调优:默认情况下动态调优处于禁用状态,通过修改/etc/tuned/tuned-main.conf配置文件中的dynamic_tuning变量设置为1来启动动态调优。3.使用nice命令启动进程时,其默认nice值为10(其nice值比从命令行启动(shell)要高)例如以下:包括进程pid,命令comm,Nice值,调度类,按nice值降序排列。调优配置集:(/usr/lib/tuned/目录和/etc/tuned/目录)4.使用nice命令-n选项指定启动进程的nice值(默认是10)

2025-05-05 19:50:14 413

原创 RH134-章3-分析和存储日志

9.systemd-journald服务将日志数据存储在二进制日志文件中,这些文件通常位于/run/log/journal/目录下,重启系统后会丢失;如果配置了持久化存储,则位于/var/log/journal/目录中。例如:将旧的/var/log/messages文件轮转时重命名为/var/log/messages-20220320,然后创建一个新的日志文件,将新的日志写入该文件。2./etc/systemd/journald.conf文件:更改systemd-journal服务配置,使日志重启保留。

2025-04-12 17:50:25 810

原创 RH134-章2-调度未来任务

crond守护进程:该进程会读取多个配置文件(每个用户对应一个)以及一组系统范围内的文件,用crontab -e命令来编辑。这些存储库存放在:/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/和/etc/cron.monthly/目录。/etc/cron.d目录:定义调度周期系统性作业。/etc/anaccronteb配置文件:包含每日,每周,每月的作业,确保调度作业始终运行。目标:利用用户的crontab文件,将命令调度为安计划重复执行。

2025-04-12 17:48:34 395

空空如也

空空如也

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

TA关注的人

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