作者阳明来源k8s技术圈(ID:kube100)前面文章和课程中我们都是使用的Kubeadm搭建的Kubernetes集群,但是版本比较低了(1.10.0版本),近期有不少反馈让更新下版本,本文将通过Kubeadm来搭建最新版本的Kubernetes1.15.3集群,其实和以前搭建的方式方法基本一致,我们这里准备使用calico网络插件以及ipvs模式的kubeproxy。环境准备3个节点,都是Centos7.6系统,内核版本:3.10.0957.12.2.el7.x8664,在每个节点上添加hosts信息...
2022-05-03 14:44:40 6144浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)如果你经常使用Kubernetes,那么你肯定就有定制资源清单文件的需求,但是貌似现在大家都比较喜欢使用Helm,Helm很好用,但也有很多缺点,比如需要一个tiller服务端,需要超高的权限,最重要的是如果你要想自己做一个HelmChart包的话,则不是那么容易的,需要你了解一些gotemplate的相关知识,它抛弃了我们在Docker和Kubernetes上面学到的一些知识点,今天我们将为大家介绍另外一种名为Kust...
2022-05-03 14:33:20 9069浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)KubeSphere是在Kubernetes之上构建的企业级分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决Kubernetes本身存在的存储、网络、安全和易用性等痛点。除此之外,平台已经整合并优化了多个适用于容器场景的功能模块,以完整的解决方案帮助企业轻松应对敏捷开发与自动...
2022-05-03 14:23:58 8528浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)本文是Drone系列文章的第三篇,在第一篇文章中我们介绍了如何在Kubernetes集群中使用Helm来快速安装Drone,并且用certmanager给Drone应用做了自动化HTTPS,在第二篇文章中我们介绍了如何在Drone中使用Pipeline来自动化构建Docker镜像。本文我们将创建一个HelmChart包,然后使用DronePipeline来进行自动部署或更新应用到Kubernetes集群中。如果对Helm如何部署应用还不熟悉的,同样的,可以...
2022-05-03 14:16:34 9775浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)本文是Drone系列文章的第二篇,在第一篇文章中我们介绍了如何在Kubernetes集群中使用Helm来快速安装Drone,并且用certmanager给Drone应用做了自动化HTTPS。本文我们将创建一个简单的Golang应用,通过Drone的Pipeline来自动化构建Docker镜像。Go项目我们这里使用Go语言中流行的web框架gin创建一个简单的web服务,在GitHub上创建一个名为dronek8sdemo的代码仓库,Clone到本地,添加名为main....
2022-05-03 14:07:39 1.2w浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)我们知道CICD是devops中最重要的环节,特别是对于现在的云原生应用,CICD更是不可或缺的部分,对于CICD工具有很多优秀的开源工具,比如前面我们介绍的Jenkins以及gitlabci都是非常流行常用的CICD工具,但是这两个工具整体使用来说有点陈旧和笨重,本文将为大家介绍一个比较热门的轻量级CICD开源工具:Drone,介绍如何将Drone和Kubernetes进行结合使用。本篇文章是Drone系列文章中的第一篇...
2022-05-03 14:02:55 7356浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)Kubernetes提供了需要扩展其内置功能的方法,最常用的可能是自定义资源类型和自定义控制器了,除此之外,Kubernetes还有一些其他非常有趣的功能,比如admissionwebhooks或者initializers,这些也可以用于扩展API,它们可以用于修改某些Kubernetes资源的基本行为,接下来我们来看看那些引入了admissionwebhooks的动态准入控制。准入控制器首先,我们先看看Kubernetes官方文档中关于准入控制...
2022-05-03 13:58:08 1.1w浏览 2点赞 1回复 1收藏
作者阳明来源k8s技术圈(ID:kube100)我们知道可以通过RBAC为操作kubectl的用户或组来进行权限控制,但是我们往往是通过kubernetes集群的超级管理员手动为这些用户进行分配的,并没有一个开箱即用的kubectl身份验证工具。现在参加kubernetes进阶课程的学生比较多,其中可能有一部分学生暂时还没有一套可用的集群环境,那么我们就可以为这部分学生授权访问我们的集群,但是如果这么多学生都手动去给他们创建身份认证必然非常麻...
2022-05-03 13:49:00 7977浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)在Kubernetes的监控方案中我们经常会使用到一个PromethuesOperator的项目,该项目可以让我们更加方便的去使用Prometheus,而不需要直接去使用最原始的一些资源对象,比如Pod、Deployment,随着PrometheusOperator项目的成功,CoreOS公司开源了一个比较厉害的工具:OperatorFramework,该工具可以让开发人员更加容易的开发Operator应用。在本篇文章中我们会为大家介绍一个简单示例来演示如...
2022-05-03 13:39:03 6829浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)由于Kubernetes进阶课程中的集群版本是v1.10.0,这个版本相对有点旧了,最新版本都已经v1.14.x了,为了尽量保证课程内容的新鲜度,我们需要将集群版本更新。我们的集群是使用的kubeadm搭建的,我们知道使用kubeadm搭建的集群来更新是非常方便的,但是由于我们这里版本跨度太大,不能直接从1.10.x更新到1.14.x,kubeadm的更新是不支持跨多个主版本的,所以我们现在是1.10,只能更新到1.11版...
2022-05-03 13:24:41 7214浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)Pipeline第一个阶段:单元测试,我们可以在这个阶段是运行一些单元测试或者静态代码分析的脚本,我们这里直接忽略。第二个阶段:代码编译打包,我们可以看到我们是在一个maven的容器中来执行的,所以我们只需要在该容器中获取到代码,然后在代码目录下面执行maven打包命令即可,如下所示:stage('代码编译打包'){try{container('maven'){echo"2.代码编译打包阶段"sh"mvncleanpackageDmaven...
2022-05-03 13:03:24 7572浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)网络可以说是Kubernetes部署和使用过程中最容易出问题的了,最主要的是对网络技术非常熟悉的人员相对较少,和Kubernetes结合后能搞透彻网络这块的就更加稀少了,导致我们在部署使用过程中经常遇到一些网络问题。本文将重点关注网络,列出我们遇到的一些问题,包括解决和发现问题的简单方法。流量转发和桥接Kubernetes支持各种网络插件,每个插件出现问题的方式都不尽相同。Kubernetes的核...
2022-05-03 12:54:14 1.2w浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)有时候我们需要在Kubernetes中暴露一些没有任何安全验证机制的服务,比如没有安装xpack的Kibana,没有开启登录认证的Jenkins服务之类的,我们也想通过域名来进行访问,比较域名比较方便,更主要的是对于Kubernetes里面的服务,通过Ingress暴露一个服务太方便了,而且还可以通过certmanager来自动的完成HTTPS化。所以就非常有必要对这些服务进行一些安全验证了。BasicAuth认证我们在前面升...
2022-05-03 12:46:46 6108浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)这节课结合前面所学的知识点给大家介绍一个完整的示例:使用Jenkins+Gitlab+Harbor+Helm+Kubernetes来实现一个完整的CICD流水线作业。其实前面的课程中我们就已经学习了JenkinsPipeline与Kubernetes的完美结合,我们利用Kubernetes来动态运行Jenkins的Slave节点,可以和好的来解决传统的JenkinsSlave浪费大量资源的缺点。之前的示例中我们是将项目放置在Github仓库上的,将Docker镜像推送...
2022-05-03 12:34:04 1.2w浏览 0点赞 0回复 1收藏
作者阳明来源k8s技术圈(ID:kube100)上节课我们将GitlabCIRunner安装到了Kubernetes集群中,接下来看看如何结合Kubernetes和GitlabCI进行持续集成和持续部署。基本配置首先将本节所用到的代码库从Github上获得:cnychgitlabcik8sdemo,可以在Gitlab上新建一个项目导入该仓库,当然也可以新建一个空白的仓库,然后将Github上面的项目Clone到本地后,更改远程仓库地址即可:$gitclonehttps:github.comcnychgitlabcik8sdemo.git$...
2022-05-03 12:25:03 1.0w浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)这节课来和大家介绍如何使用GitlabCI来做持续集成。简介从Gitlab8.0开始,GitlabCI就已经集成在Gitlab中,我们只要在项目中添加一个.gitlabci.yml文件,然后添加一个Runner,即可进行持续集成。在介绍GitlabCI之前,我们先看看一些GitlabCI的一些相关概念。Pipeline一次Pipeline其实相当于一次构建任务,里面可以包含很多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服...
2022-05-03 11:27:04 7424浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)Gitlab官方提供了Helm的方式在Kubernetes集群中来快速安装,但是在使用的过程中发现Helm提供的Chart包中有很多其他额外的配置,所以我们这里使用自定义的方式来安装,也就是自己来定义一些资源清单文件。Gitlab主要涉及到3个应用:Redis、Postgresql、Gitlab核心程序,实际上我们只要将这3个应用分别启动起来,然后加上对应的配置就可以很方便的安装Gitlab了,我们这里选择使用的镜像不是...
2022-05-03 11:20:11 1.1w浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略:重建(recreate):停止旧版本部署新版本重建(recreate):停止旧版本部署新版本滚动更新(rollingupdate):一个接一个地以滚动更新方式发布新版本蓝绿(bluegreen):新版本与...
2022-05-03 11:06:52 5938浏览 0点赞 0回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)上节课和大家介绍了Kubernetes集群中的几种日志收集方案,Kubernetes中比较流行的日志收集解决方案是Elasticsearch、Fluentd和Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案。Elasticsearch是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。Elasticsearch通常与Kibana一起部署,Kibana是El...
2022-05-03 10:38:06 1.5w浏览 1点赞 2回复 0收藏
作者阳明来源k8s技术圈(ID:kube100)前面的课程中和大家一起学习了Kubernetes集群中监控系统的搭建,除了对集群的监控报警之外,还有一项运维工作是非常重要的,那就是日志的收集。介绍应用程序和系统日志可以帮助我们了解集群内部的运行情况,日志对于我们调试问题和监视集群情况也是非常有用的。而且大部分的应用都会有日志记录,对于传统的应用大部分都会写入到本地的日志文件之中。对于容器化应用程序来说则更简单,只需...
2022-05-03 10:17:15 1.9w浏览 0点赞 0回复 0收藏