Prometheus介绍和安装 6)Web UI:Prometheus内置一个简单的Web控制台,可以查询指标,查看配置信息或者Service Discovery等,实际工作中,查看指标或者创建仪表盘通常使用Grafana,Prometheus作为Grafana的数据源;在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。总之,通过使用Prometheus exporter,你可以方便地监控应用程序的性能、资源利用率和其他重要指标。
在k8s中使用Helm安装harbor并将Chart推送到私有仓库harbor 注意,harbor从2.8.0开始已经不支持chartmuseum了,而是改为了OCI ,鉴于新版本不太成熟和使用人太少,所以当前,我们安装2.6.2版本。注意:如果你的harbor是之前docker-compose安装的,还需要额外做一个动作,让它支持chart。Harbor的chartmuseum可以让Helm直接将chart包推送到harbor里,但是。1)下载harbor的chart包。2)修改默认values.yaml。到harbor浏览器后台。检查plugins列表。升级本地release。
k8s中Chart的命名模板 相对于 deployment.yaml 这种主模板,命名模板只是定义部分通用内容,然后在各个主模板中调用。templates目录下有个_helpers.tpl文件。公共的命名模板都放在这个文件里。如,这里先简单定义一个只包含字符串的模板,用作资源名称。命名模板有时候也被称为部分或子模板。命名模板使用 define 来定义。2)自定义templates模板文件。注意:假定NFS服务器已经搭建好了。5)到NFS服务器上创建一个测试页。生成一个deployment模板。删除掉默认的模板文件。
k8s中Chart模板流程控制if_with_range和变量 {{- 表示删除左边的所有空格,直到非空格字符,而 -}}表示删除右边的所有空格。注意,换行符也是空格,当然还包括空格,TAB字符。with 语句块内不能带 .Release.Name 对象,否则报错。上面在 range 循环中使用 $k 和 $v 两个变量来接收后面列表循环的键和值。with 语句块里, 把当前范围定义在了.Values.env这个变量上了。变量在模板中,使用变量的场合不多,但个别情况下不得不使用变量。上面的变量引用都需要从.Values开始, 有点繁琐。修改values.yaml。
k8s中Helm工具实践 Helm最核心的就是模板,即模板化的K8s清单文件(如,deployment, service等),模板经过渲染后会被提交到K8s中,本质上就是Go语言的template模板,模板文件位于template/目录中。变量的值定义在values.yaml文件中,该文件中定义了变量的缺省值,但可以在helm install命令中配置新的值来覆盖缺省值。将K8s清单文件中可能经常变动的字段,通过指定一个变量,在安装的过程中该变量将被值value动态替换掉,这个过程就是模板的渲染。
Kubernetes Operator 1)Operator是什么你可以理解成Operator就是CRD+自定义Controller的实践应用。Kubernetes Operator由CoreOS公司开发,它是一种自定义控制器,它扩展了 Kubernetes API 的功能,用于管理和自动化应用程序、服务或资源的生命周期。Operator 可以将复杂的操作封装到 Kubernetes 中,以便在集群中创建、配置、部署和管理特定类型的应用程序或服务。
k8s的API资源对象CustomResourceDefinition(CRD) 和我们定义普通的资源对象比较类似,这里可以随意定义一个自定义的资源对象,但是在创建资源的时候,肯定不是任由我们随意去编写 YAML 文件的,当我们把上面的 CRD 文件提交给 Kubernetes 之后,Kubernetes 会对我们提交的声明文件进行校验,从定义可以看出 CRD 是基于。在Kubernetes中,像Pod、Service和Deployment这样的资源是由内置的资源类型如Pod、Service和Deployment表示的。一旦创建完自定义的CRD,那么就会生成一个自定义的API。
API资源对象StorageClass;Ceph存储;搭建Ceph集群;k8s使用ceph SC的主要作用在于,自动创建PV,从而实现PVC按需自动绑定PV。下面我们通过创建一个基于NFS的SC来演示SC的作用。要想使用NFS的SC,还需要安装一个NFS provisioner,provisioner里会定义NFS相关的信息(服务器IP、共享目录等)github地址: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner修改deployment.yaml应用yamlSC YAML示例。
Kubernetes里的Pod亲和性;Pod反亲和性;API资源对象PV和PVC;本地存储;NFS存储 与其他PV类型(例如NFS、Ceph或云存储)不同,本地存储类型的PV直接使用节点上的存储资源,因此具有更低的延迟和更高的性能。如果没有匹配的PV,PVC将保持未绑定状态。Pod想要使用具体的存储资源需要对接到PVC,PVC里会定义好Pod希望使用存储的属性,通过PVC再去申请合适的存储资源(PV),匹配到合适的资源后PVC和PV会进行绑定,它们两者是一一对应的;PV可以手动创建,也可以自动创建,当PV需求量非常大时,如果靠手动创建PV就非常麻烦了,SC可以实现自动创建PV,并且会将PVC和PV绑定。
Kubernetes里的DNS;API资源对象ingress;Kubernetes调度;节点选择器NodeSelector;节点亲和性NodeAffinity 调度器在执行绑定操作的时候是一个异步过程,调度器会先在缓存中创建一个和原来Pod一样的Assume Pod对象用模拟完成节点的绑定,如将Assume Pod的Nodename设置成绑定节点名称,同时通过异步执行绑定指令操作。在Pod和Node绑定之前,Scheduler需要确保Volume已经完成绑定操作,确认完所有绑定前准备工作,Scheduler会向Api Server 发送一个Bind 对象,对应节点的Kubelet将待绑定的Pod在节点运行起来。节点分值计算是通过调度器算法实现的,而不是固定的。
k8s中的Pod网络;Service网络;网络插件Calico 当执行到创建网络这一步骤时,它首先会读取刚才我们所说的配置目录中的配置文件,配置文件里面会声明所使用的是哪一个插件,然后去执行具体的 CNI 插件的二进制文件,再由 CNI 插件进入 Pod 的网络空间去配置 Pod 的网络。由于Calico是一种纯三层的方案,因此可以避免与二层方案相关的数据包封装的操作,中间没有任何的NAT,没有任何的overlay,所以它的转发效率是所有方案中最高的,因为它的包直接走原生TCP/IP的协议栈,它的隔离也因为这个栈而变得好做。而真正实现和落地这些规范的是CNI插件。
水平自动扩容和缩容HPA;API资源对象NetworkPolicy;Kubernetes用户安全控制;Kubernetes创建普通用户示例 比如创建Pod,它会检查提交的信息是否符合创建Pod的规范,如果不符合规范就拒绝。另外,准入控制还会帮助我们把我们没有明确指定的字段信息,通过默认值的方式把对应的字段填充到客户端请求中,然后把填充好的信息一并由APIserver把客户端请求更新到对应资源在etcd中的对应信息上。Adminssion Control实际上是一个准入控制器插件列表,发送到API Server的请求都需要经过这个列表中的每个准入控制器插件的检查,检查不通过,则拒绝请求。基于白名单模式,符合规则的对象通过,不符合的拒绝。
ActiveMQ 反序列化漏洞(CVE-2015-5254) ActiveMQ支持多种消息协议,包括JMS(Java消息服务)、AMQP(高级消息队列协议)和STOMP(简单文本传输协议),使得它能够与不同的客户端和应用程序进行通信。kali中下载jmet的jar包,里面集成了ysoserial,运行jar包jdk环境要对应,我的jdk是1.8版本,jdk17执行失败了。再次向服务器发送消息,ActiveMQ的消息队列中会增加一条,当这条被点击的时候我们的反弹shell也就会被执行。当点击了这条消息后我们的命令就被触发执行了,说明是有这个漏洞的。
Kubernetes中API资源对象Job;API资源对象CronJob;API资源对象Endpoint;API资源对象ConfigMap;API资源对象Secret 有时候K8s里的Pod需要访问外部资源,比如访问外部的MySQL服务,就可以定义一个对外资源的Ednpoint,然后再定义一个Service,就可以让K8s里面的其它Pod访问了。Endpoint(简称ep)资源是和Service一一对应的,也就是说每一个Service都会对应一个Endpoint。CronJob简称(cj)是一种周期运行的Pod,比如有些任务需要每天执行一次,就可以使用CronJob。ConfigMap(简称cm)用来存储配置信息,比如服务端口、运行参数、文件路径等等。
API资源对象Deployment;API资源对象Service;API资源对象DaemonSet;API资源对象StatefulSet Daemonset不支持使用kubectl create获取YAML模板,所以只能照葫芦画瓢了,参考Deployment的YAML编写,其实Daemonset和Deployment的差异很小,除了Kind不一样,还需要去掉replica配置。有些场景需要在每一个node上运行Pod(比如,网络插件calico、监控、日志收集),Deployment无法做到,而Daemonset(简称ds)可以。另外,要想使用NFS的sc,还需要安装一个NFS provisioner,它的作用是自动创建NFS的pv。
kubernetes中YAML介绍;API资源对象Pod;Pod原理和生命周期;Pod资源限制 官网(https://yaml.org/)YAML 语言创建于 2001 年,比 XML 晚了三年。YAML虽然在名字上模仿了XML,但实质上与XML完全不同,更适合人类阅读,计算机解析起来也很容易。JSON是YAML的子集,YAML支持整数、浮点数、布尔、字符串、数组和对象等数据类型。也就是说,任何合法的JSON文档也都是YAML文档,如果你了解JSON,那么学习YAML会容易很多。使用缩进表示层次,缩进不允许使用tab,只能用空格,缩进空格数多少不要求,只要保证同一层级空格数一样多即可。
K8s介绍和各组件盘点;搭建一个单机版的k8s Kubernetes(K8s),是用于自动部署、扩容、缩容和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes源自google 15年生产环境的运维经验,同时凝聚了社区最佳创意和实践。
如何申请https免费证书 FreeSSL 是一个免费证书和 SSL 证书管理平台。旨在为个人和小型企业提供免费 SSL 证书,以加强他们的网站和应用程序的安全性。与传统的 SSL 证书颁发机构不同,FreeSSL 使用自动化过程生成 SSL 证书,并提供一个管理面板,让用户可以轻松管理他们的证书和域名。https免费证书申请