网站首页 成长录 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。

kubernetes 中 informer 的使用
2020-06-10 11:36 admin kubernetesinformer

一、kubernetes集群的几种访问方式在实际开发过程中,若想要获取kubernetes中某个资源(比如pod)的所有对象,可以使用kubectl、k8sRESTAPI、client-go(ClientSet、DynamicClient、RESTClient三种方式)等多种方式访问k8s集群获取资源。在笔者的开发过程...
阅读全文

使用插件扩展 kubectl
2020-06-10 11:36 admin 插件kubectl

由于笔者所维护的集群规模较大,经常需要使用kubectl来排查一些问题,但是kubectl功能有限,有些操作还是需要写一个脚本对kubectl做一些封装才能达到目的。比如我经常做的一个操作就是排查一下线上哪些宿主的cpu/memoryrequest使用率超过某个阈值,kubectl并不能直接看到一个master下所有宿...
阅读全文

深入Golang Runtime之Golang GC的过去,当前与未来
2020-06-10 11:36 admin golangruntime

对于学习Java的开发来说,GC并不陌生,实际上Go的GC流程与Java的CMS实现上不尽相同,但是流程基本类似.而对于公司大部分C/C++的开发者来说,习惯了尽量使用栈对象,手动管理内存,尽量少new,对GC的一些术语,流程可能就有点陌生了,或许可能对GC有一些些怀疑(实际上20世纪90年代后诞生的,得到广泛应用的语...
阅读全文

一探B站后台架构, 他山之石, 何以攻玉? -- 仅从一个一线Golang开发者的角度谈B站4.22代码
2020-06-10 11:36 admin golang攻玉

4月22日,B站部分后台源代码因为某愤怒的员工,被上传至Github.本文我们不讨论安全,法律(根据代码漏洞,去恶意攻击或者获利是违法的!我们工作时也要注意代码安全),我仅从开发者的角度谈谈,这份代码我们能学到什么?B站Golang生态建设,代码规范,工具建设,技术栈选择,对于Go在部门或公司的推广又有哪些值得借鉴?首...
阅读全文

使用 code-generator 为 CustomResources 生成代码
2020-06-10 11:36 admin codegeneratorCustomResources

kubernetes项目中有相当一部分代码是自动生成的,主要是API的定义和调用方法,kubernetes项目下`k8s.io/kubernetes/hack/`目录中以update开头的大部分脚本都是用来生成代码的。[code-generator](https://links.jianshu.com/go?to=ht...
阅读全文

kube-on-kube-operator 开发(一)
2020-06-10 11:36 admin 开发kubeonkubeoperator

kubernetes已经成为容器时代的分布式操作系统内核,目前也是所有公有云提供商的标配,在国内,阿里云、腾讯云、华为云这样的公有云大厂商都支持一键部署kubernetes集群,而kubernetes集群自动化管理则是迫切需要解决的问题。对于大部分不熟悉kubernetes而要上云的小白用户就强烈需要一个被托管及能自动...
阅读全文

部署高可用 kubernetes 集群
2020-06-10 11:36 admin 集群kubernetes

kubernetes虽然具有故障自愈和容错能力,但生产环境中将其高可用部署还是非常有必要的,本文会介绍如何构建一个高可用的Kubernetes集群。kuber-controller-manager和kube-scheduler的高可用官方已经实现了,都是通过etcd全局锁进行选举实现的,etcd是一个分布式,强一致的(...
阅读全文

kubernetes 自定义资源(CRD)的校验
2020-06-10 11:36 admin 自定义kubernetes

在以前的版本若要对apiserver的请求做一些访问控制,必须修改apiserver的源代码然后重新编译部署,非常麻烦也不灵活。虽然apiserver也支持一些动态的准入控制器,在apiserver配置中看到的`ServiceAccount,NamespaceLifecycle,NamespaceExists,Limi...
阅读全文

使用 Go Modules 管理依赖
2020-06-10 11:36 admin gomodules

GoModules是Go语言的一种依赖管理方式,该feature是在Go1.11版本中出现的,由于最近在做的项目中,团队都开始使用gomodule来替代以前的Godep,Kubernetes也从v1.15开始采用gomodule来进行包管理,所以有必要了解一下gomodule。gomodule相比于原来的Godep,g...
阅读全文

kubelet 状态上报的方式
2020-06-10 11:36 admin kubelet上报

分布式系统中服务端会通过心跳机制确认客户端是否存活,在k8s中,kubelet也会定时上报心跳到apiserver,以此判断该node是否存活,若node超过一定时间没有上报心跳,其状态会被置为NotReady,宿主上容器的状态也会被置为Nodelost或者Unknown状态。kubelet自身会定期更新状态到apis...
阅读全文

golang基于etcd实现分布式锁
2020-06-10 11:36 admin golangetcd

我们希望同一时间只有一个线程能够访问到资源,但是分布式资源点之间的协调会非常麻烦,这个时候我们就需要一个分布式锁。etcd分布式锁实现原理:1.利用租约在etcd集群中创建一个key,这个key有两种形态,存在和不存在,而这两种形态就是互斥量。2.如果这个key不存在,那么线程创建key,成功则获取到锁,该key就为存...
阅读全文

kube-scheduler 源码分析
2020-06-10 11:36 admin 源码kubescheduler

kube-scheduler的设计Kube-scheduler是kubernetes的核心组件之一,也是所有核心组件之间功能比较单一的,其代码也相对容易理解。kube-scheduler的目的就是为每一个pod选择一个合适的node,整体流程可以概括为三步,获取未调度的podList,通过执行一系列调度算法为pod选择...
阅读全文

大规模场景下 kubernetes 集群的性能优化
2020-06-10 11:35 admin 集群kubernetes

一、etcd优化*1、etcd采用本地ssd盘作为后端存储存储*2、etcd独立部署在非k8snode上*3、etcd快照(snap)与预写式日志(wal)分盘存储etcd详细的优化操作可以参考上篇文章:。二、apiserver的优化1、参数调整*`--max-mutating-requests-inflight`:在...
阅读全文

etcd 性能测试与调优
2020-06-10 11:35 admin etcd调优

etcd是一个分布式一致性键值存储。其主要功能有服务注册与发现、消息发布与订阅、负载均衡、分布式通知与协调、分布式锁、分布式队列、集群监控与leader选举等。etcd性能优化>官方文档原文:[https://github.com/etcd->io/etcd/blob/master/Documentation/tuni...
阅读全文

kubernetes 版本多久该升级一次
2020-06-10 11:35 admin kubernetes版本

kubernetes社区每三个月发布一个新版本,可以说发布新版本的速度非常快,当然,在生产环境中版本升级的速度可能跟不上新版本发布的速度,那么确保目前使用的版本还处于社区的维护阶段就非常重要了,kubernetes官方对各个版本支持的时间是多长呢?kubernetes发行版通常支持9个月,在此期间,如果发现严重的bug...
阅读全文
顶部 底部