ElasticSearch 深度分页记录丢失问题

问题 在 Elasticsearch 中使用 SearchAfter 进行深度分页时,SearchAfter 会排除掉排序字段值与 SearchAfter 参数值完全相同的文档。 当你获取最后一个文档的 Sort 值作为下一次查询的 SearchAfter 参数时,如果最后一个文档的排序字段值与其他文档相同,那么下一次查询就会排除掉这些排序字段值相同的文档,从而导致第二页少一个或多个记录。 ...

二月 8, 2025

解决 macOS 无法验证 App 问题

问题 1无法打开“XXX”,因为Apple无法检查其是否包含恶意软件。 解决步骤 1sudo spctl --master-disable 「设置」-「隐私与安全性」-「安全性」-「允许以下来源的应用」,选择任何来源 参考资料 https://jo-cruise.github.io/posts/AuthorizeUnknownDeveloper/

二月 3, 2025

Kafka 零拷贝技术

💡 零拷贝操作可以避免对数据的非必要拷贝,当然,并非是说完全没有拷贝。 在 Kafka 的场景下,操作系统可以从 page cache 拷贝数据到 socket buffer,直接绕过 Kafka broker 这个 Java 程序。这可以节省一些额外的拷贝,节省一些用户态和内核态的切换。让我们看一个例子。 ...

一月 5, 2025

Charles 安卓抓包配置

charles 抓包工具基于 HTTP 请求中间人代理,通过和服务端、客户端建立通信将客户端的请求数据发送服务器,并将响应数据传输给客户端,实现抓包记录。 代理配置 「Proxy」->「Proxy Settings」 配置监听端口号,例如 9999,并勾选 「Enable transparent HTTP proxying」 ...

十二月 25, 2024

Kubernetes 1.29.6 高可用集群部署

架构设计 OS: AlmaLinux 9.1 节点名 IP 地址 zqf-Master01 10.101.5.110 zqf-Master02 10.101.5.111 zqf-Master03 10.101.5.112 zqf-Worker01 10.101.5.113 zqf-Worker02 10.101.5.114 zqf-Worker03 10.101.5.115 zqf-Worker04 10.101.5.116 1. 所有节点操作 1.1 基础配置 1.1.1 配置镜像源 1sed -e 's|^mirrorlist=|#mirrorlist=|g' \ 2 -e 's|^#\s*baseurl=https://repo.almalinux.org/almalinux|baseurl=https://mirrors.zju.edu.cn/almalinux|g' \ 3 -i.bak \ 4 /etc/yum.repos.d/almalinux-*.repo 1dnf makecache 1.1.2 配置主机名 1hostnamectl set-hostname <主机名> 添加解析记录,使节点直接使用主机名访问通信 ...

十一月 13, 2024

Kubernetes 故障排查方法论

问题导向&排查 网络诊断 连通性测试:使用 ping、nc、telnet 等工具测试 Pod 间的网络连通性,或通过 curl 检查服务端口是否可达。 NetworkPolicy 检查:确认 NetworkPolicy 规则是否过于严格导致通信阻断,使用 kubectl get netpol 查看并分析现有策略。 CNI 插件排查:检查 CNI 插件(如 Calico、Flannel 等)的日志,排查网络配置或插件自身问题。 存储问题排查 PVC/PV 状态检查:使用 kubectl get pvc,pv 查看 PersistentVolumeClaim 和 PersistentVolume 的绑定状态与容量,确认是否存在未绑定、容量不足等问题。 存储日志与事件:检查存储插件(如 Local Volume、CSI Driver 等)日志,以及 PVC/PV 的事件信息,查找存储访问异常。 数据完整性验证:必要时,直接在宿主机上挂载存储卷,检查数据完整性和一致性。 资源调度与亲和性问题 节点资源分析:使用 kubectl top nodes 查看节点资源使用情况,判断是否存在资源瓶颈。 调度策略检查:确认 Deployments、StatefulSets 等资源的 .spec.template.spec.nodeSelector、.spec.affinity、.spec.tolerations 等调度相关字段配置,看是否限制了 Pod 的调度范围。 kube-scheduler 日志:分析 kube-scheduler 日志,了解调度决策过程,找出影响调度的因素。 认证授权与访问控制 RBAC 规则审查:使用 kubectl get rolebindings,clusterrolebindings 检查角色绑定关系,确保用户或服务账户具有正确的 API 访问权限。 API Server 访问日志:分析 kube-apiserver-audit.log,跟踪特定用户或账户的 API 请求与响应,排查授权问题。 网络代理与认证配置:检查 kubeconfig 文件、API Server 配置及网络代理(如 kube-proxy、ingress-nginx 等)的认证设置,确保访问路径无误。 不管是否初学者,大家一般都可以从现象识别到问题定位,再到深入排查与解决方案制定,形成一套完整的问题解决闭环。随着实践经验的积累,排查效率与解决问题的能力将不断提升。 ...

十月 26, 2024

基于 Kubeadm 手动更新证书

检查证书是否过期 1kubeadm certs check-expiration 该命令显示 /etc/kubernetes/pki 文件夹中的客户端证书以及 kubeadm(admin.conf、controller-manager.conf 和 scheduler.conf) 使用的 kubeconfig 文件中嵌入的客户端证书的到期时间/剩余时间。 ...

十月 15, 2024

基于 Velero 备份与恢复 K8s 集群

Velero 安装步骤 客户端 https://github.com/vmware-tanzu/velero/releases 下载并安装最新版本二进制客户端。 1cp velero /usr/local/bin && chmod +x /usr/local/bin/velero 2 3velero version 4Client: 5 Version: v1.13.2 6 Git commit: 4d961fb6fec384ed7f3c1b7c65c818106107f5a6 7<error getting server version: no matches for kind "ServerStatusRequest" in version "velero.io/v1"> 服务端 准备好秘钥文件 credentials-velero ,即 MinIO 的用户名密码。 1[default] 2aws_access_key_id=<access key id> 3aws_secret_access_key=<secret access key> 使用 velero install 安装服务端 1velero install \ 2 --provider aws \ 3 --image velero/velero:v1.13.2 \ 4 --plugins velero/velero-plugin-for-aws:v1.9.2 \ 5 --bucket velero \ 6 --secret-file ./credentials-velero \ 7 --use-node-agent \ 8 --use-volume-snapshots=false \ 9 --namespace velero \ 10 --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://10.101.6.118:9000 \ 11 --wait 1velero version 2Client: 3 Version: v1.13.2 4 Git commit: 4d961fb6fec384ed7f3c1b7c65c818106107f5a6 5Server: 6 Version: v1.13.2 Velero 使用 备份 1velero create backup NAME [flags] backup选项: ...

九月 24, 2024

基于 imagePullSecret 下载私有镜像仓库制品

Docker 登录私有仓库 首先配置私有仓库免 ssl 验证 1{ 2 "insecure-registries": ["szharbor.xxx.cn"] 3} 输入用户名密码并登录 1docker login szharbor.xxx.cn 查看登录成功后的 Docker 认证文件 1cat ~/.docker/config.json 1{ 2 "auths": { 3 "szharbor.xxx.cn": { 4 "auth": "cm...nVVM=" 5 } 6 } 7} 压缩,base64编码 1{"auths":{"szharbor.xxx.cn":{"auth":"cm9ib3QkaGllbXNfZGV2K3ByaXY6Rk1iSXQ5bFI2RXA5bDd6cU9pUU1MYUg5eVdQWnFnVVM="}}} 1eyJhdXRocyI6eyJzemhhcmJvci5oaXRoaXVtLmNuIjp7ImF1dGgiOiJjbTlpYjNRa2FHbGxiWE5mWkdWMkszQnlhWFk2UmsxaVNYUTViRkkyUlhBNWJEZDZjVTlwVVUxTVlVZzVlVmRRV25GblZWTT0ifX19 harbor ...

九月 15, 2024

K8s 网络模型基础知识

Kubernetes 网络的功能: 高度耦合的容器间通信:这个已经被 Pods 和 localhost 通信解决了。 Pod 间通信; Pod 和 Service 对象间通信; 外部和 Service 对象间通信; Kubernetes 本身的网络服务自带了一下功能: ...

八月 24, 2024