自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(278)
  • 资源 (11)
  • 收藏
  • 关注

原创 在k8s上搭建elasticsearch 服务

k8s搭建高可用elasticsearch集群:eck

2022-04-11 14:18:11 3378

转载 全面剖析 MongoDB 高可用架构

MongoDB高可用架构

2022-04-11 14:00:28 2623 1

原创 kubeadm+kube-vip搭建高可用k8s集群

通用安装基本软件包yum install bash‐comp* vim net‐tools wget ‐y设置主机名,管理节点设置主机名为node1(node2的设置为node2)hostnamectl set-hostname node102设置Host解析,编辑/etc/hosts文件,添加域名解析[root@node1 ~]# vim /etc/hosts10.168.1.101 node10110.168.1.102 node10210.168.1.103

2022-04-08 18:02:41 1719

原创 Docker架构简介

Docker可以帮助用户在容器内部快速自动化部署应用,并利用Linux内核特性命名空间(namespaces)及控制组(cgroups)等为容器提供隔离的运行环境。Docker借助操作系统层的虚拟化实现资源的隔离,因此Docker容器在运行时与虚拟机(VM)的运行有很大的区别,Docker容器与宿主机共享同一个操作系统,不会有额外的操作系统开销。这样的优势很明显,因而大大提高了资源利用率,并且提升了I/O等方面的性能。Docker总架构图Docker的总架构如图1-1所示。架构中主要的模块有:D..

2022-03-08 14:32:32 2927

转载 详解 Kubernetes StatefulSet 实现原理

在 Kubernetes 的世界中,ReplicaSet和Deployment主要用于处理无状态的服务,无状态服务的需求往往非常简单并且轻量,每一个无状态节点存储的数据在重启之后就会被删除,虽然这种服务虽然常见,但是我们仍然需要有状态的服务来实现一些特殊的需求,StatefulSet 就是 Kubernetes 为了运行有状态服务引入的资源,例如 Zookeeper、Kafka 等。这篇文章会介绍 Kubernetes 如何在集群中运行有状态服务,同时会分析这些有状态服务 StatefulSet ...

2022-03-01 16:45:01 450

原创 kubernetes之client-go的Indexer

Indexer是client-go用来存储资源对象并自带索引功能的本地存储,Reflector从DeltaFIFO中将消费出来的资源对象存储至Indexer。Indexer中的数据与Etcd集群中的数据保持完全一致。client-go可以很方便地从本地存储中读取相应的资源对象数据,而无须每次都从远程Etcd集群中读取,这样可以减轻Kubernetes API Server和Etcd集群的压力。在介绍Indexer之前,先介绍一下ThreadSafeMap。ThreadSafeMap是实现并发安全的存储

2022-02-24 18:56:16 614

转载 IaaS、PaaS、SaaS、BaaS和FaaS, 这些区别你真的了解吗?

aaS、PaaS、SaaS、BaaS、FaaS,这些名词后面都带着aas三个字母,aas 是 As-a-Service,即为服务的意思。我们看下面这个架构图:IaaS、PaaS、SaaS云平台一般都会提供以上架构图中的三种云服务IaaS:Infrastructure as a Service(基础设施即服务)从上面的架构图可以看出,IaaS处于最底层,服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房),客户自己部署和执行操作系统或应用程序等各种软件。.

2022-02-14 19:41:36 618

原创 结合kubebuilder与code generator编写CRD

概念简介code-generatork8s.io/client-go 提供了对k8s原生资源的informer和clientset等等,但对于自定义资源的操作则相对低效,需要使用 rest api 和 dynamic client 来操作,并自己实现反序列化等功能。code-generator 提供了以下工具用于为k8s中的资源生成相关代码,可以更加方便的操作自定义资源:deepcopy-gen: 生成深度拷贝对象方法使用方法: 在文件中添加注释// +k8s:deepcopy-gen=

2022-02-14 18:42:44 1327

原创 prometheus-adapter原理分析

原理分析prometheus+prometheus-adapter的工作原理prometheus通过聚合层扩展kubenetes API原理聚合层在 kube-apiserver 进程内运行。在扩展资源注册之前,聚合层不做任何事情。 要注册 API,用户必须添加一个 APIService 对象,用它来“申领” Kubernetes API 中的 URL 路径。 自此以后,聚合层将会把发给该 API 路径的所有内容 转发到已注册的 APIService。总结原理如下:aggre

2022-01-13 18:56:07 4230

转载 一文读懂 Kubernetes APIServer 原理

前言整个Kubernetes技术体系由声明式API以及Controller构成,而kube-apiserver是Kubernetes的声明式api server,并为其它组件交互提供了桥梁,因此加深对kube-apiserver的理解就显得至关重要了。整体组件功能kube-apiserver作为整个Kubernetes集群操作etcd的唯一入口,负责Kubernetes各资源的认证&鉴权、校验以及CRUD等操作,提供RESTful APIs,供其它组件调用:kube-apis

2022-01-13 17:47:46 495

原创 kubernetes hpa源码分析

初始化文件位置:cmd/kube-controller-manager/app/controllermanager.gofunc NewControllerInitializers(loopMode ControllerLoopMode) map[string]InitFunc { ... controllers["horizontalpodautoscaling"] = startHPAController ...}HPA Controller和其他的Controller一样,...

2022-01-11 10:14:08 571

转载 【SpringBoot】 理解Spirng中的IOC原理

前言前文已经介绍了Spring Bean的生命周期,在这个周期内有一个重要的概念就是:IOC容器大家也知道IOC是Sping 的重要核心之一,那么如何理解它呢,它又是产生什么作用呢?本文就IOC原理进行简要阐述。IOC定义IoC 全称为Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。  DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决...

2020-05-28 01:52:04 6350

转载 Spring中 如果该Service有多个实现类,它怎么知道该注入哪个ServiceImpl类?

每个service的impl都可以指定名称(使用@Service(“名称”))2.Controller中注入service的时候使用名称来指定注入哪一个。(1)  @Autowired @Qualifier("名称") (2)  @Resource(name="名称")接口 public interface HumanService { public String name();}接口实现类 @Service("teacherService"...

2020-05-15 14:29:04 919

原创 【java】private和static方法不能被重写

一、什么是重写重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Excep...

2020-03-19 11:49:19 2281 3

转载 Kubelet 状态更新机制

当 Kubernetes 中 Node 节点出现状态异常的情况下,节点上的 Pod 会被重新调度到其他节点上去,但是有的时候我们会发现节点 Down 掉以后,Pod 并不会立即触发重新调度,这实际上就是和 Kubelet 的状态更新机制密切相关的,Kubernetes 提供了一些参数配置来触发重新调度到嗯时间,下面我们来分析下 Kubelet 状态更新的基本流程。kubelet 自身会定期更新...

2020-03-04 17:30:45 1305

原创 kubernetes部署dashboard

一、版本k8s版本:v1.17.0root@k8s-1:~# kubectl versionClient Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean"...

2020-03-04 16:04:39 3530

转载 Bash 脚本 set 命令教程

Bash 脚本 set 命令教程服务器的开发和管理离不开 Bash 脚本,掌握它需要学习大量的细节。set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。一、简介我们知道,Bash 执行脚本的时候,会创建一个新的 Shell。$ bash script.sh上面代码...

2020-03-02 17:41:12 1155

转载 为什么子类重写父类的方法不能低于其在父类中的访问权限?

如果子类重写的父类的方法的访问权限低于其在父类中的访问权限,会影响多态。在父类中是public的方法,如果子类中将其降低访问权限为private, 那么父类在实现多态时如果调用子类的这个重写方法,但是这个方法已经是private,没有办法调用,所以就无法实现多态了。public class Test { public static void main(String[] args) {...

2020-01-07 11:11:18 2510

转载 分配 Pod 到 Node 上

您可以限制pod只能在特定node上运行,或者更倾向于在某些特定 node 上运行。 有几种方法可以做到这一点,他们都使用label selectors进行选择。 一般来说,这种约束是不必要的,因为 scheduler 会自动进行合理的安排(例如,将 pod 分布在所有 node 上,而不是将 pod 分配到空闲资源不足的 node 上,等等) 但是在某些情况下,您可能需要对 node...

2019-12-10 10:19:09 1387

转载 kubernetes平滑迁移某个节点上的pod

cordon, drain, uncordon这三个命令是正式release的1.2新加入的命令,三个命令一起介绍,是因为三个命令配合使用可以实现节点的维护。在1.2之前,因为没有相应的命令支持,如果要维护一个节点,只能stop该节点上的kubelet将该节点退出集群,是集群不在将新的pod调度到该节点上。如果该节点上本生就没有pod在运行,则不会对业务有任何影响。如果该节点上有pod正在运行...

2019-12-10 10:09:57 1957

原创 golang interface内部结构的一个面试考点

关于interface的源码问题,这里举一个例子说明一下,代码如下package mainimport ( "fmt")type People interface { Show()}type Student struct{}func (stu *Student) Show() {}func live() People { var stu *Student ...

2019-12-03 17:41:44 651

原创 golang学习--关于defer的执行顺序

实例一、package mainimport ( "fmt")func main() { defer_call()}func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer func() { ...

2019-12-03 17:18:16 2637

转载 IO多路复用的三种机制Select,Poll,Epoll

I/O多路复用(multiplexing)的本质是通过一种机制(系统内核缓冲I/O数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作select、poll 和 epoll 都是 Linux API 提供的 IO 复用方式。相信大家都了解了Unix五种IO模型,不了解的可以 => 查看这里[1] blocking...

2019-12-03 16:09:44 223

转载 Go 语言闭包详解

Go 语言闭包详解原文链接:Go 语言闭包详解前言Go 语言闭包详解什么是闭包?闭包是由函数和与其相关的引用环境组合而成的实体。下面就来通过几个例子来说明 Go 语言中的闭包以及由闭包引用产生的问题。函数变量(函数值)在说明闭包之前,先来了解一下什么是函数变量。在 Go 语言中,函数被看作是第一类值,这意味着函数像变量一样,有类型、有值,其他普通变量...

2019-12-02 17:56:39 497

原创 k8s源码分析--kube-scheduler源码(一)

版本:v1.13.0启动分析kubernetes基础组件的入口均在cmd目录下,kube-schduler入口在scheduler.go下。kubernetes所有的组件启动采用的均是command的形式,引用的是spf13类库。func main() { rand.Seed(time.Now().UnixNano()) //创建Cobra格式的Sched...

2019-11-28 10:55:39 809

转载 《k8s-1.13版本源码分析》-调度器初始化

源码分析系列文章已经开源到github,地址如下:github: https://github.com/farmer-hutao/k8s-source-code-analysis gitbook: https://farmer-hutao.github.io/k8s-source-code-analysis本文大纲概述 从 –config 开始 options.Optio...

2019-11-28 10:53:18 225

原创 k8s源码分析--kube-scheduler源码(二)

前言Pod priorityPod 有了 priority(优先级) 后才有优先级调度、抢占调度的说法,高优先级的 pod 可以在调度队列中排到前面,优先选择 node;另外当高优先级的 pod 找不到合适的 node 时,就会看 node 上低优先级的 pod 驱逐之后是否能够 run 起来,如果可以,那么 node 上的一个或多个低优先级的 pod 会被驱逐,然后高优先级的 pod 得...

2019-11-28 10:35:21 306

原创 k8s源码分析——kube-apiserver源码阅读

前言Kubernetes API Server 是有kube-apiserver进程实现的,他运行在Kubernetes的管理节点--Master上,并对外提供Kubernetes Restful API,它提供的主要是与集群管理相关的API服务,例如校验pod、service、rc controller的配置并存储到后端的etcd server上。下面我们分别对其启动过程、关键代码分析及设计...

2019-11-25 16:55:00 1656

转载 Kubernetes 源码分析 -- API Server之编解码

在Kubernetes源码分析-- API Server之API Install篇中,我们了解到K8S可以支持多版本的API,但是Rest API的不同版本中接口的输入输出参数的格式是有差别的,Kubernetes是怎么处理这个问题的呢?另外Kubernetes支持yaml、json两个格式的配置,同时又能够支持json、yaml和pb等格式的编解码进行协议传输,那么Kubernetes又是如何实...

2019-11-25 14:55:27 916

转载 Kubernetes 源码分析 -- API Server之API安装

前言API Server的启动中,我们直到介绍了三种服务Master、CustomResourceDefinitions、Aggrator的创建,但是具体的API的创建部分没有介绍。本文旨在把这块说清楚,让我们了解整个API Server对外提供了哪些API,这些API是在怎样被注册到服务中去的。我们知道,API Server对外提供的Http/Https服务,这都是基于go http服务框...

2019-11-25 14:53:12 725

转载 Kubernetes 源码分析 -- API Server之Etcd存储

StorageEncodingOverridesKubernetes资源数据存储在ETCD中,存储的数据格式缺省为:application/json,版本使用__internal版本。具体见:MergeGroupEncodingConfig函数,所以从获取资源的时候,我们是不需要指定版本的。一般基于:schema.GroupResource类型去获取资源,如果要获取所有的资源,资源可以指定为“...

2019-11-25 14:27:58 1172 1

转载 kubelet 源码分析:Garbage Collect

kubernetes GC 简介作为 kubernetes 中重要的组件,kubelet 接管了节点上容器相关的所有工作。除了最核心的任务:根据 apiserver 分配的 pod 创建容器之外,它还有其他很多事情要做,其中之一就是 GC(Garbage Collect)。在运行一段时候之后,节点上会下载很多镜像,也会有很多因为各种原因退出的容器。为了保证节点能够正常运行,kubelet ...

2019-11-22 14:24:07 413

转载 k8s免fq下载镜像

转自:https://juejin.im/post/5d5a0c40e51d4561b072dcfek8s免fq下载镜像简介新手使用kubeadm搭建k8s最困难的一件事情就是下载k8s的docker镜像,那么有没有好的方法呢,之前最常用的就是使用Dockerfile在上面加上FROM+你要下载的镜像字段,然后使用dockerhub把这个镜像编译起来,之后我们本地...

2019-11-21 15:49:24 428

原创 k8s学习笔记--Ingress原理与部署

Ingress 介绍Kubernetes 暴露服务的有三种方式,分别为 LoadBlancer Service、NodePort Service、Ingress。官网对 Ingress 的定义为管理对外服务到集群内服务之间规则的集合,通俗点讲就是它定义规则来允许进入集群的请求被转发到集群中对应服务上,从来实现服务暴漏。 Ingress 能把集群内 Service 配置成外网能够访问的 URL,...

2019-11-21 15:47:41 6962 4

原创 informer和sharedInformer的处理流程比较

我们已经介绍过informer和SharedInformer。那么他们相关的处理流程上有什么不同,下面我们通过流程图来介绍:informer的处理流程informer的处理流程,我们以client-go的example/workqueue/main.go的代码为例:SharedInformer的处理流程SharedInformer的处理流程,这里自己写了一份代码:packag...

2019-11-19 18:35:47 1357 1

原创 client-go源码分析--DeltaFIFO

前言DeltaFIFO是client-go controller framework的重要环节,它的作用是保证Reflector和Indexer之间对象同步。可以说,DeltaFIFO是连接生产者(Reflector)和消费者(Indexer)的通道。阅读本文前希望读者已阅读《client-go源码分析》前面的系列文章,要求已了解Informer和Reflector。1 DeltaFIFO...

2019-11-15 23:42:45 444

原创 client-go源码分析--Reflector

前言在informer机制流程分析中,简单介绍并梳理了Reflector函数执行流程。整个controller framework中,Reflector的角色是生产者,从k8s api-server中获取runtime.Object,并添加到DeltaFIFO中;indexer是消费者,从DeltaFIFO中获取并处理runtime.Object。1 Reflector创建和运行在c...

2019-11-15 17:49:55 786

原创 client-go源码分析--informer机制流程分析

版本version: v12.0.01 informer对象关系informer对象即controller struct(下文的controller即informer,注意这里的controller和k8s中的controller概念是不一样的)。controller对象关联关系比较复杂,上面的组件关系主要抓住几个关键对象:controller,Reflector,cache...

2019-11-15 16:55:44 1529

原创 client-go/example/workqueue源码解读--思维导图

2019-11-15 15:12:32 227

原创 查看k8s的etcd pod中的数据

查看k8s的etcd数据kubernetes的API对象的数据都保存在etcd中,本文实战如何查看这些数据。环境信息实战环境的版本信息如下,请确保以下软件都已运行正常:操作系统 :Ubuntu 16.04.6 LTSKubernetes:1.15查看etcd版本号:root@k8s-master:~# cat /etc/kubernetes/manifests/et...

2019-11-07 16:12:40 4580 1

git权威指南第二版

GIT权威指南第二版(高清版)带书签,彩色版,此书涉及到工具发展史讲解,不同平台安装方式,实战使用场景。

2019-02-22

Go并发编程实战 第2版 .pdf

本书全面介绍了Go语言的特点、安装部署环境、工程规范、工具链、语言语法、并发编程模型以及在多个编程实战中的应用,重点阐述了Go语言并发编程模型和机制。本书共分为四个部分,介绍了Go语言编程环境搭建、Go语言基础编程、Go语言并发编程方法及其原理,以及使用Go语言开发的应用系统的案例讲解。 本书适用于有一定计算机编程基础的从业者以及对Go语言编程感兴趣的爱好者,非常适合作为Go语言编程进阶教程。

2018-10-25

《http权威指南》高清完整中文带标签

HTTP 权威指南,真正的高清完整pdf ,可以搜索,可以复制,无限放大,非扫描版本,入门学习 HTTP Web 开发必读

2018-09-30

《http权威指南》高清中文

4分 HTTP权威指南 高清完整版PDF 带书签 《HTTP权威指南》由古尔利所著,《HTTP权威指南》详细解释了如何用HTTP来开发基于Web的应用程序,核心的因特网协议如何与架构构建块交互,如何正确实现因特网客户和服务器等。《HTTP权威指南》的中心内容是HTTP,本质是理解Web的工作原理,以及如何将这些知识应用到Web编程和管理之中,主要涵盖HTTP的技术运作方式、产生动机、性能和目标以及一些相关技术问题。 《HTTP权威指南》适合所有想了解HTTP和Web底层结构的人阅读。

2018-09-27

visual studio code

Visual Studio Code是个牛逼的编辑器,启动非常快,完全可以用来代替其他文本文件编辑工具。又可以用来做开发,支持各种语言,相比其他IDE,轻量级完全可配置还集成Git感觉非常的适合前端开发,是微软亲生的想必TypeScript会支持的非常好。 所以我仔细研究了一下文档未来可能会作为主力工具使用。

2018-09-03

Go入门指南

《Go入门指南》全书中文版本,是一本学习GO语言不可多得的好书!

2018-09-03

TCP-IP详解

高清晰PDF完整目录书签。包括卷一卷二卷三完整三卷。 第一卷 《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也适用于研究网络的技术人员。 第二卷 本书完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15 000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点,如多播、长肥管道支持、窗口缩放、时间戳选项以及其他主题等等。读者阅读本书时,应当具备卷1中阐述的关于TCP/IP的基本知识。本书适用于希望理解TCP/TP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。 第三卷 第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面

2018-04-13

算法导论_中文版_第三版

《算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美。 《算法导论》由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作编著(其中Clifford Stein是第二版开始参与的合著者)。

2018-04-11

游戏核心算法编程内幕.pdf

游戏算法电子书 感觉不错 分享给大家 游戏核心算法编程内幕.pdf

2018-04-10

PyQt所有类总结

高清,总结了pqt的所有类,每个类带有超链接,可以访问到具体的类信息

2018-01-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除