ingress 转发时会直接 把它还原成 /api/v1/@aa
但我就是不想给他还原,大佬们,有啥经验建议么,目前试了几个 ai 给的答案都不奏效
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/proxy-body-size: 200m nginx.ingress.kubernetes.io/proxy-next-upstream-timeout: "60" nginx.ingress.kubernetes.io/proxy-read-timeout: "360" nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/configuration-snippet: | proxy_set_header Accept-Encoding ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/ssl-redirect: "false" nginx.ingress.kubernetes.io/enable-rewrite-log: "true" name: dhq-ingress namespace: monitor spec: ingressClassName: idataexplorer rules: - http: paths: - backend: service: name: dhq-service port: number: 80 path: /dhq(/|$)(.*) pathType: ImplementationSpecific
]]>服务运行环境是 k8s ,如果要执行 docker 命令,主要是安全问题,如何避免容器逃逸?
最近实践了 react native + c++ 的跨平台编程
写了一个 ios 和 android 上的扫雷游戏,win/mac/embeded linux/ios/android 都入门了
就差鸿蒙了 ,又有点《识盈虚之有数》的感觉
想再搭个 Kubernetes 高可用集群 玩一玩,看能不能做个聊天软件
刚才看有人在其他帖子的评论区讲提到 helm
思维发散了一下, 想看看有没有必要学一学 go, 毕竟 operator 是 go 模板
c++/rust/go 都能开发高并发服务,各有长短,前者有基础,后面两 0 基础,何当取舍?
]]>场景:本地 A 服务调用 k8s 集群上的 B 服务
我们测试环境是一个 k8s 集群,然后目前采用的 KT-Connect 的方案。想用 Telepresence 但是需要 namespaces 的权限,我们运维只给开到 deployment 这一层权限。看看 V 友们一般都用的什么方案?
]]>每次都要手动修改 svc 暴露 每次都需要手动新增 frpc 配置文件 每次都需要手动添加公网 Nginx
想法 FRPS–> FRPC → Ingress → svc → Pod
我在想能否通过创建 Ingress 自动 watch 配置文件然后重写给 frpc 自动重启服务,外网访问绑定
这种方案有大佬考虑实现吗?
]]># Source: argo-cd/templates/argocd-configs/argocd-secret.yaml apiVersion: v1 kind: Secret metadata: name: argocd-secret namespace: argocd type: Opaque data: admin.password: 'xxx' admin.passwordMtime: 'xxx'
但是,helm chart 中通常会动态注入标签、注解,单独去查看标签、注解的实现逻辑去进行构建感觉似乎更麻烦了,如果直接去掉标签、注解,完全自己生成 secret ,似乎又依赖 chart 本身的质量(担心有依赖关系),各位有没有好的方案。
]]>x86_64
)上面,安装了 Debian 12 ,在其上安装了 k3s 1.28.15 随后在这个 k3s 上面部署了一些服务比如 minio, docker registry 之类的,都是正常启动运行的。但是部署 milvus 时老是起不来,报错
/tini: error while loading shared libraries: /lib/x86_64-linux-gnu/libc.so.6: invalid ELF header milvus
我随后尝试使用 ctr 创建容器进入 shell 环境,也是不行
k3s ctr run --rm -t --platform linux/amd64 docker.io/milvusdb/milvus:v2.4.5 milvus /bin/bash
还是一样的报错。
我一开始怀疑是我们拉取的镜像有问题,怀疑是用了 arm 架构的镜像,但是随后我使用 crictl inspeci
查看了镜像确实是是 linux/amd64 的,另外我看了下 milvus 的 Dockerfile 看着也中规中规,目前还没找出原因,也不知道如何入手排查。
随后我在这台虚拟机上面安装了 docker 并创建容器,是可以成功启动的,看起来问题可能在 k3s 用的 containerd 这里,但是不知道该从哪里排查了。
附:该虚拟机 CPU 情况
root@debian1:~/ccdinstaller# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 45 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Vendor ID: GenuineIntel BIOS Vendor ID: GenuineIntel Model name: 11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz BIOS Model name: 11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz CPU @ 2.5GHz BIOS CPU family: 2 CPU family: 6 Model: 167 Thread(s) per core: 1 Core(s) per socket: 16 Socket(s): 1 Stepping: 1 BogoMIPS: 4991.99 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopolo gy tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hyperviso r lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt avx5 12cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid md_cle ar flush_l1d arch_capabilities Virtualization features: Hypervisor vendor: VMware Virtualization type: full Caches (sum of all): L1d: 768 KiB (16 instances) L1i: 512 KiB (16 instances) L2: 8 MiB (16 instances) L3: 16 MiB (1 instance) NUMA: NUMA node(s): 1 NUMA node0 CPU(s): 0-15 Vulnerabilities: Gather data sampling: Unknown: Dependent on hypervisor status Itlb multihit: Not affected L1tf: Not affected Mds: Not affected Meltdown: Not affected Mmio stale data: Mitigation; Clear CPU buffers; SMT Host state unknown Retbleed: Mitigation; IBRS Spec rstack overflow: Not affected Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Spectre v2: Mitigation; IBRS, IBPB conditional, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Srbds: Not affected Tsx async abort: Not affected
]]>于是就有了这个
https://github.com/zxh326/kite
一直用这个,不过最近发现和 gitlab runner 新版本兼容有问题,出现
kaniko should only be run inside of a container, run with the --force flag if you are sure you want to continue
然后发现 kaniko 已经不维护了。
这个必须要开启特权模式容器,需要启动守护进程
buildah 、podman 没测试, 不知道是否适合 CI 场景使用。
哪个在 gitlab runner in k8s 好用
]]>真诚请教,我应该有什么更好的方式可以深入一些些了解、学习 k8s 相关。例如可以用来探索的场景或者诸如此类的。
]]>其实上家公司也有用到 k8s ,用的官方的 dashboard ,不知道现在主流的用哪个多点;
还有如果想完整打通 dev-ops ,又应该用那一套比较好,各流程分别用什么比较舒服?
]]>所以弄了一个 ConfigForge ,主要功能就是提供界面化配置管理,支持一些备份的功能,降低出错。
也体验了下 Vibe Coding 的乐趣。
https://github.com/samzong/ConfigForge
然后有一个 cf 的命令,可以快速的查看 ssh 主机,和 kubeconfig ,支持快速连接和切换。
(base) x in ~ λ cf k l Available Kubernetes configurations: * 1. card4090-1year-kubeconfig.yaml (active) 2. new-config-5-16-25,_13-18.yaml Use 'cf k set <number>' or 'cf k set <filename>' to switch configuration Use 'cf k current' to show current active configuration (base) x in ~ λ cf k set 2 Selected configuration 2: new-config-5-16-25,_13-18.yaml Successfully switched active Kubernetes configuration to 'new-config-5-16-25,_13-18.yaml' (base) x in ~ λ cf l Available SSH hosts: 1. * 2. blog 3. sf 4. 45.70 5. 10.6.14.200 6. dev-156 7. dev-157 8. dev-155 Use 'cf c <number>' or 'cf c <hostname>' to connect Use 'cf s <number>' or 'cf s <hostname>' to show details (base) x in ~ λ cf c 2 Connecting to 2. blog... Last login: Sun May 25 22:42:40 2025 from 121.233.138.88 Welcome to Alibaba Cloud Elastic Compute Service ! ➜ ~
]]>最近我开源了一个新项目——CILIKUBE ,一个专为新手设计的 Kubernetes 资源管理平台!它是用 Vue3 + TypeScript + Go (Gin) 打造,目标是“小而美”,让 K8s 管理更简单,代码学习更友好! 一周内已经收到不少 SRE 、云原生爱好者和全栈开发者的反馈,今天想邀请 V2EX 的大家来体验、吐槽和贡献!
CILIKUBE 是什么 CILIKUBE 是一个开源的 K8s 资源管理平台,核心特点: 简单直观:优雅的 UI ,轻松管理 K8s 资源(增删改查)
学习友好:代码清晰,基于 Vue3 和 Go ,适合学习全栈开发或 K8s 二次开发
易于扩展:支持自定义功能,满足你的个性化需求
为什么做这个? CILIKUBE 源于我学习 Vue3 、Go 和 K8s 的实践,学习过程中得到了社区小伙伴的帮助,这不就想着打造一个“新手友好”的开源项目。
项目地址
后端:github.com/ciliverse/cilikube
前端:github.com/cilliantech/cilikube-web
文档:cilikube.cillian.website
想听听 V2EX 大佬的意见!
对小白开发 K8s 管理工具有什么期待?
欢迎体验 CILIKUBE ,点个 Star ,一起打造一个新手友好的 K8s 管理工具!期待大家的反馈和贡献!
]]> [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://bqr1dr1n.mirror.aliyuncs.com"] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"] endpoint = ["https://registry.aliyuncs.com/k8sxio"]
]]>curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn sh -
结果系统崩了,网络全部不能访问了。
排查发现,他把我的 calico 相关的都删了,准备添加 canal 网络,我擦,我赶紧删了这个节点,修复生产系统,calico-system 的 namespace 也被删了,网络系统全部崩溃,我当时一头猛汗,口中问候了他家各种。
网路不行,longhorn 也开始卡,然后系统因为 nfs 卡死很多命令也开始。
先将所有 deploy replicas 设为 0 , 强制 umount nfs ,kubectl 开始能正常操作了。
在 gpt 的帮助下,尝试了各种方案,后来发现,删除 helmchart ,重启 rke2 让它重建 calico 网络
kubectl delete helmchart rke2-calico -n kube-system && kubectl delete helmchart rke2-calico-crd -n kube-system && systemctl restart rke2-server
重建过程中也遇到好多坑,折腾到晚上 3:00 才搞定。
复盘发现是添加的 rke2 版本很新,在/var/lib/rancher/rke2/server/manifests
提供了 rke2-canal.yaml
,而不是 calico 相关配置,导致 rke2 自动取删除 calico 相关网络,安装 canal 网络。
真是个教训。
]]>目前只能用一个指定的命名空间(比如 first )创建 deployment 时不会报错,这个 first 命名空间也是一开始创建 deployment 使用的一个,后面换其他的命名空间都会报上面这个错误。大佬们知道如何排查解决么?
]]>3 年内成功通过 CNCF 旗下云原生相关的 5 个证书,并顺利获得 kubestronaut 的领航员的一个称谓,其实我对于证书不是很感冒,证书也证明不了能力,最多只能证明你曾经学习过。
大概在 3 年以前,公司针对认证证书有一定优惠补助,另外加之当时逢黑色星期五优惠力度很大,所有购买了 CKA 认证考试,没有怎么学一周就通过了,因为个人对于 kubernetes 是有一定的运维和管理基础的,2022 年 3 月 10 日完成了第一个证书。那个时候的证书有效期还是 3 年的,截止 2025 年的 3.10 日,我完成了最后一个 KCSA 考试,并获得了 kubestronaut ,当时收到邮件获得该证书我很是意外和惊喜。 https://www.ljohn.cn/posts/66cd6d39/1741871200815.png
这个时间非常极限,我一度以为 CNCF 官方不会承认我的这个 5 个证书是在同一个有效期内,无法得到 kubestronaut 。
起因是由于公司鼓励大家学习提升自身并能够用于工作中,提升整理的技术水平,这是我做这件事情最开始的一个动机。
后来促使我继续参加如下 4 门考试主要因为我个人对于技术的渴望和追求吧,不然我也想不到有什么更合适的理由了。因为人家造个车都借车(我说的是雷总)几百台,就为了体验不同的产品背后的逻辑,还考了赛车照,肯定不是为了证明自己多牛逼。这里不敢大言不惭和雷布斯比较,我只是觉得如果你认真的对待任何一项技术,相信你的时间也不会白浪费吧。这里不是希望大家在考证书这件事情上浪费时间,但我相信坚持,相信 3w 小时定律。
后面其实规划很简单,就是继续在云原生的道路上继续前行,学习 AI 相关的技术,探索新的机遇。另外个人还是希望自己继续不忘初心,继续扎实做事,低调做人,行稳才能致远。
在 Kubernetes 时代,开发者面临一个关键矛盾:云端集群的复杂性与本地开发便捷性的冲突。传统开发流程中,开发者要么:
kubectl port-forward
和kubectl exec
操作KubeVPN 通过云原生网络隧道技术,将 Kubernetes 集群网络无缝延伸至本地开发环境,实现三大突破:
kubevpn connect
执行后即可:
productpage.default.svc
)➜ curl productpage:9080 # 直接访问集群服务 <!DOCTYPE html> <html>...</html>
通过 Header 条件实现精准流量控制:
kubevpn proxy deployment/productpage --headers user=dev-team
user=dev-team
的请求 → 路由到本地服务同时连接两个集群:
kubevpn connect -n dev --kubeconfig ~/.kube/cluster1 # 主集群 kubevpn connect -n prod --kubeconfig ~/.kube/cluster2 --lite # 第二集群
将云端 Pod 复刻到本地 Docker:
kubevpn dev deployment/authors --entrypoint sh
启动的容器具备:
KubeVPN 通过三层架构实现魔法:
组件 | 功能描述 | 核心技术 |
---|---|---|
流量管理器 | 集群端流量劫持 | MutatingWebhook + iptables |
VPN 隧道 | 建立本地-集群加密通道 | tun 设备 + WireGuard |
控制平面 | 配置管理和状态同步 | gRPC 长连接 + CRD |
graph TD Local[本地环境] -->|加密隧道| Tunnel[VPN 网关] Tunnel -->|服务发现| K8sAPI[Kubernetes API] Tunnel -->|流量代理| Pod[业务 Pod] subgraph K8s 集群 K8sAPI --> TrafficManager[流量管理器] TrafficManager --> Pod end
我们针对 100QPS 压力测试:
场景 | 平均延迟 | CPU 消耗 | 内存消耗 |
---|---|---|---|
直接集群访问 | 28ms | 12% | 256MB |
KubeVPN 代理 | 33ms | 15% | 300MB |
Telepresence | 41ms | 22% | 420MB |
数据显示 KubeVPN 在性能损耗上优于同类方案。
# macOS/Linux brew install kubevpn # Windows scoop install kubevpn # 或使用 Krew 插件 kubectl krew install kubevpn/kubevpn
kubevpn connect --namespace dev
# 本地启动服务 ./my-service & # 拦截带 debug 标记的请求 kubevpn proxy deployment/frontend --headers x-debug=true
curl -H "x-debug: true" frontend.dev.svc/cluster-api
KubeVPN 已形成完整工具链:
加入开发者社区:
# 提交你的第一个 PR git clone https://github.com/kubenetworks/kubevpn.git make kubevpn
项目地址:https://github.com/kubenetworks/kubevpn
中文文档:完整使用手册
技术支持:Slack
通过 KubeVPN ,开发者终于可以在享受咖啡的同时,优雅地调试云端服务 ☕️🚀
]]>几个好玩的功能:
一键搜全部集群(再也不用记那么多 context ) Pod 挂了个一键 AI 诊断按钮(省得一个个去看日志) 看到啥 YAML 配置都能让 AI 解释下(再也不用查 k8s 文档) 浏览器打开就能用 代码在这: https://github.com/KusionStack/karpor
今天刚上 Product Hunt ,有兴趣的老哥可以帮忙点个赞: https://www.producthunt.com/posts/karpor
]]>