
kubernetes
文章平均质量分 93
k8s
数据库练兵场
博主简介,本科毕业于北京交通大学,研究生毕业于中国人民大学。现就职于蚂蚁集团Oceanbase团队,花名-靖顺,专注于OceanBase数据库故障根因分析,性能调优。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【k8s】——k8s scheduler调度器原理及代码分析
一、前言 我们都知道,k8s其实说的直白点是一个容器的管家,它管容器的创建、运行和销毁。在k8s中,万物都可以叫做资源,其实k8s的设计理念很像编程语言的面向对象,把一切资源化之后,每一种资源就是一种对象。在针对各种资源设计controller(控制器)和scheduler(调度器),有了这两个之后还需要通信机制,这个时候apiserver就来了,然后还需要数据存储(etcd)。你看这样一算下来,k8s的这点结构其实就说清楚了。 我今天重点聊一下k8s 的调度器。kube-sch...原创 2021-05-23 18:32:19 · 3580 阅读 · 3 评论 -
【k8s】——kubectl 插件管理(krew)以及使用
一、前言 玩过k8s的基本没有不熟悉kubectl 的,这玩意是k8s的命令行工具。我们今天重点讲的是kubectl 的插件管理工具krew。它的功能就是提供简单的方法下载、检索、管理其他插件,类似操作系统的apt、yum、brew等工具,其命名也似乎模仿的brew工具。kubectl插件机制在Kubernetes 1.14宣布稳定,进入GA状态。kubectl的插件机制就是希望允许开发者以独立的二进制形式发布自定义的kubectl子命令。kubectl插件可以使用任意语言开发,如可以是一个...原创 2021-05-21 00:28:44 · 4205 阅读 · 1 评论 -
【k8s】——Rancher(k8s图形化管理工具)
一、前言 Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,方便开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),以便于满足 IT 需求规范,赋能 DevOps 团队。当然 Rancher 2.x 已经完全转向了 Kubernetes。Rancher 2.x 可以部署和管理在任何地方运行的 Kubernetes 集群。Rancher 可以创建来自 Kubernetes 托管服务提供商的集群...原创 2021-05-06 23:54:42 · 3608 阅读 · 1 评论 -
【k8s】——自定义的k8s controller
一、前言在 K8s 中当我们需要监控某个资源的变化并作一系列操作时,使用 K8s 提供的 controller 机制来实现,同时 K8s 官方提供了一个通用库client-go,通过它可以很容易实现自定义controller.Custom Resource是扩展Kubernetes的一种方式(另外一种就是通过聚合层APIapiserver-aggregation),而controller对指定的resource进行监听和执行对应的动作(watch,diff,action)。这里引申一点,我们一般来说..原创 2021-04-04 15:13:31 · 2769 阅读 · 1 评论 -
【k8s】——peer-finder(一个用于给statefulset管辖的pod找“伙伴“的小工具)
一、前言 今天介绍一个小众工具,peer-finder, 这是一个简单的守护进程,golang写的,总代码量不到150行,但对StatefulSet非常有用。github 地址:https://github.com/kmodules/peer-finder/tree/master。介绍这个之前,先给大家补充一下知识点: 在Kubernetes中,大多数的Pod管理都是基于无状态、一次性的理念。例如Replication Controller,它只是简单的保证可提供服务的Pod数...原创 2021-01-23 20:43:47 · 3521 阅读 · 0 评论 -
【Redis】——引入redis-cluster-proxy使得Redis Cluster对Kubernetes外部可提供服务
一、前言 这几年云计算发展迅猛,服务容器化在docker和k8s的发展下变成了潮流。无状态服务容器化相对来说较为简单,难得是有状态服务(诸如各数据库)容器化。本文讲讲redis集群容器化后,部署到k8s中怎么暴露服务使得k8s集群外部的服务能够连接redis.本文先说怎么用,再介绍redis-cluster-proxy。二、Redis Cluster容器化需要解决的问题1. Redis Cluster数据持久化 -> 可以通过StatefulSet + PVC来...原创 2020-12-19 18:27:46 · 6272 阅读 · 5 评论 -
【k8s】——leaderelection选举策略实现组件高可用
一、前言 分布式服务绕不开一个词:选主。今天主要来聊一下k8s中是如何通过leaderelection来实现组件的高可用的。在k8s本身的组件中,kube-scheduler和kube-manager-controller两个组件是有leader选举的,这个选举机制是k8s对于这两个组件的高可用保障。即正常情况下kube-scheduler或kube-manager-controller组件的多个副本只有一个是处于业务逻辑运行状态,其它副本则不断的尝试去获取锁,去竞争leader,直到自己成为le..原创 2020-12-06 00:56:39 · 6458 阅读 · 1 评论 -
【k8s】——k8s的GC机制
一、前言 一说到GC,很多人(包括我在内)第一反应是内存的垃圾回收,尤其是javaer们,面试最爱考的八股文就是java的垃圾回收。不过今天要说的这个k8s的GC和java的不是一回事。你可以理解为广义的垃圾回收,因为在k8s的世界里,万物皆是资源。而GC就是回收资源。Kubelet的GC功能将清理未使用的image和container。Kubelet每分钟对container执行一次GC,每5分钟对image执行一次GC。二、k8s GC机制 K8s 实现了一种「Casca...原创 2020-11-23 00:40:58 · 2174 阅读 · 0 评论 -
【云计算】——SaaS/PaaS/IaaS
一、前言云服务只是一个统称,可以分成三大类。IaaS:基础设施服务,Infrastructure-as-a-service PaaS:平台服务,Platform-as-a-service SaaS:软件服务,Software-as-a-service原创 2020-11-21 23:55:52 · 423 阅读 · 0 评论 -
【k8s错误处理】——unable to retrieve the complete list of server APIs
一、前言 打算开一个专栏,写一些k8s中遇到的问题,不定时更新。报错信息:Error: could not get apiVersions from Kubernetes: unable to retrieve the complete list of server APIs: custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request二、排查问题$ kubect...原创 2020-09-01 18:51:51 · 12148 阅读 · 3 评论 -
【Kubernetes】——pod资源深度解析
一、前言 接触k8s也有小一年了。跟着需求走很容易囫囵吞枣式的学习k8s, 知其然而不知其所以然。周末正好有时间,再回过头来看看k8s的实现方式。刚看了前几张官方文档,就产生了一个疑问:k8s为何要引入pod作为其控制的最小单元,直接用容器不好吗?带着这个疑问,好好翻阅了一下资料,特此记录一下。二、pod是什么? Pod是 Kubernetes 项目中最小的 API 对象,而Pod也是由容器组组成的。Pod 里的所有容器,共享的是同一个 Network Namespace,并...原创 2020-07-12 18:12:35 · 1864 阅读 · 0 评论 -
【OSS】——阿里云OSS作为k8s存储(pv/pvc)实践
一、前言 关于k8s的存储知识,大家可以参考博文应用存储和持久化数据卷:核心知识和Kubernetes 存储架构及插件使用,我这就不科普了。阿里云官网上的文档都是基于阿里云自己的k8s的,找了半天资料也没有文章好好介绍一下自己通过kubeadm搭建的k8s集群该怎么用阿里云的oss作为pv/pvc使用,今天这篇文章就是我踩坑之后写下来作为记录的。说明:OSS 数据卷是使用 OSSFS 文件进行挂载的 FUSE 文件系统,适合于读文件场景。例如:读配置文件、视频、图片文件等场景。 OSSF..原创 2020-06-24 11:10:16 · 7883 阅读 · 2 评论 -
【kubernets】——client-go库使用(k8s四种客户端介绍)
一、前言 client-go是一个调用kubernetes集群资源对象API的客户端,即通过client-go实现对kubernetes集群中资源对象(包括deployment、service、ingress、replicaSet、pod、namespace、node等)的增删改查等操作。大部分对kubernetes进行前置API封装的二次开发都通过client-go这个第三方包来实现。Kubernetes官方从2016年8月份开始,将Kubernetes资源操作相关的核心源码抽取出来,独立出...原创 2020-05-24 21:07:46 · 7699 阅读 · 0 评论 -
【k8s】——资源限制
一、前言 kubernetes最大的优势之一:它能够有效地利用计算资源。对于资源的使用,k8s本身支持资源的配置。在K8s中定义Pod中运行容器有两个维度的限制: 1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。 如: Pod运行至少需要2G内存,1核CPU 2. 资源限额:即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,...原创 2020-05-06 00:11:44 · 2179 阅读 · 0 评论 -
【k8s】——ingress原理和应用
一、前言 我们说k8s 的服务(service)时说暴露了service的三种方式ClusterIP、NodePort与LoadBalance,这几种方式都是在service的维度提供的,service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制,对集群外部,他类似负载均衡器,可以在集群内外...原创 2020-05-03 23:12:37 · 2406 阅读 · 0 评论 -
【k8s】——NodeSelector/Taints/Affinity 使用说明
一、前言 NodeSelector:如果需要限制Pod到指定的Node上运行,则可以给Node打标签并给Pod配置NodeSelector。 NodeAffinity节点亲和性,是Pod上定义的一种属性,使Pod能够按我们的要求调度到某个Node上,而Taints则恰恰相反,它可以让Node拒绝运行Pod,甚至驱逐Pod。Taints(污点)是Node的一个属性,设置了...原创 2020-04-10 22:48:21 · 4004 阅读 · 0 评论 -
【Kubernetes】——开启Aggregator Apiserver
一、前言 今天搭建了三节点k8s集群做测试用,具体流程可以参见我的博客:搭建k8s多节点集群。因为用到了扩展api,所以需要开启AA模式(API Aggregation)。API Aggregation 允许在不修改 Kubernetes 核心代码的同时扩展 Kubernetes API,即将第三方服务注册到 Kubernetes API 中,这样就可以通过 Kubernetes A...原创 2020-03-11 17:20:16 · 3804 阅读 · 1 评论 -
【Kubernets】——搭建k8s多节点集群
一、集群环境主机名 IP 角色 OS 组件 配置 node1 10.53.5.94 master Ubuntu 16.04.1 kube-apiserver kube-controller-manager kube-scheduler kube-proxy etcd coredns calico ...原创 2020-03-10 18:26:01 · 2450 阅读 · 3 评论 -
【k8s】——Kubernetes知识盘点
1.前言2.架构图5.Service介绍5.1.1.1.什么是Service service是k8s中的一个重要概念,主要是提供负载均衡和服务自动发现。 Service 是由 kube-proxy 组件,加上 iptables 来共同实现的。5.1.1.2.Service的创建 创建Service的方法有两种: 1.通过...原创 2020-02-15 15:57:45 · 1739 阅读 · 0 评论 -
【k8s】——yaml文件写法汇总
一、前言 k8s可以说是面向yaml文件编程,官方文档有很详细的说明各类yaml文件的写法。二、yaml文件语法 参考博客:https://www.cnblogs.com/wn1m/p/11286109.html。在Kubernetes中,只需要知道list和map就行。List即列表,说白了就是数组,例如:args -beijing -shangh...原创 2020-01-23 01:00:44 · 2654 阅读 · 1 评论 -
【k8s】——apiVersion对照表
一、前言 k8s更新迭代比较快,apiVersion也在不断变化中,每个版本的对应的apiVersion略有不同,推荐大家去看官方文档:https://kubernetes.io/docs/reference/。二、对照表Kind apiVersion CertificateSigningRequest certificates.k8s.io/v1beta1...翻译 2020-01-04 15:10:52 · 14768 阅读 · 0 评论 -
【minikube】——dashboard无法打开google chrome浏览器问题
一、前言 minikube的安装和介绍详见我的另一篇博客:https://blog.youkuaiyun.com/weixin_40449300/article/details/100110560二、问题 运行:sudo minikube dashboard打开谷歌浏览器失败,报错如下:$ sudo minikube dashboard???? Verifying dashb...原创 2019-10-03 02:52:45 · 2956 阅读 · 0 评论 -
【微服务】——Kubernetes架构及原理
一、前言 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要...原创 2019-09-02 13:50:57 · 1058 阅读 · 0 评论 -
【微服务】——k8s Service Catalog
一、前言 Service Catalog是kubernetes的一种API扩展,方便kubernetes集群内部应用访问集群外部、由第三方管理、提供的服务,如由云供应商提供的数据库服务。Service Catalog通过Service Brokers使集群内应用能够列出外部服务、提供实例、将集群内应用与实例绑定,使集群内应用不必关心外部服务的实现、管理细节。总结起来就是Service...原创 2019-08-29 14:11:58 · 3117 阅读 · 0 评论 -
【微服务】——Minikube安装使用Kubernetes
一、前言 Kubernetes将底层的计算资源连接在一起对外体现为一个高可用的计算机集群。Kubernetes将资源高度抽象化,允许将容器化的应用程序部署到集群中。为了使用这种新的部署模型,需要将应用程序和使用环境一起打包成容器。与过去的部署模型相比,容器化的应用程序更加灵活和可用,在新的部署模型中,应用程序被直接安装到特定的机器上,Kubernetes能够以更高效的方式在集群中实现容器的分...原创 2019-08-28 17:17:35 · 1443 阅读 · 1 评论