- 博客(928)
- 收藏
- 关注
原创 【k8s】user 用户身份确定流程
当你在堡垒机或controller节点上(区别于容器内部发起的请求)执行kubectl get po 命令是,默认使用的是 user 用户的权限,这个权限是什么?来自哪里,有哪些权限?
2026-03-27 17:37:54
361
原创 【网络】stp生成树协议防回环
简单理解:网段是DP的选举单位,不是环路,环路是网段的串联,一个环路包含N个网段,就会有N个指定端口(根桥的端口全为DP,非根桥也可能在部分网段中竞选为DP),最终通过阻塞某一个网段的非指定端口,切断整个环路。不是,一条物理环路中会有多个指定端口(DP),只有「单个物理网段」内的指定端口是唯一的,这是STP的核心规则,环路是由多个网段组成的,因此会对应多个指定端口。SW3有2个端口:G0/1(连SW1)、G0/2(连SW2),先选根端口,再与SW2争网段指定端口,最终确定阻塞端口。
2026-02-01 10:22:05
591
原创 【网络】直连路由、静态路由
路由器三层接口(物理口/VLANIF等)配置有效IP+子网掩码、接口状态Up/Up时,自动生成的本地直连网段路由,无需人工配置,是路由通信的基础。路由表标识:C(Connected),管理距离AD=0(优先级最高)。简单说:✅ 通俗版:直连就是路由器有网线 / 虚拟网线直接连的同一个 LAN,这个 LAN 里的网段就是直连网段;核心差异:自动生成(直连)vs 手动配置(静态),本地直连网段 vs 远端非直连网段;优先级:直连路由(AD=0)>静态路由>动态路由协议;
2026-01-26 14:22:36
546
原创 【网络】广播地址工作原理(arp不受广播地址影响)
首先广播地址分为二层广播地址和三层广播地址二层广播地址是固定的,三层是需要设置的,即我们常说的广播地址是三层,例如 一个网卡的有如下设置:网络:192.168.1.0/24广播地址:192.168.1.255。
2026-01-17 15:55:38
986
原创 【网络】变长子网划分 (VLSM) 示例、点到点网络
划分顺序:必须从大到小依次划分,确保大地址块的连续性。主机位计算:使用公式2^n - 2 >= 所需主机数确定主机位数n。子网掩码转换/25/26/27地址效率:通过VLSM,被高效利用,浪费的地址最少。
2026-01-17 12:44:36
635
原创 【网络】VTY与Console依赖关系详解
示例:VTY ACL配置错误,把自己锁外面结果:所有远程访问被拒绝解决方法:只能用Console登录修复底层维护接口Console = 房子的前门钥匙(物理访问,最底层权限)VTY = 房子的远程遥控器(网络访问,方便但需配置)
2025-12-26 00:29:21
906
原创 【网络】华为AR201路由器
总结AR201的WAN口是其作为“网关设备”的物理与逻辑标识。它不仅是物理接入点,更是执行NAT、路由选择、安全策略的关键。简言之,没有正确配置的WAN口,局域网就无法访问外部网络。配置提示选择接入类型:PPPoE、动态IP或静态IP。填写参数:账号/密码(PPPoE)或IP/网关/DNS信息(静态IP)。保存并应用,设备即可正常接入互联网。
2025-12-24 23:09:11
778
原创 【网络】华为交换机S3700与S5700详解
在实际项目中,应始终选择厂商当前主流在售型号,以获得更好的技术支持、软件更新和保修服务。= S5720/S5730系列 > 老S5700 > 老S3700。= 理解三层交换原理 + 掌握VRP配置 + 实践实验。= 经济型 + 二层接入 + 基本功能。= 性能型 + 三层交换 + 丰富功能。
2025-12-23 17:48:53
722
原创 【网络】snat/MASQUERADE作用和应用场景
MASQUERADE和SNAT都是 iptables 中实现源地址转换(Source NAT)的两种方式,MASQUERADE是SNAT的一种“动态简化版”或“特殊使用场景下的替代方案”项目SNATMASQUERADE全称伪装(一种动态 SNAT)所属表nat 表nat 表功能修改数据包的源 IP 地址修改数据包的源 IP 地址是否需要指定目标 IP✅ 是,必须用指定公网 IP❌ 否,自动获取出接口的 IP适用场景固定公网 IP 环境动态公网 IP 环境(如拨号上网、DHCP)性能。
2025-08-29 13:26:15
1277
原创 【网络】添加路由时,via和dev参数作用、直连路由
特性带 via (网关路由)不带 via (接口路由 / 直接路由)命令示例语义“要去往 10.10.10.0/24,请把包发给网关 192.168.1.1,让它去处理。“要去往 10.10.10.0/24,请直接从 eth1 接口发出去。下一跳一个具体的网关 IP 地址 (192.168.1.1)一个本机的物理/逻辑接口 (eth1)使用场景目标网络不在本机直接连接的网段,需要另一个路由器中转。目标网络直接连接在指定的接口上。ARP 请求。
2025-08-26 19:00:53
1518
原创 【网络】回包路由原理
必须查路由: 是的,服务器回包时,必须通过查询路由表(route -n)来确定如何将响应包发送到ip-client。无路由 = 失败: 如果路由表中既没有精确匹配ip-client的路由,也没有默认路由0.0.0.0/0,那么回包会因为“网络不可达”而必然失败。默认路由是关键: 在绝大多数实际网络中,服务器都配置了默认网关。因此,即使没有到ip-client的特定路由,回包也会通过默认网关转发,由更上层的网络设备(路由器、核心交换机)来处理后续路由,最终通常能成功。
2025-08-20 16:53:16
997
原创 【网络】使用 DNAT 进行负载均衡时,若未配置配套的 SNAT,回包失败
在iptablesDNAT 负载均衡中,如果不配置 SNAT/MASQUERADE后端服务器会直接回包给客户端,绕过负载均衡器。客户端收到源 IP 错误的响应包(是IP_RS而不是IP_VIP客户端丢弃响应包,导致连接失败。因此,在标准的 DNAT 负载均衡场景中,SNAT/MASQUERADE 不是“可选”,而是“必需”的,以保证流量路径的对称性和连接的完整性。
2025-08-20 16:34:22
999
原创 【k8s、docker】深入理解容器网络接口(CNI)
容器网络的配置是一个复杂的过程,为了应对各式各样的需求,容器网络的解决方案也多种多样,例如有flannel,calico,kube-ovn,weave等。同时,容器平台/运行时也是多样的,例如有Kubernetes,Openshift,rkt等。如果每种容器平台都要跟每种网络解决方案一一对接适配,这将是一项巨大且重复的工程。当然,聪明的程序员们肯定不会允许这样的事情发生。想要解决这个问题,我们需要一个抽象的接口层,将容器网络配置方案与容器平台方案解耦。
2025-08-18 16:41:24
915
原创 【k8s、docker】Headless Service(无头服务)
在 Kubernetes 中,ClusterIP 类型的 Service 被设置为 None(即 ClusterIP: None)时,表示这是一个 Headless Service(无头服务)。这种设计有特定的用途和行为模式:Headless Service 的核心作用:直接访问 Pod IP,跳过 Service 代理普通 Service:会分配一个虚拟 ClusterIP,流量通过 kube-proxy 负载均衡到后端 Pod。
2025-08-17 13:31:45
1404
原创 【k8s】k8s pod调度失败原因列表、Pod 完整的状态类型列表
多容器 Pod:如果 Pod 有多个容器,部分容器可能运行而其他容器崩溃(此时状态显示 Running(N/M),如 3/4 表示 4 个容器中 3 个正常运行)临时状态:ContainerCreating 和 Terminating 是短暂状态,通常很快会转换到其他状态。二、Pod 完整的状态类型。
2025-08-13 15:52:27
1233
原创 【go】gopath、GO111MODULE=on作用
版本 重大变化Go 1.11 初步引入 Go Modules(opt-in)Go 1.13 改进代理支持和版本选择Go 1.16 默认启用 ModulesGo 1.18 工作区模式(multi-module workspaces)简单来说,就是没有go mod时,一个电脑的下多个工程只能用一个版本的第三方库,存在兼容性问题。现在的每个工程,都有独立的mod文件,各自配置自己的某个版本的第三方库。gopath下,存储所有版本的第三方库。
2025-07-12 11:43:42
1401
原创 【k8s】Taint污点)、Toleration(容忍)
Taint(污点)是 Kubernetes 给节点贴的“禁止调度标签”,它告诉调度器:“除非 Pod 明确表示可以容忍,否则不要把它调度到这个节点上。通俗点说:🧱 节点说:“我有特殊情况,不欢迎一般 Pod,除非你能接受我(加 toleration)。【Taint 的结构】:字段解释key污点的名称,比如节点角色、资源状态value可选,比如说 taint 的值effect生效方式:见下方解释effect意义NoSchedule。
2025-04-23 13:40:15
1113
原创 【k8s】用户和服务账户联系(user、serviceaccount、sa)
在 Kubernetes 和 OpenShift 中,用户和服务账户用户(User)用户是集群外部的实体,代表人或应用程序,通过 API 或命令行与 Kubernetes 集群进行交互。用户由集群管理员创建,可以是一个真实用户(如开发人员)或一个外部系统(如 CI/CD 工具)。它们是集群外部的身份,没有自动与 Pod 关联。用户通过工具(如kubectloc)或 API 调用创建、管理资源(如 Pod、Deployment)。
2025-01-11 16:02:22
1336
1
原创 【k8s】Linux Namespace : User(uid、gid)
User namespace 是 Linux 3.8 新增的一种 namespace,用于隔离安全相关的资源,包括 user IDs and group IDs,keys, 和 capabilities。同样一个用户的 user ID 和 group ID 在不同的 user namespace 中可以不一样(与 PID nanespace 类似)。换句话说,一个用户可以在一个 user namespace 中是普通用户,但在另一个 user namespace 中是超级用户。
2024-12-26 22:28:59
896
原创 【linux】 unshare -user -r /bin/bash命令详解
是一个 Linux 命令,它用于在新的用户命名空间中运行一个进程(在这个例子中是 /bin/bash)。以下是这个命令的详细解释:【1. 命令解析】创建新的命名空间注意:不能单独存在,依赖前面的--user参数/bin/bash:命令运行一个新的 Bash shell,使其在创建的用户命名空间中运行。【2. 效果】运行后:内部独立环境:对命名空间内部的修改(如文件系统、权限等)不会影响全局系统。
2024-12-24 22:20:11
685
原创 【linux】 gid、uid、/etc/passwd、/etc/group
的第二列最早是在UNIX系统中用于记录密码的,但是这其中存在一个问题:由于每个用户都需要有读取这个文件的权限,而随着现代密码破解技术的发展,即便是加密的密码,也有被破解的可能,所以将密码从这个文件中剥离出去是非常必要的。中,而且默认只有root用户才有读的权限,其他人完全没有读取这个文件的可能。与/etc/passwd类似,/etc/shadow也是由冒号“:”隔开的,不同的是这里是8个冒号隔开的9列。可以看到,虽然每行的内容不一样,但格式却是一致的,即每行都是使用6个分隔号“:”隔开的7列字符串。
2024-12-23 17:09:43
1702
原创 【git、gerrit】特性分支合入主分支方法 git rebase 、git cherry-pick、git merge
原始提交的标识符。哈希值(commit hash)是在分支 br_feature 上创建时生成的,具体由提交的内容、父提交的哈希值、提交作者和时间等因素决定。它代表了特性分支上特定的提交。是原始提交 F3 的一个“重新生成”版本。发生这种情况时,提交的内容可能相同,但父提交的哈希值已改变,从而导致新的提交哈希值(即 F3’)与 F3 不同。git cherry-pick:将 F3 应用到另一个分支上,生成新的提交。
2024-12-16 16:03:15
1743
原创 【k8s源码】kubernetes-1.22.3\staging 目录作用
staging暂存即将独立的模块化代码。支持 Kubernetes 主项目与模块间的跨依赖管理。为模块化代码提供独立发布和版本化能力。它是 Kubernetes 模块化开发的桥梁,是正式发布模块前的重要中间步骤。
2024-12-11 20:01:47
1444
原创 【k8s】kubelet 和 API Server的关系
kubelet 和 API Server 是 Kubernetes 中紧密合作的两个组件。kubelet 承担了节点级别的资源管理和容器生命周期管理,而 API Server 则是集群级别的控制中心。两者通过安全通信和状态同步,确保集群中的资源调度和应用运行达到预期状态。
2024-12-07 14:39:46
2395
1
原创 【k8s.io/apiserver】k8s.io/apiserver 代码结构解析
Kubernetes 1.22 中的继续通过模块化设计提供高扩展性。开发者可以基于它快速构建核心 API Server 或扩展 Kubernetes 的功能,同时受益于 1.22 提供的功能增强和优化。
2024-12-06 18:46:39
1249
原创 【go】 select case 超时机制(time.After)示例和内存泄漏
2)只关心此通道有数据或没数据,不关心数据的内容,因为 我们要判断是否要超时,没超时,通道就是空的,当超时就会往通道写一个数据,这个数据内容可以是任意数据,哪怕是 "abc"也可以,case
2024-12-05 14:37:41
939
原创 【go 】 select case 的用法
特点:1)case 只能一次性的,一旦响应后,就结束了,参见后面第三章节for的例子,可以多次监听2)如果多个通道都没有响应,会阻塞,直到某个通道率先响应。
2024-12-05 11:03:20
797
原创 【go】只读通道和只写通道
在 Go 中,只读通道和只写通道的概念通过通道的方向来实现。Go 语言允许你在函数参数中指定通道的方向,从而限制通道的使用方式,这样可以确保代码的清晰性和安全性。通过在函数参数中使用通道的方向(只读或只写),Go 提供了一种清晰和安全的方式来限制通道的使用。这种机制增强了并发编程中的可控性,避免了意外的错误和滥用。当你定义一个通道时(如 ch := make(chan int)),这个通道是双向的,即既可以发送数据也可以接收数据。
2024-12-04 20:41:26
764
原创 【go】select 语句case的随机性
本身没有顺序匹配,但如果程序的逻辑导致某些通道更早满足条件,会显得像是按顺序执行。,并非按照顺序逐一匹配。为 Go 并发提供了灵活且公平的通道操作能力。通过随机匹配和阻塞机制,
2024-12-04 19:46:45
676
原创 【k8s】api server地址(集群cluster地址)
在上面的输出中,https://172.20.0.1:6443 就是 API Sever 的地址和端口(通常是 6443)。
2024-09-11 17:56:20
2732
原创 【linux】sar -d 磁盘性能
sar -d 命令是 sysstat 包的一部分,用于收集、报告和保存系统活动信息。使用 -d 选项时,sar 会提供有关系统磁盘活动的详细报告。这些数据有助于识别磁盘 I/O 瓶颈并了解系统磁盘使用情况。
2024-08-22 19:41:29
1451
1
原创 【k8s】--as=system:serviceaccount:demo-rbac:demo-user模拟某组件的某sa
as=system:serviceaccount:demo-rbac:demo-user模拟某组件的某sa在 Kubernetes 中,kubectl 命令提供了一个 --as 参数,用于临时模拟以指定的用户身份执行命令。这个功能可以帮助你测试和验证某个用户或服务账户的权限。
2024-08-16 13:51:21
1300
原创 【k8s】pod和serviceaccount关系
Pod 和 ServiceAccount 的联系体现在权限管理和安全控制上。通过 ServiceAccount,你可以控制 Pod 如何与 Kubernetes API 服务器交互,授予它们执行任务所需的最小权限,从而增强集群的安全性和管理性。
2024-08-15 18:59:41
1655
1
原创 【k8s】serviceAccount、role、RoleBinding入门示例
RBAC(基于角色的访问控制,Role-Based Access Control)是Kubernetes中用于管理权限的机制。如果设置正确,这个命令会返回命名空间中的Pod列表。你会看到一个错误,表明没有删除Pod的权限。
2024-08-15 14:03:15
941
原创 【k8s】 busybox镜像、挂载volume卷
busybox是一个包含了nslookup,ping,wget等网络处理命令的Pod容器(不含curl命令),它的体积非常小,适合做一些容器内的网络调试。即创建一个docker ,进去执行 ping 命令等。
2024-05-23 15:44:30
1092
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅