
kubernetes
文章平均质量分 64
默子昂
9成的错误都是人为的
展开
-
K8S 报错笔记--持续更新
代码】K8S 报错笔记--持续更新。原创 2022-08-08 13:40:51 · 6078 阅读 · 0 评论 -
prometheus使用 (番外篇) prometheus-operator部署
我们上一章其实监控还缺少很多东西,我们可以通过部署已经写好整合包作为案例来编写适合自己环境的监控指标收集,我找到了两个版本在这里演示下方法1 通过yaml文件进行部署#项目地址https://github.com/coreos/kube-prometheus先将之前我们部署的停掉kubectl delete -f .1、拉取软件包wget https://gitee.com/hackerwjz/kube-prometheus/repository/archive/ma.原创 2022-02-18 17:18:47 · 1944 阅读 · 1 评论 -
prometheus使用 (二十) 监控Kubernetes集群
之前我们都是直接去抓取部署在宿主机上服务暴露出来的指标进行监控K8是什么就不说了,本章主要是说一下在宿主机和容器中prometheus该如何监控K8S集群一、宿主机prometheus监听K8其实比较常见的还是在容器中跑prometheus,但在业务中也碰到过在宿主机部署的情况1、监听node资源vi /etc/prometheus/prometheus.ymlglobal: scrape_interval: 1m evaluation_interval:..原创 2022-02-18 11:48:43 · 2957 阅读 · 0 评论 -
kubernetes pod更新策略
当集群内大量pod的配置需要更新时,我们通常会先选择部分pod进行更新,而不是全部同时更新#我们可以在yaml文件中添加以下配置spec: updateStrategy: type: OnDelete #删除策略#这样当控制器的配置更新后,必须手动删除pod才会更新配置...原创 2021-05-31 09:30:39 · 1019 阅读 · 0 评论 -
kubernetes报错笔记 (一) calico报错
错误1 read udp xxx:29270->169.169.0.10:53: i/o timeout read 主机地址加端口 >> 169.169.0.10:53好像是这个解决方法#错误原因vi /etc/hosts 文件中缺少以下配置127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localho原创 2021-05-31 09:03:35 · 17815 阅读 · 0 评论 -
prometheus使用 (十九) 标签重写
在prometheus的target实例中都包含一些Metadata标签信息,如下#当prometheus加载target实例后,会有一些默认的标签#以下标签都会声明prometheus该如何从target实例中获取指标__address__ #当前Target实例的访问地址<host>:<port>__scheme__ #采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS__metrics_path__ .原创 2021-04-21 17:23:06 · 6906 阅读 · 3 评论 -
prometheus使用 (十七) alertmanager特性--静默
3. 静默静默提供了一个简单的机制可以快速根据标签对告警进行静默处理。如果接收到的告警符合静默的配置alertmanager则不会发送告警通知,静默需要在alertmanager的web页面上配置原创 2021-04-09 17:52:49 · 2049 阅读 · 0 评论 -
prometheus使用 (十六) alertmanager特性--告警抑制
2. 抑制抑制是指当某?告警发出后,可以停?重复发送由此告警引发的其它告警的机制。例如,当集群不可访问时触发了?次告警,通过配置Alertmanager可以忽略与该集群有关的其它所有告警。这样可以避免接收到?量与实际问题?关的告警通知。抑制机制同样通过Alertmanager的配置?件进?设置。抑制是指某一告警发出后,可以停止重复发送由此告警引发的其他告警的机制(我们也不想,节点一宕机,pod全给你报错吧)例如: 集群不可访问时触发了一次告警,通过配置alertmanager可以忽...原创 2021-04-09 16:58:56 · 6121 阅读 · 2 评论 -
prometheus使用 (十五) alertmanager特性--分组
二. alertmanager的特性Alertmanager除了提供基本的告警通知能力以外,还主要提供了如:分组、抑制以及静默等告警特性1. 分组分组机制可以将详细的告警信息合并成一个通知。在某些情况下,比如由于服务器宕机导致大量的告警被同时触发,在这种情况下分组机制可以将这些被触发的告警合并为一个告警通知密码一次性接收大量的告警通知,而无法锁定问题例如: 当集群中有数百个正在运行的服务实例,并且为每一个实例都设置了告警规则加如此时发送了网络故障,可能导致大量的服务实例无法连原创 2021-04-09 11:35:13 · 6072 阅读 · 0 评论 -
prometheus使用 (十二) 简单告警配置
Alertmanager除了提供基本的告警通知能?以外,还主要提供了如:分组、抑制以及静默等告警特性1.分组原创 2021-04-08 11:06:16 · 4125 阅读 · 4 评论 -
prometheus使用 (十四) 告警模板配置
5. AlertManager 配置自定义邮件模板看到上边默认发送的邮件模板,虽然所有核心的信息已经包含了,但是邮件格式内容可以更优雅直观一些,那么,AlertManager 也是支持自定义邮件模板配置的,首先新建一个模板文件 email.tmpl。cat > /etc/alertmanager/alertmanager.yml <<EOFglobal: resolve_timeout: 5m smtp_from: '2665483426@qq.com' sm原创 2021-04-08 15:45:28 · 5746 阅读 · 0 评论 -
prometheus使用 (十三) QQ邮件、企业微信告警
四. 配置邮件告警我们这里以qq邮箱为案例,不过在配置之前我们需要先获取你邮箱的一个安全码用于向你的邮箱发送信息配置qq邮箱安全码添加alertmanager报警信息global: resolve_timeout: 5m smtp_from: '2665483426@qq.com' smtp_smarthost: 'smtp.qq.com:465' smtp_auth_username: '2665483426@qq.com' smtp_auth_pas原创 2021-04-08 15:33:02 · 6140 阅读 · 9 评论 -
prometheus使用 (十一) alertmanager集群部署
一. alertmanager是做什么的官方地址https://prometheus.io/还记得上面这张图不?我们前面已经了解到如何去做服务发现、节点资源监控、可视化等等我们前面做了这么多监控收集,为的就是在出现故障的时候及时给我们提个醒,这章就是怎么去做报警规则不过再此之前,我们需要先知道alertmanager是怎么去处理报警的,如下图中所示二. 告警工作原理说明#首先在prometheus定义报警规则,比如我们通过判断up指标中节点的值是否等于1来判断服..原创 2021-03-31 17:04:50 · 2059 阅读 · 5 评论 -
prometheus使用 (十) 服务发现
在之前我们的服务发现主要依赖于静态的服务发现,如下对于指定的每个目标,在抓取配置中手动列出他们的"ip"和"端口"这种方法在监控主机较少的情况下还行,但不适合大规模的集群尤其不适合用于使用容器和基于云的实例的动态集群,这些实例经常会出现变化的,创建或消耗的情况Prometheus通过使用"服务发现"来通过自动化的机制来检测、分类和试别新的变更的目标。服务发现分类#服务发现的方法大致有以下3种1. file_sd_configs # 基于文件列表来服务发现2....原创 2021-03-29 14:53:33 · 1424 阅读 · 1 评论 -
prometheus使用 (九) 查询持久化--记录规则
前言#当你用promQL查询一个信息,然后再查询下一个记录时,上一个记录就会消失#而查询的持久化,可以帮助我们持久的使用查询语句,实现的方法主要有3种1. 记录规则 #根据查询创建新指标2. 警报规则 #以查询生成警报3. 可视化规则 #grafana等仪表盘上的语句案例 基于5分钟计算cpu使用率#创建记录规则目录mkdir /etc/prometheus/rules && cd $_#添加规则文件cat > no...原创 2021-03-26 16:11:19 · 1249 阅读 · 0 评论 -
prometheus使用 (八) 小结--综合查询
前面我们看了一大堆的语法,这章不开新东西。主要是展示一些常用的案例o(* ̄▽ ̄*)o1. 查询cpu使用率#还记得irate不? 计算区间向量中的最后的两个值来算速率irate(node_cpu_seconds_total{instance="192.168.1.21:9100"}[5m])#但是cpu中的模式比较多,并不方便我们使用...原创 2021-03-25 16:50:05 · 4551 阅读 · 2 评论 -
prometheus使用 (七) 运算操作符、聚合查询、子查询
通过之前的一些知识,我们已经了解到一些基本的查询语句现在我们将使用一些花里胡哨的查询语句,可能因为案例过大导致篇幅过长,可以分段观看一. 聚合查询聚合操作符,我们可以获取一个即时向量并聚合他的元素,从而得到一个新的瞬时向量这个向量通常包含更少的元素,像这样的及时向量的每次聚合都以我们在垂直聚合中描述的方式工作#常用的聚合函数类型sum #求和。min #最小值max #最大值avg #平均值stddev #标准差stdvar #方差count #元素.原创 2021-03-23 12:55:08 · 38673 阅读 · 7 评论 -
prometheus使用 (六) 核心监控指标了解
在上⼀⼩节中,我们已经看到了类似于irate()这样的函数,可以帮助我们计算监控指标的增⻓率。除此之外, Prometheus还提供了其它⼤量的内置函数,可以对时序数据进⾏丰富的处理。本⼩节将带来读者了解⼀些常⽤的内置 函数以及相关的使⽤场景和⽤法...原创 2021-03-19 11:30:16 · 4638 阅读 · 0 评论 -
prometheus使用 (五) 函数使用
为了查询的多样化,promQL查询语句内置了大量的函数通过这些语句我们可以快捷的去查询想要的数据,以下案例1. absent() 取布尔值#先获取一个瞬时向量作为参数,然后判断这个瞬时向量是否有值#如果该向量存在值,则返回空向量#如果该向量没有值,则返回不带标签名称的时间序列 并返回值为1#存在值absent(prometheus_http_requests_total)#不存在值absent(prometheus_http_requests_totalxxx)#这对于.原创 2021-03-18 09:59:00 · 13306 阅读 · 0 评论 -
prometheus使用 (四) 瞬时向量与区间向量
PromQL是prometheus内置的查询语言,与mysql的select类似,在prometheus中查询数据、告警、可视化中都非常有用一. 基于指标查询node_cpu_seconds_total返回...node_cpu_seconds_total{cpu="0", instance="192.168.1.21:9100", job="node", mode="user"} 690.78node_cpu_seconds_total{cpu="1", instance="1.原创 2021-03-17 14:10:25 · 6003 阅读 · 1 评论 -
prometheus使用 (三) Grafana可视化
前面我们简单的做了一些指标的收集,但是我们需要了解一些基本的知识才方便后面的学习一. prometheus-service文件配置说明#prometheus的配置和大部分服务类似1. 直接使用命令行+参数执行 #--参数=值2. 将参数放在文件中,并在启动时指定路径 #--参数=文件vi /usr/lib/systemd/system/prometheus.service[Unit]Description=The Prometheus mon.原创 2021-03-11 15:36:02 · 1291 阅读 · 1 评论 -
prometheus使用 (二) 监控主机节点
上一章,我们部署了prometheus服务,但是点开页面发现基本都是空白的>︿<这是因为没有添加要监控的对象是什么,我们来简单的操作一下一. 监控prometheus本身#我们先访问一下当前主机的httphttp://192.168.1.20:9090/metricsprometheus是通过使用http请求方法,请求客户端节点上的端点信息来收集数据的同时,prometheus也会用相同的方法去暴露自身的指标数据,所以是可以去监控自身的也可能你会说,这不是已经收集到了吗?.原创 2021-03-08 16:09:35 · 3824 阅读 · 1 评论 -
prometheus使用 (一) 部署服务
前面基础用法我们已经有所了解了,但部署永远都是第一步。如果想要稳定运行下去集群的监控是必须的这里我们使用一个新的工具,"Prometheus"来监控我们的集群。不过再此之前,我们要了解一些不要的信息一. 监控的目标#一个监控系统需要能够有效的⽀持"⽩盒监控"和"⿊盒监控"#可以在系统或者服务在发⽣故障时能够快速通知相关的⼈员进⾏处理。1.黑盒监控 #通常是在外部对主机或服务的观察方式 #比如curl的状态码、能否ping通、端口或进程什么的2.白盒监控 .原创 2021-03-07 21:35:10 · 1679 阅读 · 3 评论 -
kubernetes使用 (二十) 动态pv存储
三. pv卷的类型1.静态pv卷集群管理员创建一些 PV。它们带有可供群集用户使用的实际存储的细节(连接的ip等等)它们存在于 Kubernetes API 中,可用于消费(pvc调用绑定) #如上案例2.动态pv卷当管理源创建的pv卷 全部都不匹配用户的pvc时,集群可能会尝试动态的pvc创建pv卷(就是说,你新建了一个应用,标名了pvc,但是没有pv,他就会帮你建立一个pv)而这个机制 就是"StorageClass",pvc必须请求[存储类],并且管理源必须创建原创 2021-02-02 15:58:02 · 1240 阅读 · 2 评论 -
kubernetes使用 (十九) 网络存储资源--nfs
简单来说就是数据持久化的一堆事ヾ(≧▽≦*)o一. nfs网络存储#使用nfs作为数据存储,首先要找一台作为nfs服务器#我这里使用192.168.1.22部署#安装服务(所有需要nfs的节点都要有)yum -y install nfs-utils#添加nfs信息echo "/data/nfs *(rw,no_root_squash)" >> /etc/exports#创建目录mkdir /data/nfs -psystemctl restart r.原创 2021-02-02 14:59:28 · 416 阅读 · 0 评论 -
kubernetes使用 (十八) helm工具--变量及版本更新
通过传递参数,动态渲染模板,让yaml文件内容,动态传入参数[root@k8s-master01 mychart]# lscharts Chart.yaml templates values.yaml# 在chart有values.yaml文件,定义yaml文件全局变量yaml文件的复用性#我们大部分部署的服务结构基本一样,不同之处大致分为几种1. image2. tag3. label名称4. port5. replicas1. 定义全局变量[roo..原创 2021-02-01 15:30:55 · 1877 阅读 · 0 评论 -
kubernetes使用 (十七)helm工具--自定义chart
自定义chart包1. 使用名称创建chart目录[root@k8s-master01 ~]# helm create mychart[root@k8s-master01 ~]# cd mychart/[root@k8s-master01 mychart]# lscharts Chart.yaml templates values.yaml#目录结构说明charts #普通目录Chart.yaml #用于配置chart 的基本信息templates #自原创 2021-02-01 10:59:46 · 880 阅读 · 0 评论 -
kubernetes使用 (十六)helm工具部署 及coredns组件
我们在之前想要部署一个应用需要做些什么?1. 编写yaml文件 #kubectl create deployment web --image=nginx:1.15 --dry-run -o yaml > deployment.yaml#kubectl create -f deployment.yaml2. 对外暴露端口#kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --dry-run.原创 2021-02-01 10:34:21 · 1461 阅读 · 0 评论 -
kubernetes使用 (十五) ConfigMap 配置文件挂载
configmap和secret类似,不过configmap存放的非加密的信息,常用于存放服务的配置文件一. 以volume形式挂载configmap文件1. 创建配置文件#创建一个配置文件 (假设是redis)cat > redis.properties <<EOFredis.host=127.0.0.1redis.port=6379redis.password=123456EOF2. 创建confimap#获取yamlkubectl create.原创 2021-01-25 18:02:35 · 3392 阅读 · 0 评论 -
kubernetes使用 (十四) Secret 加密凭证
(Secret 这个单词我百度了一下,意思是"秘密" (。・∀・)ノ) Secret主要是用来对数据进行加密,并将加密后的数据存放在etcd中, 可以在使用时让pod容器,以挂载的方式进行访问 他给我们提供了一定的安全性,所以会经常用来存放一些密码、密钥等重要的数据Secret 常用的类型1. Opaque #base64 编码格式的 Secret,用来存储密码、密钥等; #但数据也可以通过base64 –decode解码得到原始数据,所有加密性很弱。...原创 2021-01-25 16:53:40 · 2561 阅读 · 1 评论 -
kubernetes使用 (十三)controller控制器--job&cronjob
案例 job 一次性任务apiVersion: batch/v1kind: Jobmetadata: name: pi #做个圆周率spec: template: spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Ne.原创 2021-01-20 14:50:21 · 308 阅读 · 0 评论 -
kubernetes使用 (十二)controller控制器--DaemonSet
DaemonSet控制器会在所有节点上运行一个守护进程的pod,多用于指标、日志或特殊信息采集等并且后续添加的新节点也会自动分配到一个pod,每个节点最多会运行一个pod副本案例apiVersion: apps/v1kind: DaemonSetmetadata: name: ds-test labels: app: filebeatspec: selector: matchLabels: app: filebeat template原创 2021-01-19 17:38:38 · 316 阅读 · 0 评论 -
kubernetes使用 (十一)controller控制器--SatefulSet(无头service)
SatefulSet有状态服务控制器什么是有状态服务? 什么是无状态服务?1.无状态服务的特点1. 认为pod都是一样的,创建的副本都是一样的2. 没有顺序要求 #没有启动顺序要求3.不用考虑在那个node上运行4. 随意进行伸缩和扩展#像我们之前部署的deployment就是无状态服务的控制器2.有状态服务的特点上面的因素都要考虑到让每个pod都是独立的,保持pod的启动顺序和唯一性##通过 唯一网络标识符、持久存储区分##有序, 比如mysql...原创 2021-01-19 17:14:21 · 961 阅读 · 0 评论 -
kubernetes使用 (十一)service--ingress
ingress(SVC)#正常情况下,如果我们想要客户端访问时是一个https安全的请求,那么我们没必要在所有的的web服务器上部署ssl,我们只要在nginx上部署ssl即可,因为nginx与客户端建立连接的时候就使用443端口加密的。nginx会反向代理到后台的apache节点上,他们之前是采用http协议的。因为调度时是集群内部。没有关系#但是在k8s上不能这么做如果我们采用SVC方案,必须要在所有主机上部署ssl,才能做一个加密连接. ssl非常消耗资源。k8s官方提供了一种方法 "原创 2021-01-19 15:51:12 · 523 阅读 · 0 评论 -
kubernetes使用 (十)常见service使用
感觉这个章没什么写的,会的会,不会的也会 (~﹃~)~zZ一. 什么是service定义一组pod的访问规则,用于暴露controller控制器二. service存在的意义1. 防止pod失联我们前面说了,pod是短暂的。每当pod死亡后重新建立的pod所使用的ip都是不同的为了防止pod新建后其他pod找不到这个服务,就有了服务组的概念#前面说了,service的作用就是为一组pod提供一个访问接口比如,我们一个网站的构成是由 前端、后端、数据库组成..原创 2021-01-19 14:39:56 · 1120 阅读 · 4 评论 -
番外篇 etcd服务无法启动的修复方法
今天有一个环境的master节点的挂载掉线了,恢复之后该节点的etcd就起不来了。猜测应该是和其他etcd节点数据不同步导致的,下面我们模拟一下案例#查看集群组件状态[root@k8s-master01 ~]# kubectl get csNAME STATUS MESSAGE ERRORscheduler Healthy ok controller-mana..原创 2021-01-18 18:00:53 · 13978 阅读 · 2 评论 -
kubernetes使用 (九)pod健康检查
其实这章去年就该发了U•ェ•*U(今天2021.1.7日)不知道为什么打开这章就开始头晕了>﹏<k8s pod健康检查 我们平时检查pod状态好不好,无非就是看pod的running状态,但是有很多情况下,pod虽然是running,但是却无法提供服务 我们作为管理员不能总是等到客户或其他同事发现连接不上了才去修复吧,而健康检查就是定期模拟客户端去访问来确定是否健康的一个机制1. liveness Probe(存活检查)如果检查失败,将杀死容器,根据restar...原创 2021-01-08 11:24:31 · 2300 阅读 · 3 评论 -
kubernetes使用 (八)controller控制器--deployment
1. 什么是controller(控制器) controller控制器是在k8s集群中管理和运行容器的一个对象,和pod这种概念性的不同,他是真实存在的,用于保证pod副本数量为预期值。 2. pod和Controller关系 总的来说,Controller(控制器)是pod的一个管理者,Controller(控制器) 需要保证集群内一组pod能够始终保持在某个期望的状态正常运行(比如,有一个容器挂掉了,会根据这个副本的期望值去创建新的副本来保证副本一定满足某个数量) 这...原创 2021-01-07 17:12:02 · 865 阅读 · 0 评论 -
小技巧(九) 快速查询指定服务是否开机自启
前两天要查询一下集群组件是否开机自启,包含了多个集群,总不能一个一个上去看吧查看节点node组件开机自启systemctl list-unit-files --type service |grep enabled | grep -E "docker|kubelet|kube-proxy"#-E 用于扩展正则,多个匹配项用"|"隔开,表示or的意思查看节点master组件开机自启systemctl list-unit-files --type service |gre...原创 2021-01-05 16:25:52 · 873 阅读 · 0 评论 -
kubernetes使用 (七)Pod调度策略--污点和容忍
前面的nodeselector和nodeAffinity 都是pod调度到某个节点,pod属性,调度时实现而污点是属于节点运行级的调度策略,用于限制节点上是否运行pod一. 污点#污点常用的值1. NoSchedule #这个节点一定不被调度2. PreferNoSchedule #尽量不被调度,类似软亲和3. NoExecute #不会调度,并且还会驱逐node已有的pod案例一 NoSchedule (不可调度)查看污点[root@k...原创 2021-01-05 11:28:46 · 1286 阅读 · 0 评论