一彡十
骚话嘴边讲,比数心中留
展开
-
Helm 基础
参考:感谢曾林https://blog.51cto.com/u_14625168/2454481helm介绍 java 使用 maven;前端使用 npm;python 使用 pip;运维使用 yum 或 apt。分工不同,诉求却相同,都希望有一种资源管理工具,可以方便查找、下载、安装、使用和分发程序包。helm 也一样,它是 k8s 的资源包管理工具。它使我们操作的对象不再是单个资源,而是一个实体。比如我们需要一个负载均衡的 web 服务,如果不使用 h...原创 2021-09-08 14:51:19 · 185 阅读 · 0 评论 -
以二进制形式安装prometheus,并接收告警邮件
概述快一年没写博客了,哈哈哈,真懒啊我。今天,简单的介绍一下prometheus二进制的安装,我之前都是使用operator安装,今天返璞归真一下。prometheus是啥? 它是一个十分强大的监控系统,特别适合用于容器监控。其他的我就不多说了,网上有非常多的资料。下载 首先去到官网:点击,有个download tag,我们点击他,就能看到我们需要下载的内容:prometheus、altermanager以及node_export; 我们可以挨个下载后,在上传到linu...原创 2021-03-16 16:11:25 · 163 阅读 · 2 评论 -
使用feign调用prometheus接口
@FeignClient@RequestMapping("/api/v1")public interface PrometheusFeignCtr { @PostMapping(value = "/query_range", consumes = "application/x-www-form-urlencoded") PostResultVo queryRange(@RequestParam("query") String query, @RequestParam("start").原创 2021-09-01 17:44:13 · 539 阅读 · 0 评论 -
Springboot 集成 prometheus之暴露端口
先简单的暴露springboot的prometheus端口暴露给prometheus,让它采集jvm的信息。maven依赖: <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <scope>runtim原创 2021-09-15 17:28:23 · 761 阅读 · 0 评论 -
JMX Exporter 暴露JVM给P8s
引自https://segmentfault.com/a/1190000037451226什么是 JMX Exporter ?JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转换为 Prometheus 所认知的 metrics 格式,以便让 Prometheus 对其进行监控采集。那么,JMX 又是什么呢?它的全称是:Java Management Extensions。 顾名思义,是管理 Java 的一种扩展框架,JMX E原创 2021-09-15 17:47:55 · 404 阅读 · 0 评论 -
prometheus临时记录-时间偏移
例如,如通过以下表达式可以选择最近 5 分钟内的所有样本数据:http_requests_total{job="prometheus"}[5m]时间偏移在瞬时向量表达式或者区间向量表达式中,都是以当前时间为基准。http_request_total{} # 瞬时向量表达式,选择当前最新的数据http_request_total{}[5m] # 区间向量表达式,选择以当前时间为基准,5分钟内的数据而如果我们想查询,5 分钟前的瞬时样本数据,或昨天一天的区间内的样本数据呢?这个时候原创 2021-10-29 17:19:03 · 1402 阅读 · 0 评论 -
prometheus暴露java业务数据,并进行监控告警
(1)暴露指标数据maven: <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <scope>runtime</scope> </dependency&g原创 2021-10-28 10:27:03 · 878 阅读 · 0 评论 -
Fatal: can‘t open lock file /run/xtables.lock: Permission denied
解决:使用以下命令安装istioistioctl install --set values.global.proxy.privileged=true --set values.global.proxy.enableCoreDump=true --set profile=demo 使用此命令安装istio,就可以在 istio-proxy 容器中使用:iptables -L 命令,否则将会无权限...原创 2022-04-15 15:19:58 · 3703 阅读 · 0 评论 -
使用kind安装k8s
1.安装`docker`下载yum updateyum install -y yum-utils \ device-mapper-persistent-data \ lvm2yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install -y docker-ce docker-ce-cli container原创 2022-03-29 18:17:21 · 1678 阅读 · 0 评论 -
编写一个operator
helloworld-operatora k8s operator 、operator-sdkOperator参考https://jicki.cn/kubernetes-operator/https://learnku.com/articles/60683https://opensource.actionsky.com/20210706-kubernetes-operator/安装(1)安装operator-sdk、go环境(2)创建helloworld-operator目录,执行以下原创 2022-01-27 16:11:29 · 927 阅读 · 0 评论 -
go: github.com/onsi/[email protected]: Get “https://proxy.golang.org/github.com/onsi/ginkgo/@v/v1.16.4.
docker build的时候,出现这种错误# Build the manager binaryFROM golang:1.16 as builderWORKDIR /workspace# Copy the Go Modules manifestsCOPY go.mod go.modCOPY go.sum go.sum# cache deps before building and copying source so that we don't need to re-download a原创 2022-01-27 09:58:24 · 1227 阅读 · 0 评论 -
将自制的charts上传到harbor
将自制的charts上传到harbor(1)harbor中创建项目我这里创建了一个charts项目。(2)在运行helm的机器上,添加helm repohelm repo add pri-repo http://10.10.13.205:5001/chartrepo/chartspri-repo:repo名称http://10.10.13.205:5001/chartrepo/charts:仓库地址,chartrepo是指charts这个项目的chartrepo路径。chartrepo是ha原创 2022-01-24 19:06:29 · 795 阅读 · 0 评论 -
gRPC(一) 创建一个可运行的hello world
准备学一周的gRPC,希望能一天更新一篇关于gRPC的内容,今天是开篇,直接使用gRPC启动运行一个helloworld 示例。关于gRPC的概念,目前我自己还不是很清楚,这个放后面再说。首先gRPC有个官网:gRPC查看 Docs,由于我目前使用go语言,所以在Languages中选择Go,然后点击 Quick start 进行快速开始...原创 2021-12-07 16:06:16 · 342 阅读 · 0 评论 -
kubernetes 优雅终止
参考:kubernetes 最佳实践: 优雅终止 | roc云原生处理 SIGTERM 代码示例 | kubernetes 学习笔记容器终止流程我们先了解下容器在 Kubernetes 环境中的终止流程:Pod 被删除,状态置为Terminating。 kube-proxy 更新转发规则,将 Pod 从 service 的 endpoint 列表中摘除掉,新的流量不再转发到该 Pod。 如果 Pod 配置了preStop Hook,将会执行。 kubelet 对 Pod 中各...原创 2021-11-18 10:46:43 · 771 阅读 · 0 评论 -
k8s相关面试准备
KeepalivedKeepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。Keepalived的三个重要功能:管理LVS负载均衡软件、实现LVS集群节点的健康检查中、作为系统网络服务的高可用性。Keepalived高可用服务对之间的故障切换转移,是通过 VRR原创 2021-11-03 14:08:39 · 118 阅读 · 0 评论 -
pod yaml 详解
#apiVersion: v1#kind: Namespace#metadata: # name: ns-showdoc# labels: # name: ns-showdoc#---apiVersion: v1 #本版号,查询:kubectl api-versionkind: Service #创建的资源,可以时pod,server,Deployment等等metadata: #元数据必...原创 2021-10-31 22:13:01 · 847 阅读 · 0 评论 -
kubernetes源码 Windows IDEA编译调试
参考:云原生实践-kubernetes源码本地IDE编译调试_布衣之旅-CSDN博客(1)安装go环境这个自行百度(2)导入项目goland导入项目,首先下载k8s的源码,然后放在GOPATH下。然后通过idea打开项目。项目目录如下:由于工程需要下载依赖的代码包,国内直接连接谷歌相关东西下载比较慢,这里可以配置相应的代理。https://goproxy.cn操作依赖包:自动下载相应的代码依赖包之后,需要将部分依赖包进行拷贝,从staging目录拷贝到...原创 2021-10-25 17:17:02 · 533 阅读 · 0 评论 -
go build: -i flag is deprecated# k8s.io/kubernetes/cmd/kube-apiserver/appapp\server.go:406:70: und
将我们在linux编译中生成的zz_generated.openapi.go,拷贝到pkg/generated/openapi然后启动,已经不报这个错了。现在是etcd的错了。原创 2021-10-25 15:10:16 · 247 阅读 · 0 评论 -
centos 7 编译 kubernetes源码
前置条件:需要git、golang、gcc等环境安装git yum install git安装golang版本必须为1.12,不然瞎报错。安装golang,参考:linux下go环境配置 - Go语言中文网 - Golang中文社区1.进入官网https://golang.org/dl/下载,然后上传到虚拟机2.解压,然后配置环境变量tar zxvf go1.12.5.linux-amd64.tar.gz移动到 /usr/local,...原创 2021-10-25 14:28:13 · 121 阅读 · 0 评论 -
Docker 常见面试题汇总
1. Docker 和虚拟机有啥不同?答:Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统。2. Docker 安全么?答:Docker 利用了 Linux 内核中很多安全特性来保证不同容器之间的隔离,并且通过签名机制来对镜像进行验证。大量生产环境的部署证明,Docker 虽然隔离性无法与虚拟机相比,但仍然具有极高的安全性。3. 如何清理后台停止的容器?答:可以使用 sudo docker rm $sudo( docker ps -a -q) 命令。4..原创 2021-09-29 20:55:22 · 1786 阅读 · 0 评论 -
DevOps & CI/CD 常见面试题汇总
DevOps 术语和定义1. 什么是 DevOps答:用最简单的术语来说,DevOps 是产品开发过程中开发(Dev)和运营(Ops)团队之间的灰色区域。DevOps 是一种在产品开发周期中强调沟通,集成和协作的文化。因此,它消除了软件开发团队和运营团队之间的孤岛,使他们能够快速,连续地集成和部署产品。2. 什么是持续集成答:持续集成(Continuous integration,缩写为 CI)是一种软件开发实践,团队开发成员经常集成他们的工作。利用自动测试来验证并断言其代码不会与现有代码库产生冲原创 2021-09-29 20:48:56 · 1998 阅读 · 0 评论 -
kafka manager
---apiVersion: apps/v1kind: Deploymentmetadata: namespace: monitoring name: kafka-managerspec: replicas: 1 selector: matchLabels: app: kafka-manager template: metadata: labels: app: kafka-manager spec: v.原创 2021-09-28 17:21:01 · 104 阅读 · 0 评论 -
etcd记录
参考etcdctl命令工具-V3 · Kubernetes 学习笔记Quickstart | etcd1. 简述 etcd 及其特点?答:etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于 Go 语言实现。特点:l 简单:支持 REST 风格的 HTTP+JSON APIl 安全:支持 HTTPS 方式的访问l 快速:支持并发 1k/s原创 2021-09-27 20:04:37 · 85 阅读 · 0 评论 -
Kubernetes面试
1.简述etcd及其特点?答:etcd是CoreOs团队发起的开源项目,是一个管理配置信息和服务发现的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于GO语言实现。特点:简单:支持Rest风格的HTTP+JSON API安全:支持HTTPS方式的访问快速:支持并发1k/s的写操作可靠:支持分布式结构,基于Raft的分布式一致性算法2.简述etcd的使用场景?(1)服务发现。服务发现主要解决在同一个分布式集群中的进程或服务,要如何才能找到对方并建原创 2021-09-27 19:45:09 · 90 阅读 · 0 评论 -
docker & kubernetes 面试
k8s 创建一个pod的详细流程,涉及的组件怎么通信的?(1)客户端创建一个请求,调用apiserver的restful接口(2)apiserver处理请求,将pod信息存储到etcd中(3)kube-schedule通过apiserver提供的接口,监控到未绑定node的pod,然后尝试为他分配node节点。schedule打分选择出一个最合适的节点,然后进行pod的绑定节点操作(4)将pod绑定节点后的信息,存储到etcd中(5)随后对应节点kubelet接收到apiserver的事原创 2021-09-16 11:21:09 · 116 阅读 · 0 评论 -
如何设置容器内的DNS策略?
通过dnsPolicy标记每个Pod配置不同的DNS策略:None:表示空的DNS设置,这种方式一般用于想要自定义DNS配置的场景,而且,往往需要和dnsConfig配合一起使用达到自定义DNS的目的。 Default:有人说Default的方式,是使用宿主机的方式,这种说法并不准确。 这种方式其实是让kubelet来决定使用何种DNS策略。而kubelet默认的方式,就是使用宿主机的 /etc/resolv.conf,但是kubelet是可以灵活来配置使用什么文件来进行DNS策略的,我们完全可以使原创 2021-09-10 14:08:58 · 934 阅读 · 0 评论 -
prometheus 的 relabel 配置
本文简单介绍一下,prometheus如何修改指标的labels;在Prometheus所有的Target实例中,都包含一些默认的Metadata标签信息。可以通过Prometheus UI的Targets页面中查看这些实例的Metadata标签的内容:默认情况下,当Prometheus加载Target实例完成后,这些Target时候都会包含一些默认的标签:__address__:当前Target实例的访问地址<host>:<port> __scheme__:采集目原创 2021-03-22 20:05:21 · 413 阅读 · 0 评论 -
kubernetes之StatefulSet
StatefulSet的使用场景 Kubernetes使用StatefulSet来搭建有状态的应用集群(MongoDB、 MySQL等) , 能够保证各应用实例在创建和运行的过程中, 都具有固定的身份标识和独立的后端存储; 还支持在运行时对集群规模进行扩容、 保障集群的高可用等非常重要的功能。原创 2020-01-09 10:07:38 · 345 阅读 · 0 评论 -
kubernetes之service
Service概念Service是Kubernetes的核心概念, 通过创建Service, 可以为一组具有相同功能的容器应用提供一个统一的入口地址, 并且将请求负载分发到后端的各个容器应用上。Service使用label标签选择器标识哪些pod属于哪些服务。查看服务,代码清...原创 2020-01-07 09:06:35 · 253 阅读 · 0 评论 -
kubernetes之Ingress
定义:Ingress ——进入或进入的行为;入口;作用:Ingress只需要一个公网IP就能为许多Kubernetes服务提供外部访问。当客户端向Ingress发送HTTP请求时,Ingress会根据请求的主机名和路径决定请求转发到的服务。只有Ingress控制器在集群中运行,Ingress资源才能正常工作。Ingress控制器一般是kube-system 命名空间中的pod。...原创 2020-01-06 16:35:30 · 267 阅读 · 0 评论 -
kubernetes之API server的安全防护
此博客借鉴了较多书中的内容,仅仅作为自己学习整理使用。该书为《kubernetes in action》,有兴趣的朋友可以读读这本书。kubernetes集群组件kubernetes集群分为两部分:Kubernetes控制平面、工作节点Kubernetes控制平面:用来存储、管理集群状态(1)etcd分布式持久化存储(2)api server(3)scheduler(4)c...原创 2020-01-03 15:17:07 · 234 阅读 · 1 评论 -
kubernetes之卷
此博客借鉴了较多书中的内容,仅仅作为自己学习整理使用。该书为《kubernetes in action》,有兴趣的朋友可以读读这本书。【卷的定义】pod中的每个容器都有自己独立的文件系统,因为文件系统来自容器镜像。每个容器都是通过在构建镜像时加入的详细配置文件来启动的。在某些场景下,我们可能希望新的容器可以在之前容器结束的位置继续运行,比如在物理机上重启进程。可能不需要整个文件...原创 2019-12-30 17:48:11 · 331 阅读 · 0 评论 -
【java】 prometheus监控告警
(1)场景:使用prometheus监控k8s集群的运行状态,并做到监控告警。(2)pom: git地址 <dependency> <groupId>io.kubernetes</groupId> <artifactId>client-java</artifactId&g...原创 2019-11-07 11:42:29 · 1073 阅读 · 0 评论 -
kubernetes 创建一个cronjob 启动一个容器执行任务
CronJob其实就是定时调用job去创建pod执行对应的服务。这个从cronjob的构成就可以看出来,jobTemplate是job的模板,而schedule就是定时。1.首先创建一个cron.yaml以下是每隔一分钟 创建并启动hub.cs2025.cn/dev/harbor-clean:0.1 镜像的意思,相当于docker run -it harbor-clean:0...原创 2019-10-08 17:00:18 · 809 阅读 · 0 评论