k8s
文章平均质量分 81
最美dee时光
good good study
展开
-
在k8s集群中部署多nginx-ingress
关于ingress的介绍,前面已经详细讲过了,参考。本案例ingress的部署使用deployment+LB的方式。原创 2024-01-04 16:21:39 · 2095 阅读 · 2 评论 -
helm部署redis高可用集群
参考文档链接:https://juejin.cn/post/7284885060339679251。原创 2023-12-26 21:19:45 · 1172 阅读 · 0 评论 -
在k8s中使用cert-manager部署gitlab集群
写在前面的话:前面有详细的分享过,不过当时使用gitlab的访问证书是阿里云上免费的ssl证书,今天特意专门介绍下另外一种基于cert-manager发布自签证书的方式实现部署gitlab到k8s集群中。原创 2023-12-26 17:41:19 · 1664 阅读 · 0 评论 -
那些年,关于CKA&CKS认证的那些事儿?
遥想2020年的年初,疫情封城封村之际,工作之余在B站将尚硅谷的linux中的k8s视频完整系统的学习了一遍,自此像是打通了任督二脉一般,开启了对k8s的探索之旅,一路也是磕磕绊绊的在工作中使用k8s。终于在23年的6月仲夏,在同事的鼓励下,报考了CKA认证,之后又考了CKS,再次将k8s的知识点贯穿了一遍,也算是从最初的朦胧到现在的掌握形成了一个闭环。原创 2023-11-26 22:42:50 · 1232 阅读 · 3 评论 -
基于helm的方式在k8s集群中部署gitlab - 备份恢复(二)
接上一篇,本篇重点介绍在k8s集群中备份gitlab的数据,并在虚拟机上部署相同版本的gitlab,然后将备份的数据进行还原恢复。原创 2023-11-26 19:55:18 · 1117 阅读 · 0 评论 -
基于helm的方式在k8s集群中部署gitlab - 升级(三)
接上一篇,本篇重点对gitlab在k8s集群中进行升级。原创 2023-11-26 20:21:37 · 838 阅读 · 0 评论 -
基于helm部署并配置StorageClass
此类方法适用于测试环境或者小型的集群环境,因为nfs是网络文件系统,在io性能上并不能有所保证。原创 2023-11-26 19:04:42 · 430 阅读 · 0 评论 -
基于Ingress实现灰度发布(金丝雀发布)和蓝绿发布
前面有科普过灰度发布,那么本章将通过一个案例来给大家展示下实现的过程细节。前置条件:1、k8s集群背景分析:灰度及蓝绿发布是为新版本服务创建一个与老版本服务完全一致的生产环境,在不影老版本服务的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版本。其中AB测试就是一种灰度发布方式,一部分用户继续使用老版本的服务,将一部分用户的流量切换到新版本,如果新版本运行稳定,则逐步将所有用户迁移到新版本。应用场景基于客户端请求的流量切原创 2022-07-16 11:56:01 · 2219 阅读 · 0 评论 -
flux在k8s集群中的应用
Flux是一个在git中可以自动明确集群状态和匹配配置的工具。它可以用在操作Kubernetes集群中来触发deployment,这就意味着你不再需要单独的CD工具。在此基础上(以及可配置的策略)它可以监控仓库、检测镜像、触发deployment以及更新所需的运行配置。好处就是你不需要授予集群的CI访问权,每一个更改都是原子的和事务性的,git已经有了审计日志。每个事务要么失败,要么成功。你完全以代码为中心,不需要新的基础设施。...原创 2022-07-16 11:37:31 · 1226 阅读 · 0 评论 -
基于 keda事件驱动在Kubernete 集群上的弹性自动缩放应用
由于我们在文件中定义的promethues收集的服务的自定义指定是DubboRequestLatency,因此我们可以在根据PromQL语句在promethues的界面查询下当前的值是多少。kill掉模拟的cpu脚本,将cpu的使用率降下来,等待一会,结合阿里云界面,会发现pod进入缩容状态。由于达到设定的开始时间后,但是我们有配置服务的伸缩窗口,所以在等待60秒后,开始扩容。同样在到达设定的结束时间后,在等待伸缩窗口期(180秒)后,服务进行缩容,由于。,所以会恢复到最原始的副本数。...原创 2022-07-16 11:07:17 · 827 阅读 · 0 评论 -
科普:一文细说蓝绿发布、AB测试、金丝雀发布(灰度发布)
随着微服务架构的普及,线上服务越来越多,随之而来的就是产品迭代的频率越来越快,部署越来越频繁;而同时要求服务上线速度也要快速提升。然后鱼与熊掌不可兼得,有上线、有部署,就有风险,有风险,就对业务有影响,因为也就反向引导了更优的部署方案:诸如蓝绿部署、金丝雀发布(灰度发布),也有适应产品迭代频率的AB测试。1、蓝绿发布概要说明蓝绿发布需要对服务的新版本进行冗余部署,一般新版本的机器规格和数量与旧版本保持一致,相当于该服务有两套完全相同的部署环境,只不过此时只有旧版本在对外提供服务,新版本作为热备。当服原创 2022-04-27 22:03:19 · 1693 阅读 · 0 评论 -
基于Prometheus自定义指标对k8s集群的容器扩缩容
前面分别对基于云原生k8s自身的hpa和基于阿里云ack集群上的hpa进行了讲解,但同时也有以自身的不足:1、k8s原生的hpa只能满足硬件资源的需求,并不能对于业务的一些指标做很多的扩容。2、阿里云ack集群通过集成阿里云厂商自研的插件可以很好的满足业务指标的获取,但是对于没有上云的公司来说也是一个痛点问题。因为我们可以通过开源的prometheus-adapter可以解决这个问题。文章目录前置条件:背景:实现原理:操作:step1:helm部署(helm3版本)1)编写values文件2)部署p原创 2022-04-24 23:17:54 · 1145 阅读 · 0 评论 -
基于阿里云组件指标的容器水平伸缩
文章目录前置条件:操作:step1:创建nginx的deploymentstep2:创建hpastep3:查看ingress的相关指标step4:创建ingress路由step5:压测访问分析:前置条件:1、阿里云ack集群2、已配置安装好ingress的日志参考链接:https://help.aliyun.com/document_detail/151555.html操作:以nginx服务为例step1:创建nginx的deploymentcat nginx-deployment.yam原创 2022-04-24 22:47:52 · 3102 阅读 · 0 评论 -
基于k8s的HAP进行容器的水平伸缩
文章目录前置条件:操作:step1:创建nginx的deploymentstep2:创建hpastep3:模拟超载访问前置条件:1、阿里云ack集群操作:以nginx服务为例step1:创建nginx的deploymentcat nginx-deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: nginx labels: app: nginxspec: replicas: 1 selec原创 2022-04-24 22:35:18 · 2445 阅读 · 0 评论 -
在k8s集群中以svc的方式访问oss
在k8s集群中以svc的方式访问oss背景需求前置条件原理及说明原理:说明:部署文件结构部署操作step1:编写oss_auth.lua文件,用于nginx中调用该文件step2:编写nginx的主配置文件step3:编写nginx主配置文件的secret文件,需要将nginx.conf以secert的方式挂载到容器中step4:编写oss_auth.lua的comfigmap文件,需要将oss_auth.lua以comfigmap的方式挂载到容器中step5:编写部署服务的文件step6:编写部署服务的s原创 2022-04-07 22:52:10 · 5538 阅读 · 0 评论 -
基于SkyWalking实现对k8s集群中微服务的链路追踪分析
基于SkyWalking实现对k8s集群中微服务的链路追踪分析背景需求:SkyWalking介绍:实现方式:step1:制作SkyWalking Agent镜像1、准备文件:2、编写skywalking agent的dockerfile文件3、构建镜像step2:编写java服务接入skywalking agent的yamlstep3:执行yaml文件step4:效果图背景需求:由于我司之前的服务都是部署在ECS中,对于java微服务的实时链路分析是基于skytwalking agent来做监控的,但是原创 2021-11-21 21:00:09 · 3015 阅读 · 1 评论 -
在k8s中部署jenkins并通过pipeline发布项目
本篇目录链接背景需求:前置条件:step1:准备相关文件step2:编写jenkins的dockerfile文件step3:编写jenkins服务的rbac文件step4:编写jenkins的资源清单文件(deployment和service)step5:创建jenkins服务step6:验证1、新建项目--流水线2、创建并编写pipeline3、运行流水线step7:流水线代码step8:优化点背景需求:由于目前现有Jenkins上的项目多、杂,不仅有开发、测试、灰度、生产,而且还有一些其他的脚本实现原创 2021-11-21 19:45:32 · 2826 阅读 · 4 评论 -
k8s环境启动命令增加环境配置
本篇目录链接1、代码支持传参2、 k8s中的Args启动命令需要增加自己所在的环境namespaces。3、项目整改:step1:保留配置文件step2:profiles删除多余的配置基于以 spring boot 启动命令的形式注入所需的环境配置,不需要在项目中增加多余的配置,只需要在apollo中添加自己的namespaces。K8S启动的时候指定自己的namespaces。1、代码支持传参有的项目启动的时候没有传入参数,导致启动参数失效。这个必须要加上2、 k8s中的Args启动命令需要增加原创 2021-11-20 17:09:27 · 1994 阅读 · 0 评论 -
基于hostpath的k8s pod日志持久化
前置条件:考虑到pod的多副本,但同时需要将日志集中收集起来,所以采用hostpath的方式将同一个服务的多pod的日志持久化到一起,日志穿插性的写在一个文件中。由于pod重启会打散分配到不同节点上,所以基于nfs的网络文件系统通过共享目录的方式挂载到客户端节点(nfs-server:/mnt/hostpath; nfs-client: /mnt/hostpath,将nfs-server的/mnt/hostpath挂载到nfs-client的/mnt/hostpath下,从而达到同服务多pod可以写到原创 2021-11-19 22:17:53 · 4585 阅读 · 2 评论 -
记一次k8s集群集群恢复处理案例
现象:k8s集群的master节点无法加入到集群中,提示[control-plane] Creating static Pod manifest for “kube-controller-manager”W1110 17:36:52.162178 17976 manifests.go:225] the default kube-apiserver authorization-mode is “Node,RBAC”; using “Node,RBAC”[control-plane] Creatin原创 2021-11-16 22:46:55 · 1472 阅读 · 2 评论 -
记一次k8s集群中etcd集群恢复处理
现象:突然我们的kuboard界面访问的时候,一直卡在了登录页,由于是在k8s集群中部署的,于是通过命令行终端登录到master节点上,查看集群中的pod状态,发现竟然k8s集群都不能访问了,于是首先通过kubectl get cs 查看了,发现是etcd集群故障。排查:step1:先登录etcd-1节点(即etcd的leader节点),通过配置文件查看,集群的三个节点分别是10.10.10.11,10.10.10.12,10.10.10.13;step2:然而在etcd-3(10.10.10.原创 2021-10-26 21:57:50 · 3598 阅读 · 0 评论 -
制作用于k8s集群中zookeeper3.6.3镜像(一)
这里写自定义目录标题背景需求分析镜像制作step1:下载zookeeper二进制安装包step2:编写zk配置脚本step3:编写zk服务的健康检查脚本step4:编写获取zk配置参数的脚本step5:编写dockerfile文件背景由于生产环境上使用的是zookeeper3.6.3集群,需要容器化部署。需求分析版本:zookeeper 3.6.3要求:数据持久化镜像制作step1:下载zookeeper二进制安装包wget http://www.apache.org/dist/zookee原创 2021-09-16 12:51:18 · 1538 阅读 · 0 评论 -
以statefulset方式在k8s集群中部署zookeeper3.6.3集群(二)
本篇目录链接背景需求分析环境说明1 本文的操作环境为 Kubernetes v1.18.0 版本,使用docker的容器运行时,docker 和 Kubelet 采用的 cgroup 驱动为 systemd。2 采用的是动态存储的方式持久化zk集群的数据准备yaml文件step1:编写zk的配置文件step2:编写zk的pdb文件,保证集群最少可用的节点数step3:编写zk的svc文件step4:编写zk的sts文件step5:依次执行yaml文件背景目前我司已经将java程序以微服务的形式迁移到k8原创 2021-09-15 22:04:38 · 1894 阅读 · 0 评论 -
k8s集群性能优化之kubelet配置资源预留
本篇目录链接疑问分析:解决思路:环境说明Kubelet Node Allocatable 介绍配置方式(基于yum安装)配置资源预留Eviction 与 OOM可分配约束疑问分析:在k8s集群中,默认情况下 Pod 能够使用节点全部可用容量,同样就会伴随一个新的问题,pod消耗的内存会挤占掉系统服务本身的资源,这就好比我们在宿主机上运行java服务一样,会出现java程序将宿主机上的资源(内存、cpu)耗尽,从而导致系统登陆不上或者卡顿现象。同理在k8s集群中也会出现类似的问题,从而也会导致一系列不可控原创 2021-09-14 22:09:38 · 5172 阅读 · 0 评论 -
通过Prometheus-Operator实现对k8s集群的监控
特此说明:本篇时基于prometheus-operator官网提供的kube-prometheus原生包进行部署的,由于我的k8s集群为1.18.0版本,考虑到对原生的兼容性,使用的kube-prometheus版本为release-0.6(官网从release-0.5已经开始支持k8s1.18了)下载kube-prometheusgithub地址:https://github.com/prometheus-operator/kube-prometheuswget https://github.co原创 2021-07-06 16:44:44 · 680 阅读 · 1 评论 -
通过EFK实现对k8s集群日志的采集
**参考:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-elasticsearch-fluentd-and-kibana-efk-logging-stack-on-kubernetes#step-2-%E2%80%94-creating-the-elasticsearch-statefulset**1. 概述和组件说明对于Kubernetes的日志采收集,目前官方现在比较推荐的日志收集解决方案是 Elasticse原创 2021-07-06 11:34:53 · 727 阅读 · 0 评论 -
k8s集群在高可用加入主节点失败是异常处理
现象:原创 2021-06-19 10:25:04 · 873 阅读 · 0 评论 -
k8s集群之ClusterIP网络扩容
本篇目录链接背景现象原因分析step1:通过终端报错,显然提示svc的网络已经用尽,无法分配ipstep2:查看apiserver中定义的svc网络(--service-cluster-ip-range)背景应领导要求,要现象Error from server (InternalError): error when creating "deployment-evaluation-api.yaml": Internal error occurred: failed to allocate a serv原创 2021-05-26 21:57:11 · 4239 阅读 · 0 评论 -
k8s之Pod驱逐迁移和Node节点维护
本篇是基于k8s-v1.18.0版本,参考https://cloud.tencent.com/developer/article/1552452。一、环境说明主机名ip系统版本docker版本master192.168.148.124CentOS 7.6.181019.03.9node01192.168.148.125CentOS 7.6.181019.03.9node02192.168.148.126CentOS 7.6.181019.03.原创 2021-01-14 12:56:17 · 3872 阅读 · 0 评论 -
k8s之QoS服务质量管理
背景K8S 的节点上的资源会被 pod 和系统进程所使用,如果默认什么都不配置,那么节点上的全部资源都是可以分配给pod使用的,系统进程本身没有保障,这样做会存在以下问题:集群雪崩:如果节点上调度了大量pod,且pod没有合理的limit限制,节点资源将被耗尽,sshd、kubelet等进程OOM,节点变成 not ready状态,pod重新继续调度到其他节点,新节点也被打挂,引起集群雪崩。系统进程异常:就算 pod 设置了limit,但如果机器遇到资源不足,系统进程如 docker 没有资源原创 2021-01-14 11:29:55 · 596 阅读 · 0 评论 -
k8s之StatefulSet详解
本篇是基于k8s-v1.15.0版本。1、介绍RC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、MongoDB集群等。StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识原创 2020-05-11 15:50:55 · 61621 阅读 · 3 评论 -
k8s中部署一个java项目
本篇是基于k8s-v1.15.0版本,在现有集群上部署一个java项目。流程如下:制作镜像—》控制器管理pod—》暴露应用—》对外发布应用java-deamon的源码下载地址详见百度云链接:https://pan.baidu.com/s/1mK5HPrPWKUTn1Wf3AG3p3w 提取码:gum7 tomcat下载地址http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.46/bin/apache-tomcat-8.0.46.tar.gz原创 2020-05-10 12:06:59 · 2688 阅读 · 0 评论 -
ingress-nginx详解和部署方案
部署ingress-nginxingress介绍K8s集群对外暴露服务的方式目前只有三种:Loadblancer;Nodeport;ingress前两种熟悉起来比较快,而且使用起来也比较方便,在此就不进行介绍了。下面详细讲解下ingress这个服务,ingress由两部分组成:ingress controller:将新加入的Ingress转化成Nginx的配置文件并使之生效ingre......原创 2020-05-08 18:02:58 · 50484 阅读 · 16 评论 -
k8s-1.16.2集群部署-高可用(三)
接上一篇对k8s集群部署-单主(二),本篇主要讲述k8s集群的高可用。centos部署k8s集群:(高可用)1、环境准备:(每台均执行)系统版本:centos 7.7_1908Master1:192168.137.132 centos 7.7_1908 hostnamectl set-hostname master1Master2:192168.137.133 centos 7...原创 2020-05-07 18:05:09 · 538 阅读 · 0 评论 -
k8s-1.17.1集群部署-单主(二)
centos7启动k8s集群:(单master节点)k8s包提供了一些服务:k8s-apiserver,k8s-scheduler,k8s-contrller-manager,kubelet,kube-proxy;这些服务通过systemd进行管理,配置信息都集中存放在一个地方:/etc/kubernetes。这些服务可以运行在不同的主机上,master上可以运行k8s-scheduler,k...原创 2020-05-07 17:07:49 · 429 阅读 · 0 评论 -
k8s初探(一)
本片文字性阐述较多,但可以给读者在脑海中建立起k8s的认知架构,然后后续在k8s上的深入认识后,再次回头看,可以进一步加强对k8s的更高层次的认识和学习。K8s概述1、简介K8s是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。K8s一个核心...原创 2020-04-27 14:30:25 · 708 阅读 · 0 评论 -
ks8的数据管理---动态配置StorageClass
1、背景PV是运维人员来创建的,开发操作PVC,可是大规模集群中可能会有很多PV,如果这些PV都需要运维手动来处理这也是一件很繁琐的事情,所以就有了动态供给概念,也就是Dynamic Provisioning。而我们上面的创建的PV都是静态供给方式,也就是Static Provisioning。而动态供给的关键就是StorageClass,它的作用就是创建PV模板。创建StorageClass...原创 2020-04-30 17:48:10 · 2903 阅读 · 1 评论 -
ks8的数据管理---PV/PVC
1、背景所谓容器的Volume,其实就是将一个宿主机上的目录跟一个容器里的目录绑定挂载在了一起;volume 提供了非常好的数据持久化方案,不过在可管理性上还有不足:要使用 Volume,Pod 必须事先知道Volume来自哪儿,需要提前创建;Pod 通常是由应用的开发人员维护,而 Volume 则通常是由存储系统的管理员维护。开发人员要获得上面的信息:要么询问管理员;要么自己就是管理员。...原创 2020-04-30 17:13:35 · 1092 阅读 · 0 评论 -
k8s的健康性检查-Health Check
1、k8s健康性检查的默认方式k8s默认的健康检查机制:基于Dockerfile文件中的CMD或者ENTRYPOINT,如果进程退出时返回码为非零,则认为容器发生故障,k8s就会根据restartPolicy重启容器。1)docker的restartPolicy有一下4种:always:(无论以什么码退出,docker daemon都会尝试重启退出的容器,手动停止后,策略不再生效);...原创 2020-04-30 16:18:02 · 7261 阅读 · 0 评论 -
k8s1.15安装详细精华版(环境准备、etcd集群安装、harbor私服搭建、高可用集群部署)
一、环境准备1、硬件配置192.168.137.11 CentOS7.7.1908 2核2G+50G存储192.168.137.12 CentOS7.7.1908 2核2G+50G存储192.168.137.13 CentOS7.7.1908 2核2G+50G存储192.168.137.14 Cent...原创 2020-04-28 14:38:37 · 1670 阅读 · 2 评论