
k8s
KingDragon_Baron
认真生活.
展开
-
centos7编译安装mesos(实践)
基础环境centos7 + mesos-1.1.0 + zookeeper-3.4.6操作步骤1.1 操作系统:centos7+虚拟机ip主机名10.67.34.144bcs1.2 配置虚拟机的hostsvim /etc/hosts#添加以下配置10.67.34.144 bcs1.3 安装zookeepercentos7安装zookeepe...原创 2019-01-17 10:16:42 · 566 阅读 · 0 评论 -
kubernetes1.13.4集成安装heapster
基础环境拥有一个完美运行的kubernetes1.13.4集群并已经部署过dashboard,可参考我的部署文章创建自己的集群。NT:heapster在kubernetes1.8以后不被推荐了,转而推荐使用metrics-server部署步骤编写部署需要的yaml文件NT:下面的文件相较于官方文档有改动,解决了国内环境的镜像拉取问题,同时解决了几个小bug。大家可以对比参考。g...原创 2019-04-11 18:12:52 · 393 阅读 · 0 评论 -
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 · 635 阅读 · 1 评论 -
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 · 734 阅读 · 0 评论 -
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 · 307 阅读 · 0 评论 -
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 · 5116 阅读 · 0 评论 -
Kubernetes 对象缓存和索引
Kubernetes 对象缓存和索引Kubernetes 对象缓存和索引对象缓存 Store对象索引 Indexer为对象生成索引值列表的 IndexFunc 和 IndexFunc 集合 Indexers索引缓存 Index 和 Indices为对象生成唯一标识 Key 的 KeyFunc可并发访问的索引缓存 ThreadSafeStoreAdd/Update() 方法...转载 2019-04-29 17:09:10 · 1574 阅读 · 0 评论 -
Kubernetes 事件队列
Kubernetes 事件队列Kubernetes 事件队列Queue 定义了队列接口FIFO 是先入先出的队列Add() 方法Update() 方法Delete() 方法Pop() 方法Replace() 方法HasSyncd() 方法Resync() 方法DeltaFIFO 是记录对象历史事件的队列DeltaFIFO 的生产者和消费者记录对象事件的 De...转载 2019-04-29 17:10:15 · 1470 阅读 · 0 评论 -
kubernetes 事件反射器
kubernetes 事件反射器kubernetes 事件反射器ListWatcher 接口实现 ListWatcher 接口的 ListWatch使用 ListWatch 的 InformerReflectorReflector 类型定义创建 Reflector 对象的函数Run() 方法ListAndWatch() 方法使用 Reflector 的 con...转载 2019-04-29 17:10:46 · 1202 阅读 · 0 评论 -
Informer
InformerInformerprocessorListeneradd() 方法pop() 方法run() 方法sharedProcessoraddListener() 和 addListenerLocked() 方法distribute() 方法run() 方法shouldResync() 方法SharedInformer 和 SharedIndexIn...转载 2019-04-29 17:11:26 · 1050 阅读 · 0 评论 -
Lister 接口
Lister 接口Lister 接口GenericLister 和 GenericNamespaceLister 接口codegent 生成的特定资源类型的 Informer 和 ListerLister 是可以通过对象名称、命名空间、标签选择器等查询条件 Get 或 List 对象的接口,一般是基于 Indexer 实现。使用 codegen 工具可以为各资源类型生成类型...转载 2019-04-29 17:11:58 · 410 阅读 · 0 评论 -
SharedInformerFactory 接口
SharedInformerFactory 接口SharedInformerFactory 接口自定向下internalinterfaces.SharedInformerFactory 接口实现 SharedInformerFactory 接口的类型 sharedInformerFactoryInformerFor() 方法Start() 方法ForResource() 方法...转载 2019-04-29 17:12:27 · 2444 阅读 · 0 评论 -
workqueue
workqueueworkqueueInterface 接口实现 Interface 接口的 Type 类型Add() 方法Get() 方法Done() 方法向 workqueue 添加 item 的 4 种情况RateLimiter 接口实现 RateLimter 接口的 BucketRateLimiter 类型实现 RateLimter 接口的 Item...转载 2019-04-29 17:12:58 · 888 阅读 · 0 评论 -
自定义 Controller
自定义 Controller自定义 Controller使用 Informer 的自定义 Controller参考一般自定义 controller 的模式是:创建一个 SharedIndexInformer 和 workerqueue。在 SharedIndexInformer 中注册 OnAdd/OnUpdate/OnDelete 的处理函数是 enqueue,它向队...转载 2019-04-29 17:13:31 · 800 阅读 · 0 评论 -
Kubernetes Clientset
Kubernetes ClientsetKubernetes Clientset资源类型 Schemetypes.go 文件zz_generated.deepcopy.go 文件register.go 文件注册所有内置资源类型到 Scheme 对象创建和使用 Kubernetes Clientset创建支持所有资源类型的全局 Clientset各资源类型的 Clien...转载 2019-04-29 17:14:04 · 1756 阅读 · 0 评论 -
operator framework搭建operator开发环境
简介operator framework 是一个为云原生开发者提供开发operator的组件框架的开源项目,它目前包含三个组件:Operator SDK。集成controller-runtime,提供了:编写运维逻辑的高阶API,快速构建Operator项目及代码生成的脚手架工具,覆盖常见Operator用例的扩展。Operator SDK是Operator Framework中最核心的工程。...原创 2019-10-10 11:14:23 · 1673 阅读 · 2 评论 -
k8s怎么创建一个pod(源码分析)
整体结构 kubelet 调用下层容器运行时的执行过程,并不会直接调用Docker 的 API,而是通过一组叫作 CRI(Container Runtime Interface,容器运行时接口)的 gRPC 接口来间接执行的。Kubernetes 项目之所以要在 kubelet 中引入这样一层单独的抽象,当然是为了对 Kubernetes 屏蔽下层容器运行时的差异。 CRI工作流程:...原创 2019-10-10 11:15:42 · 1821 阅读 · 0 评论 -
kubernetes1.13.4安装dashboard1.10.1
基础环境拥有一个完美运行的kubernetes1.13.4集群,可参考我的部署文章创建自己的集群。部署步骤编写kubernetes-dashboard.yaml文件# ------------------- Dashboard Secret ------------------- #apiVersion: v1kind: Secretmetadata: labels: ...原创 2019-04-11 18:12:01 · 456 阅读 · 0 评论 -
使用etcd-operator在集群内部署etcd集群
什么是operator? 在 Operator 里,你提交的 API 对象不再是一个单体应用的描述,而是一个完整的分布式应用集群的描述。这里的区别在于,整个分布式应用集群的状态和定义,都成了Kubernetes 控制器需要保证的“终态”。比如,这个应用有几个实例,实例间的关系如何处理,实例需要把数据存储在哪里,如何对实例数据进行备份和恢复,都是这个控制器需要根据 API 对象的变化进行处理的逻...原创 2019-03-28 17:47:01 · 1743 阅读 · 0 评论 -
怎么使用kubebuilder构建CRD及相关controller的项目基础
什么是KubebuilderKubebuilder是一个用于在Go中快速构建和发布Kubernetes API的SDK。它建立在用于构建核心Kubernetes API的规范技术之上,以提供简化的抽象来减少开发工作。与Web开发框架(如Ruby on Rails和SpringBoot)类似,Kubebuilder提高了速度并降低了开发人员管理的复杂性。包含在Kubebuilder中:使用...原创 2019-03-28 17:45:30 · 3554 阅读 · 2 评论 -
CentOS7 使用二进制部署 Kubernetes 1.13集群
一、安装环境准备:k8s安装包下载链接:https://pan.baidu.com/s/1wO6T7byhaJYBuu2JlhZvkQ提取码:pm9u二、Kubernetes 安装及配置1、初始化环境1.1、设置关闭防火墙及SELINUXsystemctl stop firewalld && systemctl disable firewalldsetenfor...原创 2019-01-18 16:49:55 · 1965 阅读 · 2 评论 -
Kubernetes架构
本文章属于归纳汇总,适合有一定k8s基础的人查阅参考。Kubernetes简介Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的w...原创 2019-01-14 11:43:11 · 222 阅读 · 0 评论 -
Kubernetes存储系统介绍及机制实现
一、Kubernetes中存储的应用场景在Kubernetes中部署和运行的服务大致分为:无状态服务Kubernetes使用ReplicaSet来保证一个服务的实例数量,如果说某个Pod实例由于某种原因挂掉或崩溃,ReplicaSet会立刻用这个Pod的模版新启一个Pod来替代它。由于是无状态的服务,新Pod与旧Pod一模一样。此外Kubernetes通过Service(一个Servic...转载 2019-01-15 12:12:59 · 951 阅读 · 0 评论 -
Kubernetes-基于StorageClass的动态存储供应
1、存储类介绍Kubernetes集群管理员通过提供不同的存储类,可以满足用户不同的服务质量级别、备份策略和任意策略要求的存储需求。动态存储卷供应使用StorageClass进行实现,其允许存储卷按需被创建。如果没有动态存储供应,Kubernetes集群的管理员将不得不通过手工的方式类创建新的存储卷。通过动态存储卷,Kubernetes将能够按照用户的需要,自动创建其需要的存储。基于Stora...转载 2019-01-15 16:03:19 · 711 阅读 · 1 评论 -
K8S网络详解
K8S网络详解按照我自己的理解,k8s网络分三个层面(由里到外):容器网络(不同容器之间怎么相互访问)集群内网络(不同节点之间怎么相互访问)集群外网络(集群外怎么访问到集群内的服务)容器网络熟悉docker的同学会知道,docker创建的容器之间会通过一张docker0的网卡相互通信。而k8s社区为了方便用户适应各自的网络情况,暴露出一套api接口------cni,用户只要实现...原创 2019-01-15 20:51:33 · 19751 阅读 · 0 评论 -
K8S部署kubedns步骤
基础环境基本的k8s集群,安装部署可参考我的文章。部署kubedns步骤准备镜像# kingdragon 是我的docker hub仓库,你可以换成自己的仓库,并准备相应的镜像kingdragon/k8s-dns-dnsmasq-nanny-amd64:1.14.5kingdragon/k8s-dns-kube-dns-amd64:1.14.5kingdragon/k8s-d...原创 2019-01-28 14:29:46 · 1742 阅读 · 0 评论 -
k8s集群部署dashboard
基础环境基本的K8S集群,可参考我的文章部署步骤dashboard-controller.yamlapiVersion: extensions/v1beta1kind: Deploymentmetadata: name: kubernetes-dashboard namespace: kube-system labels: k8s-app: kubernetes...原创 2019-01-28 16:25:26 · 545 阅读 · 0 评论 -
国内使用 kubeadm 在 Centos 7 搭建 Kubernetes 集群
1、kubeadm 介绍Kubernetes 是 Google 开源的基于 Docker 的容器集群管理系统,通过 yaml 语言写的配置文件,简单快速的就能自动部署好应用环境,支持应用横向扩展,并且可以组织、编排、管理和迁移这些容器化的应用。Kubeadm 是一个可以快速帮助我们创建稳定集群服务的工具,通过它,我们可以在虚拟机、实体机或者云端快速部署一个高可用的集群服务。2、环境、软件准备...原创 2019-02-25 16:23:03 · 557 阅读 · 0 评论 -
Kubernetes CRD (CustomResourceDefinition) 自定义资源类型及源码分析
1、CRD (CustomResourceDefinition) 介绍我们知道,Kubernetes 中一切都可视为资源,它提供了很多默认资源类型,如 Pod、Deployment、Service、Volume等一系列资源,能够满足大多数日常系统部署和管理的需求。但是,在一些特殊的需求场景下,这些现有资源类型就满足不了,那么这些就可以抽象为 Kubernetes 的自定义资源,在 Kuberne...转载 2019-02-26 10:42:00 · 1263 阅读 · 0 评论 -
使用client-go实现对K8S集群资源得CRUD操作及源码分析
1、client-go 介绍client-go 是一种能够与 Kubernetes 集群通信的客户端,通过它可以对 Kubernetes 集群中各资源类型进行 CRUD 操作,它有三大 client 类,分别为:Clientset、DynamicClient、RESTClient。通过它,我们可以很方便的对 Kubernetes 集群 API 进行自定义开发,来满足个性化需求。2、client...转载 2019-02-26 19:23:25 · 6063 阅读 · 2 评论 -
kubernetes设计解读
pod设计解读在Kubernetes中,能够被创建、调度和管理的最小单元是pod,而非单个容器。前面已经说过,一个pod是由若干个Docker容器构成的容器组(pod意为豆荚,里面容纳了多个豆子,很形象)。这里需要强调的是,pod里的容器共享network namespace,并通过volume机制共享一部分存储。pod是IP等网络资源的分配的基本单位,这个IP及其对应的network na...原创 2019-03-15 11:14:43 · 941 阅读 · 0 评论 -
kubernetes核心组件解读
kubenetes的整体架构 Kubernetes由两种节点组成:master节点和工作节点,前者是管理节点,后者是容器运行的节点。其中master节点中主要有3个重要的组件,分别是APIServer,scheduler和controller manager。APIServer组件负责响应用户的管理请求、进行指挥协调等工作;scheduler的作用是将待调度的pod绑定到合适的工作节点上;co...原创 2019-03-15 11:28:34 · 3109 阅读 · 0 评论 -
kubernetes存储核心原理
volume设计解读 在Kubernetes中,volume的使用方式类似于虚拟机的磁盘,需要给pod(即一个逻辑上的虚拟机)挂一个磁盘,然后该pod里的进程(容器)才能通过volumeMounts的方式使用挂载磁盘。pod容器内的进程能够看到的文件系统由两部分组成:一部分是Docker像文件系统,另一部分是零或多个volume。每个容器都会单独指定每个volume在其内部的挂载点,即pod资...原创 2019-03-15 11:30:45 · 651 阅读 · 0 评论 -
kubernetes网络核心原理
单pod单IP模型 该网络模型的目标是为每个pod分配一个Kubernetes集群私有网络地址段(譬如10.x.x.x)的IP地址,通过该IP地址,pod能够跨网络与其他物理机、虚拟机或容器进行通信,pod内的容器全部共享这pod的网络配置,彼此之间使用localhost通信,就仿佛它们运行在一个机器上一样。 为每个pod分配一个IP地址的另一个好处是用户不再需要显式为相互通信的p...原创 2019-03-15 11:32:37 · 825 阅读 · 0 评论 -
kubernetes多租户管理与资源控制
namespace设计解读 namespace是Kubernetes进行多租户资源隔离的主要手段,那么它在系统中的表现形式是什么样的?实现原理和使用方法又是怎样的呢?什么是namespace namespace是一个将Kubernetes的资源对象进行细分的类似于DNS子域名的概念。namespace能够帮助不同的租户共享一个Kubernetes集群。Kubernetes引人namesp...原创 2019-03-15 11:36:21 · 6340 阅读 · 0 评论 -
国内环境使用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 · 1842 阅读 · 1 评论 -
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 · 784 阅读 · 2 评论