Kubernetes 中部署 kube-state-metrics 及 Prometheus 监控配置实战

article/2025/8/22 18:26:11

文章目录

  • Kubernetes 中部署 kube-state-metrics 及 Prometheus 监控配置实战
  • 环境准备
  • 创建监控命名空间
  • 准备配置文件
  • 创建 ServiceAccount
  • 配置 RBAC 权限
  • 部署 kube-state-metrics
  • 部署node_exporter(可选)
  • 验证服务账号 Token
  • Prometheus 配置示例
  • 小结
  • 验证
  • 增加Grafana面板
    • 增加prometheus监控数据源
    • 添加k8s监控面板(需Grafana这台有网)
  • 扩展告警规则
  • 总结


Kubernetes 中部署 kube-state-metrics 及 Prometheus 监控配置实战

本文详细介绍了如何在 Kubernetes 集群中部署 kube-state-metrics 组件,配置服务账号(ServiceAccount)、RBAC 授权,并结合 Prometheus 采集 kube-state-metrics 和 node-exporter 指标的全过程,方便你快速搭建集群监控体系。


环境准备

假设你的 Kubernetes 集群节点 IP 为 10.255.101.217,且已经安装了 kubectl,且配置了访问权限。

一台 Master 多节点玩转 Kubernetes:sealos 一键部署实践

使用 Supervisor 和 Systemd 搭建 Prometheus + Alertmanager + Node Exporter + Grafana 全套监控系统


创建监控命名空间

首先,为监控组件创建一个专用的命名空间 monitor-sa

kubectl create ns monitor-sa

确认命名空间已经创建:

kubectl get ns

在这里插入图片描述


准备配置文件

  • sa.yaml
  • rbac.yaml
  • clust.yaml
  • jiankong.yaml
  • svc.yaml
  • node.yaml

创建 ServiceAccount

monitor-sa 命名空间中为 kube-state-metrics 创建一个服务账号 kube-state-metrics,方便后续绑定权限。

sa.yaml 文件内容:

apiVersion: v1
kind: ServiceAccount
metadata:# sa 账号名称name: kube-state-metrics# sa 账号名称空间namespace: monitor-sa

执行:

# kubectl apply -f sa.yaml serviceaccount/kube-state-metrics created

配置 RBAC 权限

为了让 kube-state-metrics 能够访问 Kubernetes 资源,创建对应的 ClusterRole:

rbac.yaml 文件内容:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: kube-state-metrics
rules:
- apiGroups: [""]resources: ["nodes", "pods", "services", "resourcequotas", "replicationcontrollers", "limitranges", "persistentvolumeclaims", "persistentvolumes", "namespaces", "endpoints"]verbs: ["list", "watch"]
- apiGroups: ["extensions"]resources: ["daemonsets", "deployments", "replicasets"]verbs: ["list", "watch"]
- apiGroups: ["apps"]resources: ["statefulsets"]verbs: ["list", "watch"]
- apiGroups: ["batch"]resources: ["cronjobs", "jobs"]verbs: ["list", "watch"]
- apiGroups: ["autoscaling"]resources: ["horizontalpodautoscalers"]verbs: ["list", "watch"]
- apiGroups: [""]resources: ["nodes/proxy"]verbs: ["get"]

创建 ClusterRoleBinding,将 ClusterRole 绑定给前面创建的 ServiceAccount:

clust.yaml 文件内容:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: kube-state-metrics
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: kube-state-metrics
subjects:
- kind: ServiceAccountname: kube-state-metricsnamespace: monitor-sa

应用:

# kubectl apply -f rbac.yamlclusterrole.rbac.authorization.k8s.io/kube-state-metrics created# kubectl apply -f clust.yamlclusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created

部署 kube-state-metrics

准备 Deployment 配置文件 jiankong.yaml

apiVersion: apps/v1
kind: Deployment
metadata:labels:app.kubernetes.io/name: kube-state-metricsname: kube-state-metricsnamespace: monitor-sa
spec:replicas: 1selector:matchLabels:app.kubernetes.io/name: kube-state-metricstemplate:metadata:labels:app.kubernetes.io/name: kube-state-metricsspec:serviceAccountName: kube-state-metricscontainers:- image: registry.k8s.io/kube-state-metrics/kube-state-metrics::latestimagePullPolicy: IfNotPresentname: kube-state-metricsports:- containerPort: 8080name: http-metricsprotocol: TCP

在准备它的svc.yaml

apiVersion: v1
kind: Service
metadata:name: kube-state-metricsnamespace: monitor-sa
spec:ports:- name: http-metricsport: 8080protocol: TCP#targetPort: 8080targetPort: http-metrics- name: telemetryport: 8081protocol: TCPtargetPort: telemetryselector:app.kubernetes.io/name: kube-state-metricssessionAffinity: Nonetype: NodePort

执行部署:

# kubectl apply -f jiankong.yaml
deployment.apps/kube-state-metrics created
# kubectl apply -f svc.yaml
service/kube-state-metrics created

查看 Pod 状态:

# kubectl -n monitor-sa get podsNAME                                  READY   STATUS    RESTARTS   AGE
kube-state-metrics-5b7cf967d6-knhww   1/1     Running   0          40m

查看映射的端口

# kubectl -n monitor-sa get svc
NAME                 TYPE       CLUSTER-IP        EXTERNAL-IP   PORT(S)                         AGE
kube-state-metrics   NodePort   192.168.144.178   <none>        8080:32470/TCP,8081:31602/TCP   75m

部署node_exporter(可选)

集群node很多,我们不会跟传统模式似的,一个一个去部署node_exporter,这个时候我们就再k8s中创建个DaemonSet,让它自己根据k8S的node节点进行创建

准备node.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:name: node-exporternamespace: monitor-sa
spec:selector:matchLabels:app: node-exportertemplate:metadata:labels:app: node-exporterspec:hostPID: truehostIPC: truehostNetwork: truecontainers:- name: node-exporterimage: quay.io/prometheus/node-exporter:v1.9.1imagePullPolicy: IfNotPresentports:- containerPort: 9100name: metricsresources:requests:cpu: "150m"limits:cpu: "500m"securityContext:privileged: true  # 若非必要,可设为 false 增强安全args:- --path.procfs=/host/proc- --path.sysfs=/host/sys- --collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($|/)volumeMounts:- name: devmountPath: /host/devreadOnly: true- name: procmountPath: /host/procreadOnly: true- name: sysmountPath: /host/sysreadOnly: true- name: rootfsmountPath: /rootfsreadOnly: truetolerations:- key: "node-role.kubernetes.io/control-plane"operator: "Exists"effect: "NoSchedule"volumes:- name: prochostPath:path: /proc- name: devhostPath:path: /dev- name: syshostPath:path: /sys- name: rootfshostPath:path: /

执行部署:

# kubectl apply -f node.yaml
daemonset.apps/node-exporter created

查看pod状态

# kubectl -n monitor-sa get nodes -o wide NAME             STATUS   ROLES                  AGE   VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION               CONTAINER-RUNTIME
10-255-101-152   Ready    <none>                 41d   v1.22.0   10.255.101.152   <none>        CentOS Linux 7 (Core)   4.18.9-1.el7.elrepo.x86_64   containerd://1.4.3
10-255-101-216   Ready    <none>                 41d   v1.22.0   10.255.101.216   <none>        CentOS Linux 7 (Core)   4.18.9-1.el7.elrepo.x86_64   containerd://1.4.3
10-255-101-217   Ready    control-plane,master   41d   v1.22.0   10.255.101.217   <none>        CentOS Linux 7 (Core)   4.18.9-1.el7.elrepo.x86_64   containerd://1.4.3
10-255-101-82    Ready    <none>                 41d   v1.22.0   10.255.101.82    <none>        CentOS Linux 7 (Core)   4.18.9-1.el7.elrepo.x86_64   containerd://1.4.3# kubectl -n monitor-sa get pods -o wide NAME                                  READY   STATUS    RESTARTS   AGE   IP               NODE             NOMINATED NODE   READINESS GATES
kube-state-metrics-5b7cf967d6-tk5kr   1/1     Running   0          87m   192.168.154.12   10-255-101-82    <none>           <none>
node-exporter-7sc7c                   1/1     Running   0          72m   10.255.101.152   10-255-101-152   <none>           <none>
node-exporter-d2w2z                   1/1     Running   0          72m   10.255.101.216   10-255-101-216   <none>           <none>
node-exporter-rc6bt                   1/1     Running   0          72m   10.255.101.82    10-255-101-82    <none>           <none>

验证服务账号 Token

通过命令查看 default 服务账号的 token:

# kubectl -n monitor-sa get secrets 
NAME                             TYPE                                  DATA   AGE
default-token-wrbmj              kubernetes.io/service-account-token   3      5m9s
kube-state-metrics-token-bkrsr   kubernetes.io/service-account-token   3      3m41s# kubectl -n monitor-sa describe secrets kube-state-metrics-token-bkrsr

将显示包含 token 的详细信息,可用于 Prometheus 授权。
在这里插入图片描述
!!!把token内容,复制到prometheus的服务器里

/data/app/prometheus/token

[root@10-255-101-216 prometheus]# cat token 
eyJhbGciOiJSUzI1NiIsImtpZCI6IlUyVjJSUGFyMWRDcWlZUUota2F0Q2xVY1pBTU45cW1HNEl2a1R2ajRlRzQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtb25pdG9yLXNhIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Imt1YmUtc3RhdGUtbWV0cmljcy10b2tlbi1ia3JzciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlLXN0YXRlLW1ldHJpY3MiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjZjRmODFlYS00Mzg3LTRhOGUtYjdlMC04ZjM1NjM0YjczMTciLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6bW9uaXRvci1zYTprdWJlLXN0YXRlLW1ldHJpY3MifQ.cco-tUhN7SeZL6H40ShY4WPwZ-h3TBQ2fLj1v64W9lCRAf2U0yTFackRO19odYY5YgVhujdaQcmMxfd3EGN_RQuQZv3p0AtRIXstOc9q9jdwFmQtGaPMjN-DuUWHa5Gx72jUXjgdXzEe6oHugjfFikBs13JCSU7uY3DfpDTIGWRorNz2hQCXWGJktydk_5J_mqH7y3DWsGNOLXZpENavVo25DMRgVvIGuRLTqh7atkcGGgke92cSSUJqhQ9RMqtrCApJ_8eZiL4r8vY-aF224yCqbzlMva1Jd2CMhagQbQIBQUeXzfMDRqVIyPv9KNziIKr68cA4XEaIv6yvqMzE8w
[root@10-255-101-216 prometheus]# 

Prometheus 配置示例

将上面获取到的服务账号 Token 保存到 Prometheus 服务器 /data/app/prometheus/token 文件中。

Prometheus 配置文件 prometheus.yml 中增加如下内容,实现采集 kube-state-metricsnode-exporter 指标:

global:scrape_interval: 15sevaluation_interval: 15s# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]# 上边查看的svc的端口映射地址- job_name: kube-state-metricsstatic_configs:- targets: ['10.255.101.217:32470']labels:env: test20250528# 采集 node-exporter 指标- job_name: 'k8s-node-exporter'kubernetes_sd_configs:- role: podapi_server: https://10.255.101.217:6443bearer_token_file: /data/app/prometheus/tokentls_config:insecure_skip_verify: truerelabel_configs:- source_labels: [__meta_kubernetes_pod_label_app]regex: node-exporteraction: keep- target_label: envreplacement: test20250528- source_labels: [__meta_kubernetes_pod_ip]target_label: __address__replacement: '${1}:9100'action: replace- source_labels: [__meta_kubernetes_pod_node_name]target_label: nodeaction: replace- source_labels: [__meta_kubernetes_namespace]target_label: kubernetes_namespaceaction: replace- source_labels: [__meta_kubernetes_pod_name]target_label: kubernetes_pod_nameaction: replace# 采集 cadvisor 指标- job_name: test20250528-cadvisorhonor_timestamps: truemetrics_path: /metricsscheme: httpskubernetes_sd_configs:- api_server: https://10.255.101.217:6443role: nodebearer_token_file: /data/app/prometheus/tokentls_config:insecure_skip_verify: truebearer_token_file: /data/app/prometheus/tokentls_config:insecure_skip_verify: truerelabel_configs:- action: labelmapregex: __meta_kubernetes_node_label_(.+)- separator: ;regex: (.*)target_label: __address__replacement: 10.255.101.217:6443action: replace- source_labels: [__meta_kubernetes_node_name]separator: ;regex: (.+)target_label: __metrics_path__replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisoraction: replace- source_labels: [kubernetes_io_hostname]separator: ;regex: (.+)target_label: env_kubernetes_io_hostnamereplacement: test20250528-${1}action: replace- source_labels: [kubernetes_io_hostname]separator: ;regex: (.+)target_label: envreplacement: test20250528action: replace

小结

通过以上步骤,你已经完成了以下工作:

  • 创建专用命名空间 monitor-sa
  • 创建 kube-state-metrics 服务账号和对应的 RBAC 授权
  • 部署 kube-state-metrics 监控组件
  • 通过 Prometheus 采集 kube-state-metrics 和 node-exporter 指标
  • 配置了 Prometheus 访问 Kubernetes API Server 的安全 Token

验证

在这里插入图片描述

增加Grafana面板

增加prometheus监控数据源

请添加图片描述
请添加图片描述
我是只修改了URL,其他没任何修改
请添加图片描述
请添加图片描述

添加k8s监控面板(需Grafana这台有网)

请添加图片描述
ID:10000
请添加图片描述
请添加图片描述
在这里插入图片描述
至此面板添加完了,数据未显示的,需要微调,可自行进行调整


扩展告警规则

# 容器相关报警信息
groups:
- name: "ContainerRules"rules:- alert: "容器异常"expr: kube_pod_container_status_running{env="test20250528",pod !~ "security-inspector-polaris-cronjob.*"} != 1for: 90slabels:severity: Disasterenv: test20250528annotations:summary: "ns:{{ $labels.namespace }} pod: {{ $labels.container }}]"description: "{{ $labels.instance }}: {{ $labels.namespace }} 服务{{ $labels.container }} 容器运行异常"# 容器内存使用率告警(>80%)- alert: "ContainerMemoryUsage"expr: sum by(namespace,pod,container) (container_memory_rss{image!="",env="test20250528"}) / sum by(namespace,pod,container) (container_spec_memory_limit_bytes{image!="",env="test20250528"}) * 100  != +Inf > 80for: 1mlabels:severity: Warningenv: test20250528annotations:summary: "[{{ $labels.namespace }}/{{ $labels.pod }} - {{ $labels.container }}] Container memory usage warning"description: "Container memory usage is above 80%.\nVALUE = {{ $value | printf \"%.2f\" }}%\n"# 容器 CPU 使用率告警(>80% - Warning)- alert: ContainerCpuUsageexpr: sum by(container, namespace, pod) (irate(container_cpu_usage_seconds_total{env="test20250528",image!=""}[5m]) * 100) / sum by(container, namespace, pod) (container_spec_cpu_quota{env="test20250528",image!=""} / container_spec_cpu_period{env="test20250528",image!=""}) > 80for: 1mlabels:severity: Warningenv: test20250528annotations:summary: "[{{ $labels.namespace }}/{{ $labels.pod }} - {{ $labels.container }}] Container CPU usage warning"description: "Container CPU usage is above 80%.\nVALUE = {{ $value | printf \"%.2f\" }}%\n"# 容器 CPU 使用率告警(>90% - Disaster)- alert: "ContainerCpuUsage"expr: sum by(container, namespace, pod) (irate(container_cpu_usage_seconds_total{env="test20250528",image!=""}[5m]) * 100) / sum by(container, namespace, pod) (container_spec_cpu_quota{env="test20250528",image!=""} / container_spec_cpu_period{env="test20250528",image!=""}) > 90for: 1mlabels:severity: Disasterenv: test20250528annotations:summary: "[{{ $labels.namespace }}/{{ $labels.pod }} - {{ $labels.container }}] Container CPU usage critical"description: "Container CPU usage is above 90%.\nVALUE = {{ $value | printf \"%.2f\" }}%\n"- alert: "容器重启"expr: rate(kube_pod_container_status_restarts_total{env="test20250528"}[15m]) > 0for: 5mlabels:severity: Disasterenv: test20250528annotations:summary: "[{{ $labels.namespace }}/{{ $labels.pod }} - {{ $labels.container }}] 容器发生重启"description: "{{ $labels.namespace }} 命名空间中的容器 {{ $labels.container }}(所属 Pod: {{ $labels.pod }})在过去 15 分钟内发生了重启)"

总结

至此 Kubernetes 监控体系的基础框架搭建完毕。后续可以根据业务需求增加更多监控项和告警规则。


http://www.hkcw.cn/article/SeNUhfDhiJ.shtml

相关文章

【大模型02】Deepseek使用和prompt工程

文章目录 DeepSeekDeepseek 的创新MLA &#xff08;低秩近似&#xff09; MOE 混合专家混合精度框架总结DeepSeek-V3 与 DeepSeek R1 DeepSeek 私有化部署算例市场&#xff1a; autoDLVllM 使用Ollma复习 API 调用deepseek-r1Prompt 提示词工程Prompt 实战设置API Keycot 示例p…

价格暴跌近50%!“榴莲自由”要来了?进口水果降价潮

对于水果爱好者来说,今年是个特别“甜蜜”的年份。从年初开始,车厘子、蓝莓等曾经价格较高的水果纷纷降价。最近,“水果之王”榴莲也大量上市了,价格持续下降,“榴莲自由”似乎近在眼前。初夏时节,菠萝蜜、山竹、荔枝、桃子等各种水果相继上市。在浙江,记者观察到榴莲的…

我国科学家揭示青藏高原“幽灵祖先”遗传起源之谜

记者从中国科学院古脊椎动物与古人类研究所获悉,该研究所付巧妹研究团队和云南省文物考古研究所,联合四川大学、兰州大学、西北大学等机构,历经9年成功捕获和测序了来自17个遗址的127例距今7100年以来的云南古代人类基因组。该研究不仅填补了东亚和东南亚史前人群遗传数据的…

中央巡视组进驻后 “亚洲最大医院”原院长被查 医疗巨无霸掌门人落马

5月29日上午,河南省纪委监委通报了河南省政协人口资源环境委员会主任阚全程涉嫌严重违纪违法的消息。目前,他正接受纪律审查和监察调查。阚全程这个名字对很多人来说并不陌生。他曾担任河南省卫生健康委主任长达五年,并长期执掌郑州大学第一附属医院。在他的领导下,该医院启…

UniApp X:鸿蒙原生开发的机会与DCloud的崛起之路·优雅草卓伊凡

UniApp X&#xff1a;鸿蒙原生开发的机会与DCloud的崛起之路优雅草卓伊凡 有句话至少先说&#xff0c;混开框架中目前uniapp x是率先支持了鸿蒙next的开发的&#xff0c;这点来说 先进了很多&#xff0c;也懂得审时度势。 一、UniApp X如何支持鸿蒙原生应用&#xff1f; UniAp…

FreeRTOS---任务创建与删除

FreeRTOS—任务创建与删除 1 基本概念 在多任务系统里面&#xff0c;任务有以下三大要素&#xff1a; 做何事&#xff1a;函数栈和TCB优先级 对于每个任务我们得确定它做何事&#xff0c;这个可以通过函数去实现。每个任务需要设置不同的栈&#xff0c;同时还需要设置TCB结构…

梅花鹿遭野狗追逐坠落死亡 流浪狗围猎问题频发

梅花鹿遭野狗追逐坠落死亡 流浪狗围猎问题频发!近日,有网友称近一周来,辽宁大连有数只梅花鹿遭流浪狗撕咬死亡,还有梅花鹿在被狗群追逐时从高处坠落死亡。5月27日凌晨,一只母鹿遭狗群追逐从土墙上坠落摔伤,全身多处撕咬伤,后经抢救无效死亡。据大连野境自然保护中心介绍…

这场峰会捅了美国痛点 东盟联手应对关税挑战

这场峰会捅了美国痛点 东盟联手应对关税挑战!东盟、中国与海合会再开启“新篇章”。5月27日下午,首届东盟-中国-海合会峰会在马来西亚吉隆坡召开。从东亚合作扩展到跨区域合作,三方在峰会上首次正式会面,标志着区域合作进入全新阶段,具有重要的里程碑意义。东盟和中国作…

【HW系列】—HTTP协议详解

文章目录 HTTP协议介绍HTTP协议拆分统一资源定位符&#xff08;URL&#xff09;HTTP请求的四个部分1. 请求行&#xff08;Request Line&#xff09;2. 请求头&#xff08;Headers&#xff09;3. 空行&#xff08;CRLF&#xff09;4. 请求体&#xff08;Body&#xff09; HTTP服…

缺兵少将!许利民:全运会的比赛不可控因素很大 要把每场比赛打好 克服伤病迎战全运

28日,北京队在首钢篮球中心举行备战第十五届全国运动会男篮成年组公开训练。球队主教练许利民表示,要克服伤病困难,打好每场比赛。此次征战全运会的北京队主要由中国男子篮球职业联赛(CBA)北京首钢队和北控队队员组成。许利民提到,队员们刚结束联赛比赛,部分队员有伤病情…

华为OD机试真题——报文回路(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

CPP中CAS std::chrono 信号量与Any类的手动实现

前言 CAS&#xff08;Compare and Swap&#xff09; 是一种用于多线程同步的原子指令。它通过比较和交换操作来确保数据的一致性和线程安全性。CAS操作涉及三个操作数&#xff1a;内存位置V、预期值E和新值U。当且仅当内存位置V的值与预期值E相等时&#xff0c;CAS才会将内存位…

20250529-C#知识:索引器

C#知识&#xff1a;索引器 索引器给对象添加了索引访问的功能&#xff0c;实际访问的是对象的成员&#xff0c;感觉不太常用。 1、主要内容及代码示例 索引器中类似属性&#xff0c;也包含get和set方法索引器能够使像访问数组一样访问对象一般当类中有数组类型的成员变量时&am…

芭莎明星怼脸照,卡粉眼袋眼角纹真实却美丽,看完再也没有容貌焦虑 女星状态更胜一筹

今年的时尚芭莎盛典异常热闹。原本以为这又是一次明星们展示美貌的机会,但这次芭莎玩了个新花样,用“镜头签”将明星的真实皮肤状态暴露在公众面前。于是,“没去芭莎的很幸运了”这个词条冲上了热搜。这次的生图简直成了“照妖镜”。男星的表现可以说不尽如人意。张云龙依旧…

订单已排至2029年!我国造船产业订单量领跑全球

订单已排至2029年!我国造船产业新接订单量领跑全球在当前复杂的全球贸易形势下,我国造船产业依旧表现出强劲的市场韧性与竞争力,走出了产业加速度,今年1-4月,我国造船产业新接订单量占世界市场份额继续保持全球第一。眼下,很多造船企业的订单饱满,生产任务也排至了几年之…

Maven-生命周期

目录 1.项目对象模型 2.依赖管理模型 3.仓库&#xff1a;用于存储资源&#xff0c;管理各种jar包 4.本地仓库路径 1.项目对象模型 2.依赖管理模型 3.仓库&#xff1a;用于存储资源&#xff0c;管理各种jar包 4.本地仓库路径

Nacos

注册发现各种第三方组件的比较介绍&#xff1a; CAP C&#xff1a;一致性 A&#xff1a;可用性 P&#xff1a;分区容错性 启动nacos Linux环境&#xff1a;找到startup.sh&#xff0c;编辑文件将启动模式从集群cluster模式修改为单机模式standalone&#xff0c;如下图 然…

苹果公司计划按年份来重命名重大的软件,将升级iOS 18软件至iOS 26

苹果公司计划从今年开始&#xff0c;所有苹果操作系统将统一采用年份标识&#xff0c;而非此前混乱的版本号体系。苹果将在6月9日的全球开发者大会上正式宣布这一变革。周三截至发稿&#xff0c;苹果股价震荡微涨0.46%&#xff0c;重回3万亿美元市值。 苹果公司正在筹划其操作…

How to Initiate Back-to-Back Write Transactions from Master

Q: How to Initiate Back-to-Back Write Transactions from Master A: following are the modification required at master end to achieve back-to-back transaction driving the VIP: constraint all the master relevant delays to ‘0’ during transaction randomizatio…

纵览网丨新视角下的黑洞探索:传统奇点理论的挑战与未来观测的可能性

纵览网&#xff08;www.zonglan.com&#xff09;在宇宙的浩瀚无垠中&#xff0c;黑洞一直以其神秘莫测的特性吸引着人类的目光。从爱因斯坦的广义相对论到现代天文学的观测成果&#xff0c;黑洞的研究不断取得突破&#xff0c;但同时也伴随着无数未解之谜。其中&#xff0c;传统…