摘要:
月9日晚上的一次发布中遇到一个非常奇怪的问题,发布前在 staging 环境测试正常,发布到生产环境后发现所有 ViewComponent 都输出为空(没有任何内容)。生产环境与 staging 环境的不同之处是生产环境生成容器镜像时预编译了 razor 视图文件。 阅读全文
摘要:
我们有一个部署在 k8s 上的应用被一个健康检查问题困扰多年,每次发布时由于健康检查(readiness probe)失败,pod 要被重启很多次,快的话要等半小时到1小时 pod 才能启动成功,慢的话要等几小时甚至十几个小时,最近一次最夸张,pod 重启了2天才启动成功,重启了300多次。 阅读全文
摘要:
次升级是从 `15.8.3` 升级至 `15.9.1` ,升级过程中卡在 `gitlab::database_migrations` 很长时间,在卡住的过程中,centos 系统中一直有个 `bundle` 进程在运行。等了一段时间后看不到进展,于是 control + c 强制结束安装并通过下面的命令尝试降级回 `15.8.3` 阅读全文
摘要:
今天在一个 ASP.NET Core 7.0 的项目中遇到反射时 "Could not load file or assembly" 的问题,build 时没问题,运行时出现异常"Unable to load one or more of the requested types.",找不到的程序集是 `Cnblogs.UCenter.DTO` 程序集所依赖的 阅读全文
摘要:
今天在写单元测试代码中依赖注入部分时在网上找了找,看有没有对应的开源好库,结果发现了 Xunit.Microsoft.DependencyInjection,现学现用体验了一下,感觉味道不错,在这篇博文中简单记录一下。添加继承自 `TestBedFixture` 的自定义 fixture `BlogClientFixture`,向依赖注入容器注册服务的方法在 `AddServices` 重载方法中添加。 阅读全文
摘要:
最近园子在部署 IPv6 时遇到了一个非常奇怪的 dns 解析问题,当给非 www 二级域名(比如 q.cnblogs.com)添加 AAAA(IPv6) 记录后,部分用户访问 q.cnblogs.com 时会被错误地解析为 www.cnblogs.com 对应的 IPv4 地址,去掉 AAAA 解析就恢复正常。为了对付这个不可控的奇怪问题,我们采用了一个将错就错的变通方法 阅读全文
摘要:
今天在发布 EnyimMemcachedCore 的一个预览版 nuget 包时遇到的问题,在这篇博文中记录一下。当时发布的版本是 2.6.0-preview1,发布后在一个项目中将 EnyimMemcachedCore 升级到这个版本,运行时报错 阅读全文
摘要:
最近在学习 angular,记录一下昨天的进展,解决的问题是通过 theme 的配置修改 mat-toolbar 的背景色,避免对色彩的硬编码。首先通过 mat-toolbar (以下统一称为 toolbar)的实现源代码 _toolbar-theme.scss 得知背景色来自 theme 中 background palette 的 app-bar。 阅读全文
摘要:
分享一下我们在 ASP.NET Core 单页应用(前端用的是 Angular)中使用的配置代码:`UseProxyToSpaDevelopmentServer` 用于 Development 环境,需要自己另外启动前端开发服务器,比如 ng serve 命令;* `UseSpaStaticFiles` 用于配置用户针对 SPA 前端文件的 StaticFileMiddleware 阅读全文
摘要:
这两天在开发中的一个功能需要用到定时任务,正好最近准备更多使用 dapr,于是想到这个经常重复编写的代码看是否可以让 dapr 代劳,了解之后发现可以通过 cron binding 实现,动手之后轻松搞定,写博文记录一下 阅读全文
摘要:
使用下面的命令将 kube-master1 作为 control-plane 加入 k8s 集群,加入 etcd 集群时卡住,在 /var/log/containers 中发现 etcd 的错误日志,从日志看是请求 `https://10.0.9.171:2380/members` 时,10.0.9.171 返回的证书不对。 阅读全文
摘要:
昨天在一个高可用集群中添加一台 control-plane 时造成 etcd 无法启动,引发集群故障,在这篇博文中记录一下故障处理过程。Kubernetes 版本是 1.24,加入前集群中只有1台 control-plane,主机名是 kube-master0,待加入的 control-plane 主机名是 kube-master1。 阅读全文
摘要:
之前网络组件用的是 calico,本来想基于 calico 启用 eBPF,但折腾多次没有成功,详见博文`Kubernetes 集群尝试基于 Calico 启用 eBPF](https://www.cnblogs.com/dudu/p/16266354.html`,于是改用 cilium,轻松搞定,这边博文简单记录一下安装步骤。 阅读全文
摘要:
之前基于 Kubernetes 1.23.5 + calico 3.22 尝试过,但没有成功,遇到的问题详见 `K8s 网络切换到 Calico eBPF 后 service node port 与 ingress nginx 不能正常工作`,现在基于 Kubernetes 1.24 + calico 3.23 再次尝试启用 eBPF 阅读全文
摘要:
Kubernetes 1.24 于 2022 年 5 月 3 日正式发布(详见 [Kubernetes 1.24: Stargazer](https://kubernetes.io/blog/2022/05/03/kubernetes-1-24-release-announcement/)),1.24 版本的一个重大变化是从 kubelet 中移除了 dockershim,因此我们将 container runtime 从 docker 切换至 containerd,从而给升级过程中制造了不小的麻烦。 阅读全文
摘要:
刚开始测试 dapr 时为了图省事,使用了 pubsub.redis,现在准备上生产环境,改用支持消息支持化的 pubsub.rabbitmq。用 helm 安装 rabbitmq,使用 chart 的是 bitnami/rabbitmq。需要注意的是 host 参数部分,`user:password` 是连接 rabbitmq 的用户名与密码, 用 bitnami/rabbitmq chart 创建的 rabbitmq 默认用户名就是 `user`,密码在 secret 中 阅读全文
摘要:
最近我们在 kubernetes 集群上部署 rabbitmq 时遇到一个场景,需要将 rabbitmq 使用的 persistent volume 从阿里云性能型 nas 切换为极速型 nas,因为只有极速型 nas 才支持快照与备份功能。Persistent volume 是基于 kubernets dynamic volume provisioning 创建的,这篇博文分享一下我们的操作步骤。 阅读全文
摘要:
我们决定从这周开始在实际开发中使用 dapr,先在 pub/sub 场景使用。这篇博文记录一下在 kubernetes 集群中基于 ASP.NET Core 使用 dapr 发送/订阅消息的试验过程。Dapr 环境准备,应用A发送消息,应用B订阅消息,点火试验,待解决问题 阅读全文
摘要:
接着运行 dapr init ,报错:"docker: no matching manifest for windows/amd64 10.0.17763 in the manifest list entries." 查找资料后得知 docker engine 默认是 Windows container 模式,解决上面的错误需要切换到 Linux container 模式,这时才注意到安装 dapr 时的提示。 阅读全文
摘要:
准备将园子的部分图片站切换到华为云 CDN,切换前需要解决 CDN 缓存刷新问题。华为云 CDN 帮助文档列出的 SDK 中没有 .NET 版,原以为华为云没有提供官方 .NET SDK,于是在博问上提问看有没有非官方的 .NET SDK,
在园友的回答中惊喜地知道,原来华为云已经提供官方 .NET SDK 阅读全文