作者阳明来源k8s技术圈(ID:kube100)Spinnaker是一种持续交付平台,最初由Netflix开发,用于快速、可靠地发布软件变更。Spinnaker使开发人员可以更轻松地专注于编写代码,而无需担心底层的云基础设施,它可以和Jenkins以及其他流行的构建工具无缝集成。很早就想要体验下Spinnaker了,但是由于GFW的原因尝试了很多次都无功而返,这次解决了代理的问题终于顺利的在Kubernetes集群上成功部署上了Spinnaker。本文将使用helm3来为...
2022-05-10 17:24:03 5570浏览 0点赞 0回复 0收藏
很多时候我们可能都是直接将应用程序的密码或者APIToken之类的私密信息直接暴露在源代码中的,显然直接暴露这些私密信息不是一个好的方式。在Kubernetes系统中提供了一个Secret对象来存储私密的数据,但是也只是简单的做了一次Base64编码而已,虽然比直接暴露要好点了,但是如果是一些安全性要求非常高的应用直接用Secret显然也还是不够的。本文就将来介绍如何使用HashiCorpVault在Kubernetes集群中进行秘钥管理。Vault介绍Vaul...
2022-05-10 13:21:10 9462浏览 2点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)Kubevious(https:github.comkubeviouskubevious)是一个开源的KubernetesDashboard,但是和我们主流的Dashboard却不太一样,可以说非常有特色,他将应用程序相关的所有配置都集中在一起,这可以大大节省操作人员的时间,其实这都不是最主要的,主要的是他具有一个TimeMachine(时光机)功能,允许我们回到之前的时间去查看应用的错误信息。特点其实大部分Kubernetes的Dashboard功能都是大同...
2022-05-10 13:20:09 5765浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)在介绍Kubernetes集群均衡器之前我们还是非常有必要再来回顾下kubescheduler组件的概念。我们知道基本上所有的分布式系统都需要一个流程或应用来调度集群中的任务来执行,同样Kubernetes也需要这样一个调度器来执行任务,我们熟知的kubescheduler组件就是扮演这个角色的,该组件是作为Kubernetes整个控制面板的一部分来运行的,并监听所有未分配节点新创建的Pod,为其选择一个最合适的节点...
2022-05-10 11:29:22 8723浏览 1点赞 1回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)DevOpsProdigyKubeGraf(https:github.comdevopsprodigykubegraf)是一个非常优秀的GrafanaKubernetes插件,是Grafana官方的Kubernetes插件(https:grafana.compluginsgrafanakubernetesapp)的升级版本,该插件可以用来可视化和分析Kubernetes集群的性能,通过各种图形直观的展示了Kubernetes集群的主要服务的指标和特征,还可以用于检查应用程序的生命周期和错误日志。环境要求要安装使用Dev...
2022-05-10 11:29:08 8913浏览 1点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)Prometheus通过指标名称(metricsname)以及对应的一组标签(label)唯一定义一条时间序列。指标名称反映了监控样本的基本标识,而label则在这个基本特征上为采集到的数据提供了多种特征维度。用户可以基于这些特征维度过滤、聚合、统计从而产生新的计算后的一条时间序列。PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛...
2022-05-09 17:19:05 6869浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)我们在使用GrafanaDashboard来展示我们的监控图表的时候,很多时候我们都是去找别人已经做好的Dashboard拿过来改一改,但是这样也造成了很多使用Grafana的人员压根不知道如何去自定义一个Dashboard,虽然这并不是很困难。这里我们介绍一个比较新颖(骚)的工具:DARK(https:github.comKPhoendark),通过Kubernetes的资源对象来定义GrafanaDashboard,实现原理也很简单,也就是通过CRD来定...
2022-05-09 17:19:03 7316浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)Okteto是一个通过在Kubernetes中来开发和测试代码的应用程序开发工具。可以通过Okteto在Kubernetes中一键为我们启动一个开发环境,非常简单方便。前面我们也介绍过Google推出的Skaffold工具,今天我们演示下如何使用Okteto来搭建Python应用开发环境。安装我们只需要在本地开发机上面安装OktetoCLI工具即可,要想使用Okteto来配置环境就需要我们本地机上可以访问一个Kubernetes集群,所以前...
2022-05-09 17:19:01 9426浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)在前面的学习中我们使用用一个kubectlscale命令可以来实现Pod的扩缩容功能,但是这个毕竟是完全手动操作的,要应对线上的各种复杂情况,我们需要能够做到自动化去感知业务,来自动进行扩缩容。为此,Kubernetes也为我们提供了这样的一个资源对象:HorizontalPodAutoscaling(Pod水平自动伸缩),简称HPA,HPA通过监控分析一些控制器控制的所有Pod的负载变化情况来确定是否需要调整Pod的副...
2022-05-09 17:12:18 1.5w浏览 1点赞 0回复 1收藏
作者阳明来源k8s技术圈(ID:kube100)本文我们将介绍如何在Windows10下使用WSL2和KinD来搭建一套Kubernetes集群。在过去几年,Kubernetes已经成为了容器编排领域事实上的标准。虽然现在已经有各种各样的Kubernetes发行版本和安装程序来部署Kubernetes环境了,除了云环境或者裸机环境下面之外,我们仍然需要在本地部署和运行Kubernetes集群,特别是对于相关的开发人员。但是Kubernetes最开始是被设计在Linux环境中来部署和使用...
2022-05-09 17:11:49 1.8w浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)我们对PV和PVC的几种状态应该不算陌生,但是在使用过程中可能也会产生一些疑问,比如为什么PVC变成Lost状态了,新创建的PVC如何能够绑定之前的PV,我可以恢复之前的PV吗这里我们就来对PV和PVC中的几种状态变化再次进行说明。在不同的情况下,PV和PVC的状态变化我们用如下所示的表格来进行说明:创建PV正常情况下PV被创建成功后是Available状态:apiVersion:v1kind:PersistentVolumemetadat...
2022-05-09 17:11:34 8559浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)Kubernetes号称云原生操作系统,可想而知其复杂程度也是非常大的,由许多组件组成,我们很难去追踪到所有的组件信息。上图中至少列出了七八个组件,我们这里会忽略其中大部分组件,要运行一个最小级别的Kubernetes至少要包括如下三个基本组件:kubelet:在集群中每个节点上运行的代理,负责容器真正运行的核心组件kubeapiserver:Kubernetes控制平面的组件,提供资源操作的唯一入口容器运...
2022-05-09 17:10:15 7009浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)前面我们的文章中都是将Prometheus安装在Kubernetes集群中来采集数据,但是在实际环境中很多企业是将Prometheus单独部署在集群外部的,甚至直接监控多个Kubernetes集群,虽然不推荐这样去做,因为Prometheus采集的数据量太大,或大量消耗资源,比较推荐的做法是用不同的Prometheus实例监控不同的集群,然后用联邦的方式进行汇总。但是使用Prometheus监控外部的Kubernetes集群这个需求还是...
2022-05-09 17:10:07 1.5w浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)PromQL是Prometheus提供的一个函数式的表达式语言,可以使用户实时地查找和聚合时间序列数据。表达式计算结果可以在图表中展示,也可以在Prometheus表达式浏览器中以表格形式展示,或者作为数据源,以HTTPAPI的方式提供给外部系统使用。PromQL虽然以QL结尾,但是它不是类似SQL的语言,因为在时间序列上执行计算类型时,SQL语言相对缺乏表达能力。而PromQL语言表达能力非常丰富,可以使用标...
2022-05-09 17:10:00 9829浏览 1点赞 0回复 1收藏
作者阳明来源k8s技术圈(ID:kube100)kubeadm安装kubernetes集群非常方便,但是也有一个比较烦人的问题就是默认的证书有效期只有一年时间,所以需要考虑证书升级的问题,本文的演示集群版本为v1.16.2版本,不保证下面的操作对其他版本也适用,在操作之前一定要先对证书目录进行备份,防止操作错误进行回滚。本文主要介绍两种方式来更新集群证书。手动更新证书由kubeadm生成的客户端证书默认只有一年有效期,我们可以通过checke...
2022-05-09 17:09:18 9411浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)本节主要讲解Kubernetes核心的资源类型Scheme的定义以及如何使用Clientset来获取集群资源对象。介绍当我们操作资源和apiserver进行通信的时候,需要根据资源对象类型的Group、Version、Kind以及规范定义、编解码等内容构成Scheme类型,然后Clientset对象就可以来访问和操作这些资源类型了,Scheme的定义主要在api子项目之中,源码仓库地址:https:github.comkubernetesapi,被同步到Kuberne...
2022-05-09 14:43:46 1.3w浏览 1点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)前面我们在使用Clientset的时候了解到我们可以使用Clientset来获取所有的原生资源对象,那么如果我们想要去一直获取集群的资源对象数据呢岂不是需要用一个轮询去不断执行List()操作这显然是不合理的,实际上除了常用的CRUD操作之外,我们还可以进行Watch操作,可以监听资源对象的增、删、改、查操作,这样我们就可以根据自己的业务逻辑去处理这些数据了。Watch通过一个event接口监听对象的...
2022-05-09 14:43:24 8902浏览 1点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)无状态应用在Kubernetes中的使用非常方便,但是对于一些有状态应用部署还是相对较麻烦,虽然也有单独的StatefulSets资源对象来处理有状态应用,但是毕竟不具有通用性,有状态应用的编排和具体的应用息息相关,比如MongoDB、ElasticSearch、Redis、Zookeeper等应用。我们这里不再对StatefulSets的具体使用展开介绍了,将通过部署一个可扩展的MongoDB集群为例进行说明。首先我们运行一个Daem...
2022-05-09 14:26:58 1.1w浏览 2点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)本文我们将了解如何将一个新的DNS名称或者IP地址添加到KubernetesAPIServer使用的TLS证书中。在某些情况下默认的证书包含的名称可能不能满足我们的要求,又或者是APIServer地址有所变化,都需要重新更新证书。我们这里的集群是使用kubeadm搭建的单master集群,使用的也是kubeadm在启动集群时创建的默认证书授权CA,对于其他环境的集群不保证本文也同样适用。介绍KubernetesAPIServer使用数...
2022-05-09 14:26:00 8687浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)Kubernetes的节点可以按照节点的资源容量进行调度,默认情况下Pod能够使用节点全部可用容量。这样就会造成一个问题,因为节点自己通常运行了不少驱动OS和Kubernetes的系统守护进程。除非为这些系统守护进程留出资源,否则它们将与Pod争夺资源并导致节点资源短缺问题。当我们在线上使用Kubernetes集群的时候,如果没有对节点配置正确的资源预留,我们可以考虑一个场景,由于某个应用无限制...
2022-05-09 11:10:27 9468浏览 1点赞 0回复 0收藏