K8S
文章平均质量分 77
K8S相关知识
小魏的博客
给自己的歌
展开
-
总结:Loki
Loki 将日志转换为 stream 的原理是使用 label(标签)来识别和聚合相同的日志数据。当日志数据被收集和推送到 Loki 时,Loki 提取其中的 label 信息,并使用 label 来创建 stream。一个 stream 是一组具有相同标签集的日志条目。原创 2023-08-10 14:25:24 · 509 阅读 · 0 评论 -
总结:Prometheus存储原理
https://segmentfault.com/a/1190000041210003原创 2023-07-14 12:00:17 · 244 阅读 · 0 评论 -
总结:记一次docker调试镜像的问题
同事让帮忙部署一个应用到QKE,给了我镜像地址与配置文件。由于要将配置文件映射到容器中,我创建了configmap,然后应用中将configmap中key对应的内容映射到了容器中的配置文件中。但是我遇到了一个问题:容器频繁快速重启,且看不到日志。这就很麻烦了,因为没有日志我就看不到错误的原因,所以,当务之急是想办法获取到日志。之前,我们容器中打印日志,容器重启后,日志就没了,但是至少容器是启动了一会,可以进去看,但是这次这个应用启动太快,立即就挂了,根本没有给时间进入容器。原创 2023-06-09 11:43:11 · 1496 阅读 · 0 评论 -
总结:Grafana Mimir调研
Mimir原创 2023-04-23 11:17:00 · 1860 阅读 · 0 评论 -
总结:helm
域名#镜像参数#pod 副本数replicas:1。原创 2023-04-20 12:00:34 · 806 阅读 · 0 评论 -
总结:Grafana
Grafana使用学习原创 2023-03-17 15:55:15 · 5817 阅读 · 0 评论 -
总结:Linux内核相关
Linux内核的理解原创 2023-03-09 14:48:35 · 405 阅读 · 0 评论 -
总结:K8S可观测
Kubernetes Pod 异常排查思路https://juejin.cn/post/7184689377602175032原创 2023-01-10 17:35:24 · 888 阅读 · 1 评论 -
总结:Prometheus之PromQL操作符
总结:Prometheus之PromQL操作符原创 2022-11-25 10:59:33 · 3826 阅读 · 0 评论 -
总结:Prometheus常用指标
总结:Prometheus常用指标原创 2022-11-25 10:32:10 · 2167 阅读 · 0 评论 -
总结:Prometheus之PromQL语法
PromQL总结原创 2022-10-17 14:39:40 · 5173 阅读 · 0 评论 -
总结:Pod日志下载
Pod日志下载方式原创 2022-09-22 16:18:14 · 886 阅读 · 0 评论 -
总结:POD与容器的区别
pod与容器原创 2022-07-28 15:09:32 · 3544 阅读 · 0 评论 -
总结:K8S指标与Prometheus实现
K8S指标与prometheus实现梳理原创 2022-07-27 15:51:13 · 752 阅读 · 0 评论 -
总结:监控系统
监控系统总结原创 2022-04-08 09:20:12 · 3928 阅读 · 0 评论 -
总结:Prometheus长期存储方案
prometheus存储梳理原创 2022-07-27 14:59:34 · 10401 阅读 · 1 评论 -
总结:Prometheus匹配模式
Prometheus匹配模式记录原创 2022-07-15 17:30:35 · 12691 阅读 · 0 评论 -
总结:K8S之Volume存储数据
一、介绍我们知道,一个运行中的容器,默认情况下,对文件系统的写入,都是发生在其分层文件系统的可写层的,一旦容器运行结束,所有写入都会被丢弃。因此需要支持容器数据的持久化。在Docker中就有数据卷的概念,当容器删除时,数据也一起会被删除,想要持久化使用数据,需要把主机上的目录挂载到Docker中去。在K8S中,volume是kubernetes Pod中多个容器访问的共享目录。volume被定义在pod上,被这个pod的多个容器挂载到相同或不同的路径下。volume的生命周期与pod的生命周原创 2022-04-09 08:26:36 · 2083 阅读 · 0 评论 -
总结:K8S之网络
一、使用现状当前我们服务既有部署在虚机,也有部署在K8S上的,部署在虚机上的服务注册到eureka的地址很好理解,就是虚机的ip地址,那么问题来了,k8s上部署的服务在eureka上提供的地址是什么呢?直接说答案:是pod的地址。在K8S上的网络可以配置的,具体待调研,但是无论如何,eureka上注册的地址一定要是可访问的。二、K8S的网络基础K8S上的应用运行在容器之中,容器处于 Pod 之内。每个 Pod 都会附着在同一个大的扁平的 IP 网络之中,被称为 Pod 网络(通常是 V原创 2022-04-09 08:24:30 · 3242 阅读 · 0 评论 -
总结:K8S之yaml文件
一、介绍先提供个完整的定义案例apiVersion: v1 #必选,版本号,例如v1,版本号必须可以用 kubectl api-versions 查询到 .kind: Pod #必选,Podmetadata: #必选,元数据 name: string #必选,Pod名称 namespace: string原创 2022-04-09 08:25:22 · 733 阅读 · 0 评论 -
总结:K8S之对象模型
一、对象模型总览k8s可以看做是面向对象的,每类服务可看做是k8s的一个对象。这些对象由用户定义yaml,k8s的api负责创建。所有对象包含metadata(元数据)、spec(规范)、status(状态)三类基本信息。例如:k8s创建pod的api为:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#pod-v1-corekubectl 也会将yaml转成json发送到master节点。k8s中.原创 2022-04-09 08:25:38 · 2776 阅读 · 0 评论 -
总结:K8S持久化存储方案
一、名词介绍首先介绍几个 K8s 原生的概念名词:PV - PersistVolume: 可被 Pod 挂载的持久化数据卷在 K8s 中表示 PVC - PersistVolumeClaim: 用于动态管理的持久化存储资源请求对象,定义需要的存储类型,大小,访问方式等 StorageClass:定义动态管理行为的资源对象,一般由管理员维护,定义存储资源的来源,权限,分配回收策略等 provisioner:运行在集群中,执行实际管理动作的工作负载。主要承担数据卷的 create、delete 等原创 2022-04-08 09:21:53 · 7273 阅读 · 0 评论 -
总结:k8s之ConfigMap
一、介绍ConfigMap是一种API对象,用来将非加密数据保存到键值对中。可以用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap可以将环境变量配置信息和容器镜像解耦,便于应用配置的修改。如果需要存储加密信息时可以使用Secret对象。创建ConfigMap的方式有4种:通过直接在命令行中指定configmap参数创建,即--from-literal通过指定文件创建,即将一个配置文件创建为一个ConfigMap--from-file=<文件>通过指定目录创建,原创 2022-04-08 09:22:35 · 4981 阅读 · 0 评论 -
总结:Promethus配置文件
一、介绍Prometheus 启动的时候,可以加载运行参数-config.file指定配置文件,默认为prometheus.yml。在配置文件中我们可以指定 global, alerting, rule_files, scrape_configs, remote_write, remote_read 等属性。Prometheus的配置文件是YAML格式。Prometheus的解压包里自带了一个默认的配置文件prometheus.yml。让我们来看一下:global: scrape_....原创 2022-04-07 09:29:31 · 19665 阅读 · 1 评论 -
总结:K8S之pod配置
一、介绍在K8s中定义Pod中运行容器有两个维度的限制: 1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。 如: Pod运行至少需要2G内存,1核CPU 2. 资源限额:即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。 二、Requests与LimitsRequests: 就是需求限制,也叫软限制Limits:最大限制,也叫硬限制通常来说:Limits >= Requests 并且reques...原创 2022-04-06 10:39:14 · 3569 阅读 · 0 评论 -
总结:K8s之Event
Kubernetes事件(Event)是一种资源对象,用于展示集群内发生的情况。Kubernetes系统中的各个组件会将运行时发生的各种事件(例如,调度器做了什么决定,某些Pod为什么被从节点中驱逐)上报给apiserver事件(Event)通常用来记录集群内发生的状态变更,大到集群节点异常,小到 Pod 启动、调度成功等等。我们常用的kubectl describe命令和kubectl get events命令就可以查看相关资源的事件信息。apiserver将Event存储在Etcd内,强制执行保原创 2022-04-06 10:38:24 · 4838 阅读 · 0 评论 -
总结:K8s之Etcd
一、介绍Etcd被形容为Kubernetes集群的大脑,是 Kubernetes的关键组件,因为它存储了集群的整个状态:其配置,规格以及运行中的工作负载的状态。在Kubernetes世界中,etcd用作服务发现的后端,并存储集群的状态及其配置。Etcd被部署为一个集群,几个节点的通信由Raft算法处理。在生产环境中,集群包含奇数个节点,并且至少需要三个。关于 etcd本文的主角是 etcd。名称 “etcd” 源自两个想法,即 unix “/etc” 文件夹 和 “d” 分布式系统。“/原创 2022-04-06 09:25:39 · 15152 阅读 · 0 评论 -
总结:Java应用部署在K8S的注意事项
一、堆内存分配Docker容器模式下,我们可以给每个JVM实例所属的POD分配任意大小的内存上限(requests,limits)。比如,给hubble-biz-cm服务分配4G,给hubble-biz-host分配8G。如此一来,启动脚本就不好写成通用的了,指定3G也不是,指定6G也不是。Java提供了三个很有用的参数:MaxRAMPercentage、InitialRAMPercentage、MinRAMPercentage。有了这三个新增参数,我们就可以写个通用的DockerFile文件了原创 2022-04-06 09:21:09 · 693 阅读 · 0 评论 -
总结:Prometheus内置函数
一、介绍就如同SQL中有一些内置函数,PromQL中也存在一些函数,我们可以在进行PromQL表达式进行使用,完成一些数据的处理。学习函数前至少需要知道如下概念,因为函数的概念和传入的数据类型有关瞬时数据 (Instant vector): 包含一组时序,每个时序只有一个点,例如:http_requests_total 区间数据 (Range vector): 包含一组时序,每个时序有多个点,例如:http_requests_total[5m] 纯量数据 (Scalar): 纯量只有一个原创 2022-04-06 09:23:37 · 19289 阅读 · 0 评论 -
总结:Prometheus服务发现机制
一、介绍当我们使用各类exporter分别对系统、数据库和HTTP服务进行监控指标采集,对于所有监控指标对应的Target的运行状态和资源使用情况,都是用Prometheus的静态配置功能static_configs来手动添加主机IP和端口,然后重载服务让Prometheus发现。对于一组比较少的服务器的测试环境中,这种手动方式添加配置信息是最简单的方法。但是实际生产环境中,对于成百上千的节点组成的大型集群又或者Kubernetes这样的大型集群,很明显,手动方式捉襟见肘了。为此,Promet...原创 2022-04-06 09:24:00 · 5835 阅读 · 2 评论 -
总结:K8S之环境变量
一、介绍环境变量和普通的我们定义的变量其实含义类似的,想下我们Java类中普通的环境变量,一般作用是留给下面的方法去使用。本文中单独说的环境变量差不多是系统的环境变量,比如linux中我们可以通过env命令查看所有的环境变量,如下图:其中就有我们熟悉的:HOSTNAME。那么我们大致能知道环境变量的用途:系统或程序中使用。比如windows中的PATH,就是windows系统会使用,基于PATH去找执行文件。比如linux中HOSTNAME,不仅linux系统会使用,用户可能也会原创 2022-04-04 11:13:46 · 7227 阅读 · 0 评论 -
总结:yaml文件格式
一、基本语法1,区分大小写2,使用空格表示层级关系(缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格)3,不支持Tab键制表符缩进,只使用空格缩进4,"---"表示YAML格式,一个文件的开始,用于分隔文件间5,字符后缩进一个空格,如冒号,逗号,短横杆(-)等6,字符串默认不用加单引号和双引号,双引号不会转义里面的特殊字符,单引号会转移里面的字符7,"#”表示注释二、数据结构的Yaml表示1、Map数据结构Java表示public class..原创 2022-04-04 11:12:24 · 12086 阅读 · 0 评论 -
总结:Prometheus Operator
一、Operator介绍Operator是由CoreOS公司开发的用来扩展Kubernetes API的特定应用程序控制器,用来创建、配置和管理复杂的有状态应用,例如数据库、缓存和监控系统。Operator基于kubernetes的资源和控制器概念上构建,但同时又包含了应用程序特定的领域知识。创建Operator的关键是CRD(自定义资源)的设计。Operator是将运维人员对软件操作的知识代码化,同时利用Kubernetes强大的抽象来管理大规模的软件应用。目前CoreOS官方提供了几种Opera原创 2022-04-04 11:10:12 · 5805 阅读 · 0 评论 -
总结:Docker
一、介绍docker与VM的区别主要是什么?docker更轻量级,因为docker容器共用OS,只是通过命名空间,cgroup进行了资源使用隔离。下面列出的是容器的一些好处:敏捷应用程序的创建和部署:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。 持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性),支持可靠且频繁的 容器镜像构建和部署。 关注开发与运维的分离:在构建/发布时而不是在部署时创建应用程序容器镜像, 从而将应用程序与基础架构分离。 可观察性不仅可以显示操原创 2022-03-31 09:54:33 · 742 阅读 · 0 评论 -
总结:K8S
K8S总结原创 2022-03-30 10:30:28 · 325 阅读 · 0 评论 -
总结:Prometheus笔记
一、介绍Prometheus 是当下最流行的监控平台之一,它的主要职责是从各个目标节点中采集监控数据 将数据持久化到本地的时序数据库中 向外部提供便捷的查询接口 将告警消息推送到AlertManagerPrometheus 目前是监控领域比较成熟的一站式方案。Prometheus与其他监控方案的不同之处在于它是定时地从监控目标(Exporters)暴露的API中拉取指标,如果是监控目标是动态的,可以借助服务发现的机制动态地添加这些监控目标,另外它还会暴露执行PromQL(用来操纵时序数据的.原创 2022-03-29 15:45:13 · 2660 阅读 · 1 评论 -
总结:kubectl之kubeconfig配置
一、介绍我们一般使用kubectl去操作K8S集群,如部署Pod,获取node信息,获取pod信息,获取svc信息,删除某个svc等。那我们就需要有个目标,具体是操作哪个K8S集群,操作权限等。kubectl默认会从$HOME/.kube目录下查找文件名为config的文件,也能通过设置环境变量KUBECONFIG或者通过设置去指定其它 kubeconfig 文件。kubeconfig就是为访问集群所作的配置。比如我们131服务器的配置文件:执行命令:cat ~/.kube/con...原创 2022-03-29 14:35:48 · 21038 阅读 · 0 评论 -
总结:K8S之服务注册与发现
一、服务注册服务注册过程指的是在服务注册表中登记一个服务,以便让其它服务发现。下图是service注册与发现流程(service简称svc):Kubernetes 使用 DNS 作为服务注册表。为了满足这一需要,每个Kubernetes集群都会在 kube-system 命名空间中用 Pod 的形式运行一个 DNS 服务,通常称之为集群 DNS。每个 Kubernetes 服务都会自动注册到集群 DNS 之中。service注册过程大致如下:1、向 API Server 用..原创 2022-03-28 15:57:21 · 9841 阅读 · 0 评论