发布了文章2021-02-17
最近在部署K8s持久化存储插件时,需要按照CSI官网说明部署一个Deployment pod,由于我们的自研存储类型是文件存储不是块存储,所以部署pod不需要包含容器 external-attacher ,只需要包含 external-provisioner sidecar container和我们自研的csi-plugin容器就行,部...
发布了文章2021-02-17
最近在维护组内K8s CSI plugin代码时,一直对其内部原理好奇,故趁机深入学习熟悉K8s CSI相关原理。部署K8s持久化存储插件时,需要按照CSI官网说明,部署一个daemonset pod实现插件注册,该pod内容器包含 node-driver-registrar ,部署yaml类似如下:
发布了文章2021-01-11
calico插件代码仓库在 projectcalico/cni-plugin ,并且会编译两个二进制文件:calico和calico-ipam,其中calico会为sandbox container创建route和虚拟网卡virtual interface,以及veth pair等网络资源,并且会把相关数据写入calico datastore数据库里;calico-ipam...
发布了文章2021-01-11
之前在 Kubernetes学习笔记之kube-proxy service实现原理 学习到calico会在worker节点上为pod创建路由route和虚拟网卡virtual interface,并为pod分配pod ip,以及为worker节点分配pod cidr网段。
发布了文章2021-01-04
我们生产k8s对外暴露服务有多种方式,其中一种使用 external-ips clusterip service ClusterIP Service方式对外暴露服务,kube-proxy使用iptables mode。这样external ips可以指定固定几台worker节点的IP地址(worker节点服务已经被驱逐,作为流量转发节点不作为计算...
发布了文章2020-12-28
之前一篇文章学习 Kubernetes学习笔记之ServiceAccount TokensController源码解析 ,主要学习ServiceAccount有关知识,发现其中使用了LRU Cache,代码在 L106 。k8s自己封装了一个LRU cache的对象 MutationCache ,正好趁此机会复习下 LRU 算法知识。
发布了文章2020-12-28
在 Kubernetes学习笔记之ServiceAccount AdmissionController源码解析 文章中,知道一个ServiceAccount对象都会引用一个type="kubernetes.io/service-account-token" 的secret对象,这个secret对象内的 ca.crt 、 namespace 和 token 数据会被挂载到pod内的每一个容...
发布了文章2020-12-28
本文章基于k8s release-1.17分支代码,代码位于 plugin/pkg/admission/serviceaccount 目录,代码:admission.go 。
发布了文章2020-12-27
我们目前生产k8s和calico使用ansible二进制部署在私有机房,没有使用官方的calico/node容器部署,并且因为没有使用network policy只部署了confd/bird进程服务,没有部署felix。采用BGP(Border Gateway Protocol)方式来部署网络,并且采用 Peered with TOR (Top of Ra...
发布了文章2020-05-03
iptables 是基于内核态的 netfilter 框架,用来过滤 ip 数据包和网络地址转换 NAT 的一个工具,一般用作防火墙功能,或负载均衡功能。简单点说:iptables 是用户态的命令行工具,可以操作内核态的 iptables 的几个模块(基于更底层的 netfilter 模块),然后达到过滤或...
发布了文章2020-05-01
kube-proxy 二进制文件只有 37M 左右,不是很大,没记错的话 gitlab runner 有 57M 好像(跑 gitlab ci/cd,也是 go 写的)。kube-proxy 会以DaemonSet 形式跑在每一个 Node 节点上,当然也可以只跑在一小部分 Node 节点上转发数据包,只是代理节点,而另一大部分 Node...
赞了文章2020-04-13
容器技术的本质是对计算机系统资源的隔离和控制,让原来全局的资源变得只能部分进程之间共享,这跟我们常说的虚拟机这种虚拟化技术没有关系,最新的标准在制定过程中,包括镜像的格式,容器运行时的一些规范,具体见Open Container Initiative(OCI)。
赞了文章2020-04-13
首先,bridge是一个虚拟网络设备,所以具有网络设备的特征,可以配置IP、MAC地址等;其次,bridge是一个虚拟交换机,和物理交换机有类似的功能。
赞了文章2019-10-25
最近,因为需要对 Kubernetes 进行二次开发,接触了 client-go 库。client-go 作为官方维护的 go 语言实现的 client 库,提供了大量的高质量代码帮助开发者编写自己的客户端程序,来访问、操作 Kubernetes 集群。 在学习过程中我发现,除了官方的几个 examples 和 RE...
提出了问题2018-11-12
提出了问题2018-10-04
提出了问题2018-10-04
发布了文章2018-08-20
如果你之前没有深入了解 Angular 依赖注入系统,那你现在可能认为 Angular 程序内的根注入器包含所有合并的服务提供商,每一个组件都有它自己的注入器,延迟加载模块有它自己的注入器。
发布了文章2018-08-02
我们知道,Angular 依赖注入机制包含 @Optional 和 @Self 等影响依赖解析过程的装饰器,尽管它们字面意思就直接解释了其作用,但是 @Host 却困扰了我好久。我在其源码注释中看到该装饰器的 描述:
发布了文章2018-08-02
我们知道,@angular/forms 包主要用来解决表单问题的,而表单问题非常重要的一个功能就是表单校验功能。数据校验非常重要,不仅仅前端在发请求给后端前需要校验数据,后端对前端发来的数据也需要校验其有效性和逻辑性,尤其在存入数据库前还得校验数据的有效性。 @an...