摘要:
作为云原生开发人员难免会给 kubernetes client-go 打交道,但是有许多坑总是一遍又一遍的被开发者踩到,下面梳理常见的坑,希望大家注意避免: informer cache中的数据是只读的, 任何修改都先deepcopy informer cache中的数据是只读的, 任何修改都应该先 阅读全文
摘要:
背景 在kubernetes中, secrets默认是明文存储在etcd中,具有很大的安全风险,可以配置KMS provider进行加密。但引入KMS provider是否会对apiserver造成影响,需要从性能和可用方面进行仔细考量。 架构 目前kubernetes调用kms进行加解密,我们需要 阅读全文
摘要:
Backgound === 借助于kubernetes优秀的弹性扩缩功能,运行其中的应用程序能够在流量突增的时候坦然应对,在流量低谷的时候无需担心成本。但于此同时,也带来了极大的挑战: 弹性扩缩导致容器IP动态变化,客户端无法直接依赖于容器IP进行访问,我们必须通过某种方式固定流量入口,将流量通过该 阅读全文
摘要:
最近在公司的线上服务器上发现了一个现象: 将某个node的kubelet短暂的停掉之后,其上的pod马上会被驱逐,这让笔者大吃一惊,印象之中,停掉kubelet后,该node会变为 状态,随后controller manger会经过一段时间才开始驱逐其上的pod。还有个参数专门来控制这个时间: po 阅读全文
摘要:
最近在查看一个kubernetes集群中node not ready的奇怪现象,顺便阅读了一下kubernetes kube controller manager中管理node健康状态的组件 。我们知道kubernetes是典型的master slave架构,master node负责整个集群元数据 阅读全文
摘要:
基于kuebrnetes v1.17 简单来说,一个完整的streaming请求如下: 客户端 kubectl exec i t ... kube apiserver 向 Kubelet 发送流式请求 /exec/ Kubelet 通过 CRI 接口向 CRI Shim 请求 Exec 的 URL 阅读全文
摘要:
cgroup是linux内核中用于实现资源使用限制和统计的模块,docker的风靡一时少不了cgroup等特性的支持。kubernetes作为容器编排引擎,除了借助docker进行容器进程的资源管理外,还提供了一些更加高级的资源管理功能,以提高资源利用率和更加稳定的程序运行环境,其中必然少不了cgr 阅读全文
摘要:
kubernetes 中的抢占功能是调度器比较重要的feature,但是真正使用起来还是比较危险,否则很容易把低优先级的pod给无辜kill。为了提高GPU集群的资源利用率,决定勇于尝试一番该featrue。当然使用之前还是得阅读一下相关的代码做到心里有数,出了问题也方便定位修复。 基本原理 优先级 阅读全文
摘要:
背景 随着公司业务的发展,底层容器环境也需要在各个区域部署,实现多云架构, 使用各个云厂商提供的CNI插件是k8s多云环境下网络架构的一种高效的解法。我们在阿里云的方案中,便用到了阿里云提供的CNI插件terway。terway所提供的VPC互通的网络方案,方便对接已有的基础设施,同时没有overl 阅读全文
摘要:
Golang里的http request timeout比较简单,但是稍不留心就容易出现错误,最近在kubernetes生产环境中出现了的一个问题让我有机会好好捋一捋golang中关于timeout中的所有相关的东西。 Basic golang中timeout有关的设置, 资料已经比较多, 其中必须 阅读全文