Kubernetes 中 JVM 故障问题排查心得总结
在我们日常的工作当中,通常应用都会采用Kubernetes进行容器化部署,但是总是会出现一些问题,例如,JVM堆小于Docker容器中设置的内存大小和Kubernetes的内存大小,但是还是会被OOMKilled。在此我们介绍一下K8s的OOMKilled的ExitCode编码。ExitCode13
WebAssembly 可以取代 Kubernetes 吗?
WebAssembly和Kubernetes实际上没有直接的可比性,但WASM解决了安全性和易用性等方面的问题,这些问题长期困扰着使用Kubernetes的开发人员。WebAssembly或Wasm被证明是在web浏览器上运行原生代码的一种非常实用的方法,可以作为编译器,万维网联盟(W3C)在201
浅谈 Kubernetes Service
本文帮助大家读懂Service以及相关的K8s资源EndPoint、EndpointSlice、kube-proxy、kube-dns等基本概念以及相互之间的关系,各自的功能职责。跟着介绍了Service的常见类型,各自的使用场景、优缺点,以及为什么要引入Ingress及其原理介绍。作者:吴文兵,中
K8s 原生支持的准入策略管理
在Kubernetes1.26发布的changelog中,发现了一个alpha版本的验证准入策略的更新,其实就是可以用一种特定的语言来进行准入控制,以前我们介绍过可以通过OPA、kyverno等方式来进行策略管理,但是这些方式并非官方默认的方式,而现在官方提供了一种自带的方式,在验证准入策略时可以使
Kubernetes 网络基础知识
本文主要介绍一些Linux网络基础和概念:namespace、vethpair、bridge、overlay、隧道等技术,便于深入理解Kubernetes网络。作者:王一之,中国移动云能力中心软件开发工程师,专注于云原生领域。01Networknamespace在Linux系统中,namespace
深入理解 Kubernetes 中的用户与身份认证授权
本章主要简单阐述kubernetes认证相关原理,最后以实验来阐述kubernetes用户系统的思路。主要内容:了解kubernetes各种认证机制的原理了解kubernetes用户的概念了解kubernetesauthenticationwebhook完成实验,如何将其他用户系统接入到kubern
k8s系列13-calico部署BGP模式的高可用k8s集群
本文主要在centos7系统上基于containerd和v3.24.5版本的calico组件部署v1.26.0版本的堆叠ETCD高可用k8s原生集群,在LoadBalancer上选择了PureLB和calico结合bird实现BGP路由可达的K8S集群部署。此前写的一些关于k8s基础知识和集群搭建的
在开始使用 Prometheus 时需要避免这6个错误
这里我们来介绍6个开始使用基于Prometheus的监控时常见的错误,本文翻译自文章https://promlabs.com/blog/2022/12/11/avoid-these-6-mistakes-when-getting-started-with-prometheus,这些都是Prometh
云原生 GPU 算力管理探索
本文介绍了Kubernetes管理GPU机制,以及业内的一些GPU后端技术,探讨以云原生的方式来管理GPU资源。作者:周浩,中国移动云能力中心软件开发工程师,专注于云原生微服务、算力网络等领域。01GPU简介GPU具备大量核心和高速内存,擅长并行计算,适合用于深度学习训练/推理、图形图像处理以及科学
探索基于隧道的 Kubernetes 跨集群通讯
伴随着k8s的大量使用,无论是基于应用隔离或者高可用,容灾的需要还是运维管理的需求,很多企业都会部署多个K8S集群。这就会导致有些应用依赖于其它k8s集群的微服务,需要从一个集群里的pod访问另外一个集群里的pod或者service。为了解决跨集群服务调用的问题,我们试验了一种基于隧道的方案,下面就
Kubernetes的负载均衡方案:MetalLB
一.产品介绍在Kubernetes部署完成服务后,我们经常需要将服务开放给到外部用户访问。如果是使用云平台(阿里云、腾讯云、AWS等)的话,这个需求处理起来非常简单,可以通过云平台的LoadBalancer来实现。但如果是自建的kubernetes裸机集群,那则要麻烦得多。祼机集群默认不支持负载均衡
SpringAOP(2)-spring源码详解(七)
上篇文章说了spring的aop,在启动类加一个启动注解,注解点进源码可以看到注册了bean定义的后置处理器。每个切入点都会生成一个adviosr,他们会排序好依次注册。
SpringAOP(1)-spring源码详解(六)
上篇文章说了spring监听器,监听event,先把事件全部存储在多播器,通过publicEvent来触发多播器发送事件,他可以通过代码注解,或者实现接口的方式来实现事件监听,达到解耦和异步的效果。
Spring监听器-spring源码详解(五)
前面介绍了springIOC在上面那个方法里实现,那么下面这个方法里实现了什么呢?在springBean创建完之后的扩展代码。 contextRefreshEvent事件监听上下文初始化方法。
Spring循环依赖-spring源码详解(四)
如果在最后调用动态代理,这时候循环依赖的bean就不是动态代理的bean,所以要在之前就创建动态代理。所以这里有两个地方调用动态代理,实例化之后和初始化之后调用。 只在循环依赖的情况下在实例化之后创建动态代理,所以需要判断当前是不是循环依赖。
BeanFactoryPostProcessor-spring源码详解(三)
前面说过这里会注册很多用于解析注解的bean定义,比如springEvent时间,比如@autowired处理器等,其中就包含 ConfigurationClassPostProcessor,这个解析的就是@Component,@import等。
springIOC-spring源码详解(二)
映入眼帘,源码里是大家都熟悉的三个方法,首先执行的是this(),调用构造函数, 通过AnnotatedBeanDefinitionReader这里会读取很多重要的初始类,
spring源码详解(一)
Ioc容器是控制反转,解决层与层之间的耦合问题。没出来之前如果想引用其他类需要new 对象,当出现ioc之后,通过DI依赖注入的方式引用。container里面管理着bean。
Mysql锁--mysql详解(十二)
上篇文章说了mvcc保证事务隔离性,隔离有脏读,不可重复读,幻读,而mysql有四种隔离级别,read uncommit,read commit,repeatable read,serializable,解决这些问题,mysql新版本默认是可重复读,利用mvcc解决幻读,read view链表组成有m_ids活跃事务id,最大事务id和最小事务id以及当前事务id,解决的是快照读,当前读还是会存在一定问题。
Mvcc--mysql详解(十一)
上篇文章说了为了解决mysql原子性,于是undo日志来记录需要回滚的数据,首先回滚不需要考虑select,每行数据都有roll_pointer指针,指向insert undo日志,update和delete与insert是不同的,多一个old_roll_pointer指向需要回滚的日志,update分为主键更新和非主键更新,减少不必要的重排序性能消耗。