自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)

原创 kube-apiserver源码分析

启动分析apiserver启动使用的是cobra的命令行方式 RunE: func(cmd *cobra.Command, args []string) error { verflag.PrintAndExitIfRequested() utilflag.PrintFlags(cmd.Flags()) // 完成参数的配置; completedOptions, er...

2019-10-10 11:16:59 132 2

原创 k8s怎么创建一个pod(源码分析)

整体结构​ kubelet 调用下层容器运行时的执行过程,并不会直接调用Docker 的 API,而是通过一组叫作 CRI(Container Runtime Interface,容器运行时接口)的 gRPC 接口来间接执行的。Kubernetes 项目之所以要在 kubelet 中引入这样一层单独的抽象,当然是为了对 Kubernetes 屏蔽下层容器运行时的差异。​ CRI工作流程:...

2019-10-10 11:15:42 638

原创 operator framework搭建operator开发环境

简介operator framework 是一个为云原生开发者提供开发operator的组件框架的开源项目,它目前包含三个组件:Operator SDK。集成controller-runtime,提供了:编写运维逻辑的高阶API,快速构建Operator项目及代码生成的脚手架工具,覆盖常见Operator用例的扩展。Operator SDK是Operator Framework中最核心的工程。...

2019-10-10 11:14:23 757 2

原创 [LeetCode-go]罗马数字转整数

[LeetCode-go]罗马数字转整数

2019-06-09 23:32:26 86

原创 [LeetCode-go]回文数

[LeetCode-go]回文数

2019-06-09 23:31:42 72

原创 [LeetCode-go]整数反转

[LeetCode-go]整数反转

2019-06-09 23:30:57 74

原创 [LeetCode-go]两数之和

[LeetCode-go]两数之和

2019-06-09 23:29:44 49

转载 Kubernetes Clientset

Kubernetes ClientsetKubernetes Clientset资源类型 Schemetypes.go 文件zz_generated.deepcopy.go 文件register.go 文件注册所有内置资源类型到 Scheme 对象创建和使用 Kubernetes Clientset创建支持所有资源类型的全局 Clientset各资源类型的 Clien...

2019-04-29 17:14:04 575

转载 自定义 Controller

自定义 Controller自定义 Controller使用 Informer 的自定义 Controller参考一般自定义 controller 的模式是:创建一个 SharedIndexInformer 和 workerqueue。在 SharedIndexInformer 中注册 OnAdd/OnUpdate/OnDelete 的处理函数是 enqueue,它向队...

2019-04-29 17:13:31 214

转载 workqueue

workqueueworkqueueInterface 接口实现 Interface 接口的 Type 类型Add() 方法Get() 方法Done() 方法向 workqueue 添加 item 的 4 种情况RateLimiter 接口实现 RateLimter 接口的 BucketRateLimiter 类型实现 RateLimter 接口的 Item...

2019-04-29 17:12:58 129

转载 SharedInformerFactory 接口

SharedInformerFactory 接口SharedInformerFactory 接口自定向下internalinterfaces.SharedInformerFactory 接口实现 SharedInformerFactory 接口的类型 sharedInformerFactoryInformerFor() 方法Start() 方法ForResource() 方法...

2019-04-29 17:12:27 654

转载 Lister 接口

Lister 接口Lister 接口GenericLister 和 GenericNamespaceLister 接口codegent 生成的特定资源类型的 Informer 和 ListerLister 是可以通过对象名称、命名空间、标签选择器等查询条件 Get 或 List 对象的接口,一般是基于 Indexer 实现。使用 codegen 工具可以为各资源类型生成类型...

2019-04-29 17:11:58 103

转载 Informer

InformerInformerprocessorListeneradd() 方法pop() 方法run() 方法sharedProcessoraddListener() 和 addListenerLocked() 方法distribute() 方法run() 方法shouldResync() 方法SharedInformer 和 SharedIndexIn...

2019-04-29 17:11:26 153

转载 kubernetes 事件反射器

kubernetes 事件反射器kubernetes 事件反射器ListWatcher 接口实现 ListWatcher 接口的 ListWatch使用 ListWatch 的 InformerReflectorReflector 类型定义创建 Reflector 对象的函数Run() 方法ListAndWatch() 方法使用 Reflector 的 con...

2019-04-29 17:10:46 327

转载 Kubernetes 事件队列

Kubernetes 事件队列Kubernetes 事件队列Queue 定义了队列接口FIFO 是先入先出的队列Add() 方法Update() 方法Delete() 方法Pop() 方法Replace() 方法HasSyncd() 方法Resync() 方法DeltaFIFO 是记录对象历史事件的队列DeltaFIFO 的生产者和消费者记录对象事件的 De...

2019-04-29 17:10:15 317

转载 Kubernetes 对象缓存和索引

Kubernetes 对象缓存和索引Kubernetes 对象缓存和索引对象缓存 Store对象索引 Indexer为对象生成索引值列表的 IndexFunc 和 IndexFunc 集合 Indexers索引缓存 Index 和 Indices为对象生成唯一标识 Key 的 KeyFunc可并发访问的索引缓存 ThreadSafeStoreAdd/Update() 方法...

2019-04-29 17:09:10 405

原创 kubernetes1.13.4部署traefik

基础环境拥有一个完美运行的kubernetes1.13.4集群并已经部署过dashboard,可参考我的部署文章创建自己的集群。部署步骤编写部署需要的yaml文件traefik-rbac.yaml---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: traefik...

2019-04-12 17:32:39 147

原创 kubernetes1.13.4部署nginx-ingress

基础环境拥有一个完美运行的kubernetes1.13.4集群并已经部署过dashboard,可参考我的部署文章创建自己的集群。部署步骤编写部署需要的yaml文件mandatory.yamlapiVersion: v1kind: Namespacemetadata: name: ingress-nginx labels: app.kubernetes.io/n...

2019-04-12 17:31:51 459

原创 kubernetes1.13.4部署EFK

基础环境拥有一个完美运行的kubernetes1.13.4集群,可参考我的部署文章创建自己的集群。部署步骤编写部署需要的yaml文件es-psp-binding.yamlapiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: gce:podsecuritypolicy:elastic...

2019-04-11 18:13:52 280

原创 kubernetes1.13.4集成安装heapster

基础环境拥有一个完美运行的kubernetes1.13.4集群并已经部署过dashboard,可参考我的部署文章创建自己的集群。NT:heapster在kubernetes1.8以后不被推荐了,转而推荐使用metrics-server部署步骤编写部署需要的yaml文件NT:下面的文件相较于官方文档有改动,解决了国内环境的镜像拉取问题,同时解决了几个小bug。大家可以对比参考。g...

2019-04-11 18:12:52 219

原创 kubernetes1.13.4安装dashboard1.10.1

基础环境拥有一个完美运行的kubernetes1.13.4集群,可参考我的部署文章创建自己的集群。部署步骤编写kubernetes-dashboard.yaml文件# ------------------- Dashboard Secret ------------------- #apiVersion: v1kind: Secretmetadata: labels: ...

2019-04-11 18:12:01 177

原创 k8s集群部署dashboard可能遇到的问题

​可能遇到的问题pod一直重启$ kubectl --namespace=kube-system logs kubernetes-dashboard-1680927228-pdv45Using HTTP port: 9090Error while initializing connection to Kubernetes apiserver. This most likely mea...

2019-04-09 17:18:09 2445

原创 使用etcd-operator在集群内部署etcd集群

什么是operator?​ 在 Operator 里,你提交的 API 对象不再是一个单体应用的描述,而是一个完整的分布式应用集群的描述。这里的区别在于,整个分布式应用集群的状态和定义,都成了Kubernetes 控制器需要保证的“终态”。比如,这个应用有几个实例,实例间的关系如何处理,实例需要把数据存储在哪里,如何对实例数据进行备份和恢复,都是这个控制器需要根据 API 对象的变化进行处理的逻...

2019-03-28 17:47:01 946

原创 怎么使用kubebuilder构建CRD及相关controller的项目基础

什么是KubebuilderKubebuilder是一个用于在Go中快速构建和发布Kubernetes API的SDK。它建立在用于构建核心Kubernetes API的规范技术之上,以提供简化的抽象来减少开发工作。与Web开发框架(如Ruby on Rails和SpringBoot)类似,Kubebuilder提高了速度并降低了开发人员管理的复杂性。包含在Kubebuilder中:使用...

2019-03-28 17:45:30 2472 2

原创 国内环境使用kubeadm安装部署kubernetes

安装前需要准备工作:1、虚拟机工具VMware、VirtualBox等2、系统镜像文件CentOS 73、安装好虚拟机2-3台本次教程使用的是2台虚拟机:1、10.67.34.130 k8s12、10.67.34.131 k8s2开始整个安装过程:一、2台虚拟机 全部需要进行的操作如下1、设置主机名 (主要是查看node信息 等 时显示的名称就是该名称)hostnamectl...

2019-03-26 20:17:19 938

翻译 go_viper解析

什么是Viper?Viper是Go应用程序的完整配置解决方案,包括12-Factor应用程序。它旨在在应用程序中工作,并可以处理所有类型的配置需求和格式。它支持:设置默认值从JSON,TOML,YAML,HCL和Java属性配置文件中读取实时观看和重新读取配置文件(可选)从环境变量中读取从远程配置系统(etcd或Consul)读取,并观察变化从命令行标志读取从缓冲区读取设置显式...

2019-03-19 19:38:14 1375 3

原创 go_flag

import "flag"flag包实现了命令行参数的解析。要求:使用flag.String(), Bool(), Int()等函数注册flag.常用的flag注册方式1、下例声明了一个整数flag,解析结果保存在*int指针ip里:import "flag"var ip = flag.Int("flagname", 1234, "help message for flagname...

2019-03-19 19:37:31 133

原创 云平台的层次架构

云计算平台​ 云计算是一种资源的服务模式,该模式可以实现随时随地、便捷按需地从可配置计算资源共享池中获取所需的资源(如网络、服务器、存储、应用及服务),资源能够快速供应并释放,大大减少了资源管理工作开销。​ 经典云计算架构包括IaaS ( Infrastructure as a Service,基础设施即服务)、PaaS ( Platform as aService,平台即服务)、S...

2019-03-19 15:03:04 9440

原创 容器监控工具cAdvisor

概述​ cAdvisor ( Container Advisor)是Google开发的用于分析运行中容器的资源占用和性能指标的开源工具。cAdvisor是一个运行时的守护进程,负责收集、聚合、处理和输出运行中容器的信息。需要特别说明的是,对于每个容器,cAdvisor都有资源隔离参数、资源使用历史情况以及完整的历史资源使用和网络统计信息的柱状图。cAdvisor中的数据可以以容器或主机级别进行输...

2019-03-19 15:01:56 125

原创 PaaS平台所使用的服务发现配置存储中心——etcd

概述​ etcd是什么?它是一个键值存储仓库,用于配置共享和服务发现(A highly-available key value store for shared configuration and service discovery)。​ etcd具有以下特点:简单:基于HTTP+JSON的API,用curl命令就可以轻松使用。安全:可选SSL客户认证机制。快速:每个实例每秒支持一千次...

2019-03-19 15:01:13 475

原创 OVS隧道模式

overlay技术模型​ Overlay网络其实就是隧道技术,即将一种网络协议包装在另一种协议中传输的技术。如果有两个使用IPv6的站点之间需要通信,而它们之间的网络使用IPv4协议,这时就需要将IPv6的数据包装在IPv4数据包中进行传输。隧道被广泛用于连接因使用不同网络而被隔离的主机和网络,使用隧道技术搭建的网络就是所谓的Overlay网络。它能有效地覆盖在基础网络之上,该模型可以很好地解决...

2019-03-19 14:58:56 389

原创 docker_Dockerfile

Dockerfile的使用​ Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式。可以通过docker build命令从Dockerfile中构建镜像。这个过程与传统分布式集群的编排配置过程相似,且提供了一系列统一的资源配置语法。用户可以用这些统一的语法命令来根据需求进行配置,通过这份统一的配置文件,在不同的平台上进行分发,需要使用时就可以根据配置文件自动化构建,这...

2019-03-19 14:56:37 52

原创 kubernetes多租户管理与资源控制

namespace设计解读​ namespace是Kubernetes进行多租户资源隔离的主要手段,那么它在系统中的表现形式是什么样的?实现原理和使用方法又是怎样的呢?什么是namespace​ namespace是一个将Kubernetes的资源对象进行细分的类似于DNS子域名的概念。namespace能够帮助不同的租户共享一个Kubernetes集群。Kubernetes引人namesp...

2019-03-15 11:36:21 4381

原创 kubernetes网络核心原理

单pod单IP模型​ 该网络模型的目标是为每个pod分配一个Kubernetes集群私有网络地址段(譬如10.x.x.x)的IP地址,通过该IP地址,pod能够跨网络与其他物理机、虚拟机或容器进行通信,pod内的容器全部共享这pod的网络配置,彼此之间使用localhost通信,就仿佛它们运行在一个机器上一样。​ 为每个pod分配一个IP地址的另一个好处是用户不再需要显式为相互通信的p...

2019-03-15 11:32:37 220

原创 kubernetes存储核心原理

volume设计解读​ 在Kubernetes中,volume的使用方式类似于虚拟机的磁盘,需要给pod(即一个逻辑上的虚拟机)挂一个磁盘,然后该pod里的进程(容器)才能通过volumeMounts的方式使用挂载磁盘。pod容器内的进程能够看到的文件系统由两部分组成:一部分是Docker像文件系统,另一部分是零或多个volume。每个容器都会单独指定每个volume在其内部的挂载点,即pod资...

2019-03-15 11:30:45 397

原创 kubernetes核心组件解读

kubenetes的整体架构​ Kubernetes由两种节点组成:master节点和工作节点,前者是管理节点,后者是容器运行的节点。其中master节点中主要有3个重要的组件,分别是APIServer,scheduler和controller manager。APIServer组件负责响应用户的管理请求、进行指挥协调等工作;scheduler的作用是将待调度的pod绑定到合适的工作节点上;co...

2019-03-15 11:28:34 1449

原创 kubernetes设计解读

pod设计解读在Kubernetes中,能够被创建、调度和管理的最小单元是pod,而非单个容器。前面已经说过,一个pod是由若干个Docker容器构成的容器组(pod意为豆荚,里面容纳了多个豆子,很形象)。这里需要强调的是,pod里的容器共享network namespace,并通过volume机制共享一部分存储。pod是IP等网络资源的分配的基本单位,这个IP及其对应的network na...

2019-03-15 11:14:43 196

原创 docker与容器安全

Docker的安全机制​ Docker目前已经在安全方面做了一定的工作,包括Docker daemon在以TCP形式提供服务的同时使用传输层安全协议;在构建和使用镜像时会验证镜像的签名证书;通过cgroups及namespaces来对容器进行资源限制和隔离;提供自定义容器能力(capability)的接口;通过定义seccomp profile限制容器内进程系统调用的范围等。如果合理地实...

2019-03-12 18:12:02 3341

原创 docker网络管理

Docker网络基础Docker网络架构​ 如图3-16所示,Docker daemon通过调用libnetwork对外提供的API完成网络的创建和管理等功能。libnetwork中则使用了CNM来完成网络功能的提供。而CNM中主要有沙盒(sandbox ),端点(endpoint)和网络(network)这3种组件。libnetwork中内置的5种驱动则为libnetwork提供了不同类...

2019-03-12 18:11:07 289

原创 docker数据卷

​ Docker的镜像是由一系列的只读层组合而来的,当启动一个容器时,Docker加载镜像的所有只读层,并在最上层加人一个读写层。这个设计使得Docker可以提高镜像构建、存储和分发的效率,节省了时间和存储空间,然而也存在如下问题:​容器中的文件在宿主机上存在形式复杂,不能在宿主机上很方便地对容器中的文件进行访问。多个容器之间的数据无法共享。当删除容器时,容器产生的数据将丢失。为了解决...

2019-03-12 18:09:13 803

空空如也

空空如也

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