A Comprehensive Study of Kotlin for Java Developers
In the rapidly evolving field of software development, staying abreast of emerging technologies is essential for maintaining a c…
阅读全文利用LangChain和语言模型交互
从名字上可以看出来,LangChain可以用来构建自然语言处理能力的链条。它是一个库,提供了统一的接口,来和各种语言模型进行交互。更重要的是,它支持使用插件(工具),让语言模型能够获取实时的知识。LangChain基于Python,如果你熟悉JavaScr…
阅读全文K8S集群跨云迁移
要将K8S集群从一个云服务商迁移到另外一个,需要解决以下问题:
- 各种K8S资源的迁移
- 工作负载所挂载的数据卷的迁移
- 工作负载所使用的镜像的迁移
K8S资源、数据卷的迁移,可以考虑基于Velero项目。镜像仓库的迁移较为简单,可供选择的开源工具包括阿里云的image-syncer、腾讯云的image-transfer。
Terraform快速参考
Terraform用于实现基础设施即代码(infrastructure as code)—— 通过代码(配置文件)来描述基础设施的拓扑结构,并确保云上资源和此结构完全对应。Terraform有三个版本,我们主要关注Terraform CLI。
Terraf…
阅读全文编写Kubernetes风格的APIServer
前段时间接到一个需求做一个工具,工具将在K8S中运行。需求很适合用控制器模式实现,很自然的就基于kubebuilder进行开发了。但是和K8S环境提供方沟通时发现,他们不允许工作负载调用控制平面的接口,这该怎么办呢。
最快速的解决方案是,自己运行一套ku…
阅读全文记录一次KeyDB缓慢的定位过程
这个问题出现在一套搭建在虚拟机上的Kubernetes 1.18集群上。集群有三个节点:
1 2 3 4 5 |
# kubectl get node -o wide NAME STATUS VERSION INTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME 192.168.104.51 Ready v1.18.3 192.168.104.51 CentOS Linux 7 (Core) 3.10.0-862.3.2.el7.x86_64 docker://19.3.9 192.168.104.72 Ready v1.18.3 192.168.104.72 CentOS Linux 7 (Core) 3.10.0-862.3.2.el7.x86_64 docker://19.3.9 192.168.104.108 Ready v1.18.3 192.168.104.108 CentOS Linux 7 (Core) 3.10.0-862.3.2.el7.x86_64 docker://19.3.9 |
KeyDB通过StatefulSet管理,一共有三个实例:
1 2 3 4 5 |
# kubectl -n default get pod -o wide -l app.kubernetes.io/name=keydb NAME READY STATUS RESTARTS IP NODE keydb-0 1/1 Running 0 172.29.2.63 192.168.104.108 keydb-1 1/1 Running 0 172.29.1.69 192.168.104.72 keydb-2 1/1 Running 0 172.29.1.121 192.168.104.51 |
这三个实例:
- 由于反亲和设置,会在每个节点上各运行一个实例
- 启用Active - Active(--active-replica)模式的多主(--multi-master)复制 :每个实例都是另外两个的Slave,每个实…
IPVS模式下ClusterIP泄露宿主机端口的问题
在一个启用了IPVS模式kube-proxy的K8S集群中,运行着一个Docker Registry服务。我们尝试通过docker manifest命令(带上--insecure参数)来推送manifest时,出现TLS timeout错误。
这个Registry通过ClusterIP类型的Service暴露访问端点,且仅仅配置了HTTP/80端口。docker manifest命令的--insecure参数的含义是,在Registry不支持HTTPS的情况下,允许使用不安全的HTTP协议通信。…
阅读全文