K8S之路
文章平均质量分 75
记录k8s自主学习过程
木讷大叔爱运维
对的那条路,往往不是最好走的!
展开
-
应用上K8S:K8S集成Java应用
通过对Java应用运行依赖的JVM参数、运行目录等内容的分析,需要分别通过K8S内置环境变量、Configmap、PV/PVC等功能进行不同程度的集成。原创 2023-01-08 11:35:27 · 1844 阅读 · 1 评论 -
应用上K8S:Gradle打包
相对于Maven打包过程,Gradle打包的配置更简单,但是其官网文档对gradle docker plugin的描述过于简单,导致某些更细节的配置摸索起来比较麻烦。原创 2023-01-01 14:28:36 · 915 阅读 · 4 评论 -
集群外独立部署Prometheus+Grafana监控K8S全面解析
简介Prometheus+Grafana作为监控K8S的解决方案,大都是在K8S集群内部部署,这样可以直接调用集群内的cert及各种监控url,但是增加了集群的资源开销。因此在资源有限的情况下,我更倾向于K8S集群外独立部署Prometheus+Grafana。虽然Prometheus+Grafana独立部署,但是收集不同维度监控指标的exporter需要部署在集群内,主要有以下三种:维度工具监控url备注Pod性能kubelet cadvisor/api/v1/node原创 2020-10-09 08:44:17 · 12021 阅读 · 15 评论 -
k8s node节点停机维护,pod如何迁移?
需求k8s集群中的node节点要升级内存,以应对服务迁入、pod扩缩容导致的资源短缺,需要对node节点进行停机维护,那么此时node节点上的pod应该如何处理呢?下面我们来看一下。默认迁移当node节点关机后,k8s集群并没有立刻发生任何自动迁移动作,如果该node节点上的副本数为1,则会出现服务中断的情况。其实事实并非如此,k8s在等待5分钟后,会自动将停机node节点上的pod自动迁移到其他node节点上。具体过程如下:# 1.模拟node节点停机,停止kubeletsystemctl原创 2020-09-01 08:48:22 · 14713 阅读 · 0 评论 -
filebeat收集K8S日志,写入自动创建的索引
需求前面我们已经将SpringBoot项目部署在K8S中,此时需要filebeat收集日志并通过ELK进行展示,以用于后续的问题排查及监控。与传统的日志收集不同:pod所在节点不固定,每个pod中运行filebeat,配置繁琐且浪费资源;pod的日志目录一般以emptydir方式挂载在宿主机,目录不固定,filebeat无法自动匹配;pod持续增多,filebeat需要做到自动检测并收集;因此最后的收集方式为一个filebeat能够收集所有的pod日志,但是这就要求统一的日志收集规则、目录以原创 2020-09-08 19:17:53 · 12459 阅读 · 8 评论 -
K8S+Jenkins实现SpringBoot项目的CI/CD
需求Jenkins master位于k8s集群外,实现jenkins slave的动态构建、k8s+jenkins中使用自定义maven镜像两篇文章实现了K8S+Jenkins+Maven基础环境,通过此环境我们进一步实现SpringBoot项目的CI/CD。K8S+Jenkins+Maven基础环境目前能够实现:Jenkins slave在K8S集群内的动态构建;Maven实现编译、打包、构建镜像并push到远程docker仓库;剩下的工作需在Jenkins流水线中调用kubectl 命令实原创 2020-08-21 10:10:27 · 2541 阅读 · 2 评论 -
k8s ingress-nginx自定义配置文件
需求k8s集群默认安装的ingress-nginx原创 2020-09-02 08:46:37 · 6339 阅读 · 0 评论 -
一套包含完整前后端的系统如何在K8S中部署?
需求实际应用中,一个系统往往是包含前后端的,通常前端使用Vue,后端使用Springboot。而之前我们只是在K8S中配置过后端Springboot项目,现在我们需要将完整的系统部署到K8S集群中,通过本次部署可以具体分析如何部署,为日后上线生产环境做好充足的准备。前端前端如果使用的Vue开发,需要将打包后的dist放到Web容器的root目录下,在此我们使用Deployent来部署Nginx pod。1.root目录Nginx镜像默认配置文件中指定的root目录为/usr/share/nginx原创 2020-11-21 06:41:29 · 4781 阅读 · 2 评论 -
K8SEASY:一键安装K8S高可用集群
简述kubeadm 二进制部署 k8s集群,整个部署过程相对比较繁琐,但是通过安装有助于入门者初步了解k8s的组件、网络等信息,因此还是需要了解的。而本文要推荐的是一款可快速部署多节点高可用K8S集群的软件:K8SEASY,同时内置了Dashboard、Prometheus、Grafana、node-exporter等组件,简单易用。其他优点如下:一键安装,安装一个系统只需要 3 分钟, 安装好以后完整的监控也一并装好,可以直接使用。(不止支持单master 还支持3master 高可用方案)新原创 2021-03-26 23:39:38 · 3657 阅读 · 7 评论 -
kubedog:解决K8S在CI/CD中无法持续追踪问题
需求在Jenkins的CI/CD流水线中,无论是通过Kubernetes CLI还是Kubernetes Continuous Deploy插件,在应用yaml后无法检查资源是否部署成功,只能通过kubectl手动检查。这种现象类似于当通过kubectl apply对资源进行配置后,需以下操作进一步获取资源的运行信息:kubectl get -wkubectl logskubectl describe多次输入以上命令我们才能确定pod是否运行成功或定位pod失败原因,操作比较繁琐。而ku原创 2020-10-10 07:58:25 · 1393 阅读 · 0 评论 -
Prometheus+k8s之告警通知
需求集群外独立部署Prometheus+Grafana监控K8S全面解析一文剖析了k8s的监控,但是无法在grafana dashboard中配置告警,因此我们需要额外在Prometheus单独配置告警规则,配合AlertManager实现告警。原创 2020-11-02 09:47:46 · 6581 阅读 · 1 评论 -
jenkins通过Docker plugin部署slave
Jenkis分布式预热Jenkins是Master-Slave架构,Master节点提供Web GUI 和API来管理、分配、运行构建任务;Slave节点只是用来运行Master节点分配的构建任务;因此Slave可以有效减轻Master的工作负载,这也意味着Slave节点可以分布在不同平台并且无需安装jenkins的完整包。Master和Slave通信方式:Master->Slave...原创 2020-03-30 16:28:43 · 2175 阅读 · 0 评论 -
Jenkins+Docker+git多分支实现springboot项目多环境快速交付
简介jenkins通过Docker plugin部署slave中我们实现了spring项目在jenkins slave上动态构建。但是在实际CI/CD应用过程中,运维可能以下问题:环境校验springboot项目的多个git分支,不同分支对应不同的环境。例如:develop分支对应测试环境,master分支对应生产环境。运维部署过程中稍有疏忽,可能导致应用错用环境配置,给测试、生产引入不必要的问题。因此我们增加环境校验,来保证不同的分支使用正确的环境配置文件。发版/回滚/重启发版过程中不仅原创 2020-06-03 08:38:12 · 1128 阅读 · 1 评论 -
从socket权限问题重新认识docker架构
问题引入组件备注jenkinsdocker运行docker-maven-pluginmaven插件jenkins 实现java项目的docker运行,15:01:22 [INFO] Copying src/main/docker/Dockerfile -> /var/jenkins_home/workspace/helloworld/target/do...原创 2020-03-26 16:30:41 · 820 阅读 · 0 评论 -
docker虚拟化之订制python环境
前面我们讲了python爬虫用到的工具及模块:phantomjs、beautifulsoup4、selenium、lxml等,如果我们想随时随地用到这个已经搭建好的python环境,这就有两个方案:一是利用vagrant打包python环境的box;二是创建一个python环境的docker镜像。在此我们介绍下第二种方案,我们利用dockerfile直接创建docker镜像即可,当然前提是你能运行d原创 2016-09-22 16:06:44 · 5102 阅读 · 0 评论 -
Docker部署spring boot
总结这篇博文时,微服务已经在很多公司落地,回看之前的博文记录,在2016年其实就已经利用docker做一些简单的实验环境了,但一直没有好好总结应用场景,现在算是连容器的坎也没跨过去。谨以此文来警戒自己:“今天不走,明天即使跑也不一定跟得上!”现在实践总结下docker部署spring boot的搓成,对未来的应用做好知识储备。手动构建spring boot应用一、helloworld应用1...原创 2020-03-19 14:09:32 · 633 阅读 · 0 评论 -
Docker随时随地玩转变量
Docker中传递变量主要使用ARG和ENV,虽然功能相同,但是他们的作用范围是不一样的。下面我们结合SpringBoot启动的JVM参数来详细了解下。通过本文介绍,我们可以知道这两个命令的具体使用方式。ARG传递变量ARG只在Dockerfile中生效,且在docker build阶段生效,构建好的镜像内不存在此环境变量。意味着在容器启动后ARG定义的变量已经无效,如果想让其生效,需要将其赋...原创 2020-04-30 13:46:11 · 1114 阅读 · 0 评论