【一】Kubernetes 资源管理与操作方式

1.1 资源管理介绍

  • Kubernetes 把一切抽象为“资源”,用户通过操作资源来管理集群。

  • 集群中运行服务 = 运行容器,而容器必须放在 Pod 内。

  • 最小管理单元是 Pod,但通常不直接操作 Pod,而是借助 Pod 控制器 进行生命周期管理。

  • Pod 的访问通过 Service 实现,数据持久化则依赖 Kubernetes 提供的各类存储系统。

1.2 资源管理方式

类型适用环境优点缺点
命令式对象管理测试简单快捷无法审计、无法跟踪
命令式对象配置开发可审计、可跟踪配置文件多、操作繁琐
声明式对象配置开发/生产支持目录级操作、天然版本化异常时调试略复杂
1.2.1 命令式对象管理
  • 命令格式:kubectl [command] [type] [name] [flags]

  • 示例:

    kubectl get pod
    kubectl get pod pod_name -o yaml
1.2.2 资源类型与常用命令
  • 查看全部资源:kubectl api-resources

  • 常见资源包括 Pod、Deployment、Service、ConfigMap、Secret 等。

  • 常用调试命令速查:

    • kubectl version

    • kubectl cluster-info

    • kubectl explain <资源>

    • kubectl create deployment web --image nginx --replicas 2

    • kubectl patch deployment web -p '{"spec":{"replicas":4}}'

    • kubectl delete deployment web

1.2.3 运行与调试命令示例
  • 快速运行 Pod

    kubectl run testpod --image nginx
    kubectl expose pod testpod --port 80 --target-port 80
    curl <ClusterIP>
  • 日志与交互:

    kubectl logs testpod
    kubectl exec -it testpod -- /bin/bash
    kubectl cp anaconda-ks.cfg testpod:/
  • 生成并应用 YAML:

    kubectl create deployment webcluster --image nginx --dry-run=client -o yaml > webcluster.yml
    kubectl apply -f webcluster.yml
    kubectl delete -f webcluster.yml
  • 标签管理:

    kubectl label pods nginx app=web
    kubectl label pods nginx app-   # 删除标签

【二】Pod 基础与两种创建模式

2.1 Pod 概念

  • 最小可部署单元:一个 Pod 代表集群中运行的一个进程,拥有唯一 IP。

  • 豌豆荚模型:可包含 1 个或多个容器,共享 IPC、Network、UTC namespace。

  • 共享存储与端口:同一 Pod 内容器通过 localhost 通信,端口需避免冲突。

2.2 创建自主式 Pod(不推荐生产使用)

优点缺点
灵活、学习调试方便、一次性任务快速验证管理复杂、缺乏高可用、无法自动扩缩、可维护性差

示例:

kubectl run timinglee --image nginx
kubectl get pods -o wide

一个pod里可以运行多个容器

创建pod模版

刚刚这里有一个运行成功,有一个失败,因为两个都是使用nginx的镜像,第一个占用了80端口,第二个肯定用不了了

修改配置文件,把第二个容器修改所需镜像,不再争取一个接口

此时两个容器就都能用了

缠绕启动之前创建的容器

虽然没有安装nginx,但是却也可以访问成功测试页面

因为它们位于一个pod中,是共用一个网络栈的,所以也能够访问到nginx测试页

可是这样写pod的维护性很差

查看当前命名空间的pod

查看所有命名空间里的pod

查看所有pod的详细信息

2.3 利用控制器管理 Pod(生产推荐)

能力带来的价值
高可用自动故障恢复、健康检查与自愈
可扩展一键扩缩容、HPA 自动弹性
版本管理滚动更新、回滚、声明式配置
服务发现Service 自动负载均衡
多环境一致同一套 YAML 跨环境复用

示例:

# 创建并扩容
kubectl create deployment timinglee --image nginx
kubectl scale deployment timinglee --replicas 6
kubectl scale deployment timinglee --replicas 2

2.4 应用版本更新

# 创建 v1 并暴露
kubectl create deployment timinglee --image myapp:v1 --replicas 2
kubectl expose deployment timinglee --port 80 --target-port 80
curl <ClusterIP>          # 返回 v1# 滚动升级到 v2
kubectl set image deployment/timinglee myapp=myapp:v2
kubectl rollout history deployment timinglee
curl <ClusterIP>          # 返回 v2# 回滚
kubectl rollout undo deployment timinglee --to-revision 1
curl <ClusterIP>          # 再次返回 v1

还可以设定IP地址

#建立控制器并自动运行pod

#为timinglee扩容

#为timinglee缩容


应用版本的更新

#利用控制器建立pod

#暴漏端口

访问服务

[root@k8s-master ~]# curl  10.110.195.120
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@k8s-master ~]# curl  10.110.195.120
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

指定版本,会把老的版本关闭,开启新版本的内容


这些功能实际上是控制器的功能

2.4.1 使用 YAML 部署应用的优点

  • 声明式配置:清晰描述期望状态,天然支持 Git 版本控制与回滚。

  • 灵活可扩展:一份文件可组合 Deployment / Service / ConfigMap / Secret 等多资源。

  • CI/CD 友好:与 GitOps、Argo CD、Flux 等工具无缝集成。

2.4.2 资源清单常用字段速查表

字段类型说明
apiVersionStringAPI 版本,如 v1apps/v1
kindString资源类型:Pod、Deployment、Service …
metadata.nameString对象名称,同一命名空间唯一
metadata.namespaceString所属命名空间
spec.containers[]List容器定义列表
spec.containers[].imageString镜像名称
imagePullPolicyStringAlways / IfNotPresent / Never
command / argsList启动命令与参数
workingDirString工作目录
ports[].containerPortInt容器监听端口
ports[].hostPortInt宿主机映射端口(慎用,易冲突)
env[].name / valueString环境变量
resources.requestsObject调度所需最小资源
resources.limitsObject运行时最大可用资源
restartPolicyStringAlways / OnFailure / Never
nodeSelectorMap节点选择标签
hostNetworkBooleantrue=共享宿主机网络

2.4.3 如何获得资源帮助

kubectl explain pod.spec.containers

2.4.4 YAML 编写实战示例

2.4.4.1 运行单个容器 Pod
apiVersion: v1
kind: Pod
metadata:name: timingleelabels: { run: timing }
spec:containers:- name: timingleeimage: myapp:v1

kubectl run timinglee --image myapp:v1 --dry-run=client -o yaml > pod.yml

2.4.4.2 多个容器注意事项
  • 端口冲突示例:两个 nginx 同时监听 80 → Pod 报错 CrashLoopBackOff

  • 正确做法:不同容器使用不同端口或功能互补(如 sidecar)。

  • 运行多个容器pod

    一个端口干扰示例:

    在一个pod中开启多个容器时一定要确保容器彼此不能互相干扰

2.4.4.3 共享网络验证
# 同一 Pod 内 localhost 互通
kubectl exec test -c busyboxplus -- curl -s localhost

2.4.4.4 端口映射
ports:
- containerPort: 80hostPort: 80   # 节点 IP:80 即可访问

2.4.4.5 环境变量
env:
- name: NAMEvalue: timinglee

2.4.4.6 资源限制与 QoS
  • Guaranteed:requests = limits

  • Burstable:只设 requests 或 requests ≠ limits

  • BestEffort:未设 requests/limits(优先级最低)

2.4.4.7 容器启动管理
  • restartPolicy: Always 下,手动 docker rm 容器 → kubelet 立即重启。

2.4.4.8 选择运行节点
nodeSelector:kubernetes.io/hostname: k8s-node1

2.4.4.9 共享宿主机网络
hostNetwork: true   # Pod 直接使用节点网络栈,可看到节点所有网卡

【三】Pod 生命周期与初始化容器(Init Container)

3.1 Init 容器:概念与功能

  • 执行顺序:先于应用容器启动,必须全部成功完成后,主容器才会并行启动。

  • 特性

    • 总是运行到完成(Completed),不支持 Readiness Probe。

    • 如果失败且 restartPolicy=Always,Pod 将持续重启直至 Init 成功;若 restartPolicy=Never,则直接失败不再重启。

  • 典型用途

    • 运行一次性准备逻辑(数据库迁移、配置文件渲染、依赖检查)。

    • 使用与主容器不同的镜像,避免把运维工具打包进业务镜像。

    • 延迟应用启动,直到外部依赖就绪(例如等待 MySQL 端口可连接)。

3.1.2 Init 容器示例

apiVersion: v1
kind: Pod
metadata:name: initpod
spec:containers:- name: myappimage: myapp:v1initContainers:- name: init-myserviceimage: busyboxcommand: ["sh","-c","until test -e /testfile; do echo waiting; sleep 2; done"]

但是如果是server        展现的内容就很详细

在文件里编辑

引用的镜像

ommand在init容器里做的事情

init是最优先运行的,只有它运行完成,退出init容器后,才能运行上面的内容

会每隔两秒检测这个文件是否存在,检测不到就会一直输出后面的语句wating ~~

会一直检测init容器是否成功开启,开启了才会结束检测,否则一直检测

运行yml文件,这里没有成功,init还在检测,是因为没有拉取成功镜像

上传镜像到仓库中

重新拉取镜像

但是现在还不能运行成功

因为前面的文件没找到,系统中并不不存在testfile这个文件

查看它给我们的输出内容

验证流程:

kubectl apply -f pod.yml
kubectl get pods          # 状态 Init:0/1
kubectl exec initpod -c init-myservice -- touch /testfile
kubectl get pods          # 状态转为 Running

用命令创建这个文件

现在就成功了,状态也running了

删除yml文件


【四】探针(Probe):保障业务健康的三把“探照灯”

4.1 探针类型与行为

探针触发失败时的动作默认状态
livenessProbekubelet 杀死容器 → 按重启策略处理Success
readinessProbe从 Service Endpoints 摘除 Pod IPSuccess
startupProbe先禁用其他探针;失败则重启容器;成功一次后不再探测Success

探测方式

  1. ExecAction:容器内执行命令,返回码为 0 即成功。

  2. TCPSocketAction:对指定端口进行 TCP 连通性检查。

  3. HTTPGetAction:对指定路径/端口做 HTTP GET,状态码 200–399 为成功。

4.2 探针实战示例

4.2.1存活探针(livenessProbe)
livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 3periodSeconds: 1timeoutSeconds: 1

结果:8080 端口未监听 → Pod 进入 CrashLoopBackOff,日志中可见 connection refused

4.2.2 就绪探针(readinessProbe)
readinessProbe:httpGet:path: /test.htmlport: 80initialDelaySeconds: 1periodSeconds: 3

步骤:

kubectl expose pod readiness --port 80
kubectl describe svc readiness   # Endpoints 为空
kubectl exec readiness -- /bin/sh -c "echo ok > /usr/share/nginx/html/test.html"
kubectl describe svc readiness   # Endpoints 出现 Pod IP

#没有暴漏端口,就绪探针探测不满足暴漏条件

只有当 /test.html 返回 200 时,Pod IP 才会被加入 Service,实现“就绪即流量”。

【第五部分】Pod 的优雅终止与滚动升级细节

5.1 优雅终止流程(Graceful Shutdown)

  1. 删除 Podkubectl delete pod xxx 或 Deployment 滚动更新触发)

  2. API Server 将 Pod 置为 Terminating,并通知 kubelet。

  3. Endpoints Controller 立即把 Pod IP 从所有 Service 中摘除 → 不再接收新流量。

  4. kubelet 同时执行两步

    • 如果配置了 preStop Hook,先运行该脚本(如通知注册中心下线)。

    • 向容器主进程发送 TERM 信号;等待 terminationGracePeriodSeconds(默认 30s)。

  5. 超时仍未退出:发送 KILL 信号强制终止。

  6. 容器全部退出后,kubelet 删除 Pod 对象,完成生命周期。

示例:

spec:terminationGracePeriodSeconds: 60containers:- name: applifecycle:preStop:exec:command: ["/bin/sh","-c","sleep 10 && /app/grace-stop.sh"]

5.2 Deployment 滚动升级流程拆解

阶段发生事件
1. 更新镜像kubectl set image deployment/myapp myapp=myapp:v2
2. 新建 ReplicaSet新 RS 创建 v2 Pod,副本数从 0 → 1 → 2 …
3. 旧 Pod 逐一下线每启动一个新 Pod,旧 RS 缩容 1 个,确保可用副本 ≥ (replicas - maxUnavailable)
4. ReadinessGate 校验仅当新 Pod readinessProbe 通过,才继续下一步
5. 完成/回滚全部新 Pod Ready 后旧 RS 副本数为 0;若失败可随时 kubectl rollout undo

参数速记:

strategy:type: RollingUpdaterollingUpdate:maxSurge: 25%        # 升级期间最多额外启动的 PodmaxUnavailable: 25%  # 允许的最大不可用比例

5.3 零中断升级最佳实践

  • PodDisruptionBudget (PDB):保证升级/驱逐时最小可用副本数

    apiVersion: policy/v1
    kind: PodDisruptionBudget
    metadata:name: myapp-pdb
    spec:minAvailable: 2selector:matchLabels: { app: myapp }
  • readinessProbe 必须覆盖真实启动耗时,避免“未就绪就上线”。

  • preStop 延迟 + 优雅关闭,确保注册中心、连接池、队列客户端优雅下线。

  • 【第六部分】Pod 网络模型深度解析

    6.1 集群内网络三大原则

  • 每个 Pod 拥有独立 IP:跨节点、跨命名空间均可直接通过该 IP 访问。

  • 所有 Pod 之间 无需 NAT 即可通信(扁平网络)。

  • 节点与 Pod、Pod 与 Service 之间同样无需 NAT

  • 实现层面由 CNI 插件(Calico、Flannel、Cilium 等)通过 Linux Bridge/VXLAN/eBPF 等技术完成。

    6.2 Pod 内容器共享网络栈

  • 同一 Pod 内所有容器共享同一个 Network Namespace(IP、端口空间一致)。

  • localhost 互通:容器 A 访问容器 B 的端口,直接 localhost:<port>

  • 端口冲突风险:多个容器监听同一端口会触发 bind: address already in use

  • 解决方案

    • 不同容器监听不同端口;

    • 或使用 sidecar 代理(如 Envoy)统一入口。

  • 6.3 Pod 与 Service、Ingress 的协作流程

  • Pod → Pod:直接 pod-ip:container-port

  • Pod → Service:通过 ClusterIP(虚拟 IP)由 kube-proxy 转发到后端 Pod。

  • 6.4 网络策略(NetworkPolicy)示例

    默认集群 全通,可通过 NetworkPolicy 实现细粒度隔离:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:name: allow-app-to-db
    spec:podSelector: { matchLabels: { app: db } }ingress:- from:- podSelector: { matchLabels: { app: backend } }ports:- protocol: TCPport: 3306

    作用:仅允许标签 app=backend 的 Pod 访问 app=db 的 3306 端口,其余流量全部拒绝。

  • 集群外 → Pod

    • NodePort / LoadBalancer Service → kube-proxy → Pod;

    • Ingress Controller(Nginx、Traefik、Gateway API)→ Service → Pod。

【第七部分】Pod 存储全景:从临时卷到持久化

7.1 存储分类速览

类型生命周期典型用途示例
emptyDir随 Pod 创建而创建,随 Pod 删除而销毁缓存、临时文件、共享目录emptyDir: {}
hostPath与节点生命周期一致单节点测试、日志收集hostPath: { path: /data }
ConfigMap / Secret独立对象,可被多 Pod 挂载配置、证书、密钥configMapRef: name: app-config
PersistentVolume (PV)集群级资源,生命周期独立于 Pod数据库、文件存储NFS、Ceph、EBS
PersistentVolumeClaim (PVC)用户对 PV 的申请解耦应用与底层存储ReadWriteOnce 10Gi

7.2 临时卷 emptyDir 实战

apiVersion: v1
kind: Pod
metadata:name: cache-pod
spec:containers:- name: appimage: nginxvolumeMounts:- name: cachemountPath: /tmp/cachevolumes:- name: cacheemptyDir: {}

两个容器挂载同一 emptyDir 即可实现 Pod 内共享高速缓存

可指定 medium: Memory 把卷映射到节点 tmpfs,提升 IO 性能(数据随节点掉电丢失)。

# StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:type: gp3# PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: db-data
spec:accessModes: [ReadWriteOnce]resources: { requests: { storage: 50Gi } }storageClassName: fast-ssd

7.3 安全与性能小贴士

动态供应示例:

7.4 持久化卷 PVC → PV 绑定流程

  • Secret 挂载默认只读;如需热更新,可使用 subPath + inotify

  • PV Reclaim Policy:Retain / Delete / Recycle,生产环境建议 Retain 防止误删数据。

  • 节点亲和性volumeBindingMode: WaitForFirstConsumer 让调度器先选节点再动态创建云盘,避免跨可用区挂载。

  • 管理员创建 PV(静态供应)或 StorageClass(动态供应)。

  • 用户声明 PVC:指定容量、访问模式、StorageClass。

  • 控制器执行绑定:满足条件的 PV 与 PVC 一对一绑定。

  • Pod 引用 PVC:通过 persistentVolumeClaim 字段挂载。

【第八部分】Pod 可观测性:日志、指标、链路三件套

8.1 日志采集全景

维度方案特点
stdout/stderr 日志容器默认输出kubelet 自动轮转 10 MiB × 5 文件,需外部收集。
节点级收集DaemonSet + Fluent Bit / Filebeat低耦合、支持多租户隔离。
Sidecar 日志额外容器 tail -F不改镜像即可适配旧应用。
日志架构Fluent Bit → Kafka → Elasticsearch → Kibana高吞吐、可检索。

示例 DaemonSet 片段:

apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluent-bit
spec:template:spec:containers:- name: fluent-bitimage: cr.fluentbit.io/fluent/fluent-bit:2.2volumeMounts:- name: varlogmountPath: /var/log- name: varlibdockermountPath: /var/lib/docker/containersvolumes:- name: varloghostPath: { path: /var/log }- name: varlibdockerhostPath: { path: /var/lib/docker/containers }

8.2 指标监控体系

层级组件关键指标
集群metrics-serverCPU、Memory 使用率,HPA 依赖。
节点node-exporterCPU、Load、Disk、Network。
Podkube-state-metricsPod 重启次数、容器状态、PVC 绑定。
业务Prometheus SDK自定义 QPS、延迟、队列深度。

Prometheus 抓取配置:

- job_name: 'kube-pods'kubernetes_sd_configs:- role: podrelabel_configs:- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]action: keepregex: true

8.3 分布式链路追踪

  • 自动注入:OpenTelemetry Operator 为 Pod 注入 SDK。

  • sidecar 模式:Jaeger Agent → Collector → Elasticsearch。

  • 上下文透传:HTTP traceparent Header、gRPC metadata。

示例:

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:name: java-instrumentation
spec:java:image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:latest

8.4 事件与告警

  • Kubernetes Events

    kubectl get events --sort-by='.lastTimestamp'
  • Alertmanager 规则

    • Pod 连续重启 ≥ 5 次

    • 节点磁盘使用率 ≥ 85 %

    • Deployment 滚动升级失败

8.5 一站式可观测平台

  • Grafana Cloud / Kube-prometheus-stack:一键部署 Prometheus + Alertmanager + Grafana。

  • Loki:轻量级日志聚合,与 Grafana 无缝集成。

  • Tempo:仅存储 Trace ID → 低成本、高扩展。

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如若转载,请注明出处:http://www.pswp.cn/news/919008.shtml
    繁体地址,请注明出处:http://hk.pswp.cn/news/919008.shtml
    英文地址,请注明出处:http://en.pswp.cn/news/919008.shtml

    如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    深入剖析 TOTP 算法:基于时间的一次性密码生成机制

    标准原文&#xff1a;https://datatracker.ietf.org/doc/html/rfc6238 在数字化时代&#xff0c;信息安全至关重要&#xff0c;身份验证成为保障系统和数据安全的第一道防线。传统的用户名加密码方式已难以应对日益复杂的安全挑战&#xff0c;基于时间的一次性密码&#xff08;…

    Centos7 服务管理

    注&#xff1a;从Centos7开始systemd代替了init&#xff0c;使用systemd机制来管理服务优势&#xff1a;并行处理所有服务&#xff0c;加速开机流程命令相对简单&#xff1a;所有操作均有systemctl命令来执行服务依赖性检测&#xff1a;systemctl命令启动服务时会自动启动依赖服…

    数据库索引视角:对比二叉树到红黑树再到B树

    当我们谈论数据库索引时&#xff0c;选择合适的数据结构至关重要。不同的数据结构在性能、复杂度以及适用场景上都有所不同。本文将通过对比二叉树、红黑树和B树&#xff0c;探讨它们如何影响数据库索引的表现。一、二叉树特性定义&#xff1a;每个节点最多有两个子节点。应用场…

    Redis-plus-plus 安装指南

    &#x1f351;个人主页&#xff1a;Jupiter.&#x1f680; 所属专栏&#xff1a;Redis 欢迎大家点赞收藏评论&#x1f60a;目录1.安装 hiredis2.下载 redis-plus-plus 源码3.编译/安装 redis-plus-plusC 操作 redis 的库有很多. 此处使⽤ redis-plus-plus.这个库的功能强⼤, 使…

    vue3动态的控制表格列的展示简单例子

    动态的控制表格列的展示&#xff0c; 可以勾选和取消某一列的显示本地存储上一次的配置表格内容支持通过slot自定义内容例子1 <script setup> import { reactive, ref, watch } from "vue"; import one from "./components/one.vue"; import One fro…

    微积分[4]|高等数学发展简史(两万字长文)

    文章目录前言解析几何学微积分学级数理论常微分方程&#xff5c;(1) 萌芽阶段&#xff5c;(2) 初创阶段&#xff5c;(3) 奠基阶段&#xff5c;(4) 现代发展阶段前言 高等数学通常仅是相对初等数学而言的&#xff0c;其内容并无身份确切的所指&#xff0c;大凡初等数学以外的数…

    系统思考—啤酒游戏经营决策沙盘认证

    下周&#xff0c;我们将为企业交付——《啤酒游戏经营决策沙盘—应对动态复杂系统的思考智慧》内部讲师认证课。啤酒游戏沙盘&#xff0c;我已交付过上百场。但这次的讲师认证班&#xff0c;不仅仅是分享课程技巧&#xff0c;更多的是分享“心法”。有些关键点&#xff0c;直到…

    深入详解PCB布局布线技巧-去耦电容的摆放位置

    目录 一、基础概念与核心作用 二、布局五大黄金原则 三、模拟电路的特殊处理 四、高频场景优化方案 和旁路电容是保障电源稳定性和信号完整性的核心元件。尽管它们的原理和作用常被讨论,但实际布局中的细节往往决定成败。 一、基础概念与核心作用 去耦电容:主要用于抑制…

    布隆过滤器的原理及使用

    背景介绍在互联网中&#xff0c;我们经常遇到需要在大量数据中判断目标数据是否存在的情况。例如&#xff0c;在网络爬虫中&#xff0c;我们需要判断某个网址是否已经被访问过。为了实现这一功能&#xff0c;通常需要使用一个容器来存储已访问过的网址。如果将这些数据直接存储…

    达梦 vs. Oracle :架构篇①——从“联邦制”到“中央集权”

    1. 引言&#xff1a;为何体系结构是第一课&#xff1f; 对于任何一个数据库而言&#xff0c;其体系结构是决定其性格、性能和应用场景的“基因”。理解了体系结构&#xff0c;尤其是在两种数据库之间进行切换时&#xff0c;才能真正做到知其然&#xff0c;并知其所以然。在所有…

    我的世界Java版1.21.4的Fabric模组开发教程(十九)自定义生物群系

    这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十九章——自定义生物群系。想要阅读其他内容&#xff0c;请查看或订阅上面的专栏。 生物群系(Biome) 是Minecraft中世界不同区域呈现特定的地貌景观&#xff0c;这些区域与现实世界类似&#xff0c;都具有和其…

    Mac (三)如何设置环境变量

    目录一、查看环境变量 &#x1f50d;1. 查看所有环境变量2. 查看特定变量二、临时设置&#xff08;当前终端有效&#xff09; ⚡1. 基本语法2. 实战示例三、永久设置&#xff08;全局生效&#xff09; &#x1f512;配置步骤&#xff1a;四、实战案例 &#x1f6e0;️案例1&…

    零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时

    摘要&#xff1a;在信创窗口期&#xff0c;我们把拥有2000存储过程、300链接服务器的核心业务&#xff0c;从 SQL Server 2016/2019 平移到 KingbaseES V9R4C12&#xff08;SQL Server 兼容版&#xff09;。本文以 30 分钟部署、TPCH 100G 性能 PK、真实踩坑修复、灰度割接 4 小…

    K8S HPA 弹性水平扩缩容 Pod 详解

    文章目录1、前置准备2、需求场景3、Scale 静态扩缩容3.1、创建 Deployment 脚本3.2、Scale 扩缩容3、HPA 自动扩缩容3.1、安装 Metrics3.2、创建 Deployment 演示案例3.3、创建 HPA3.4、触发 HPA 自动扩缩容1、前置准备 本次案例演示&#xff0c;我选择了阿里云ECS&#xff08…

    对话访谈|盘古信息×智晟威:深度挖掘数字化转型的奥秘

    在数字化转型的浪潮中&#xff0c;传统设备企业如何突破“纯硬件”的边界&#xff0c;实现从“卖产品”到“卖生态”的跨越&#xff1f;数字化转型究竟是“高不可攀的奢侈品”&#xff0c;还是“触手可及的生存技能”&#xff1f;近日&#xff0c;广东盘古信息科技股份有限公司…

    什么是模型预测控制?

    一、概念模型预测控制&#xff08;Model Predictive Control, MPC&#xff09;是一种先进的控制方法&#xff0c;广泛应用于工业过程控制、机器人控制、自动驾驶等领域。MPC的核心思想是利用系统的动态模型预测未来的行为&#xff0c;并通过优化算法计算出当前时刻的最优控制输…

    类与类加载器

    在Java中&#xff0c;类和类加载器是密切相关的两个概念&#xff0c;理解它们有助于我们更好地掌握Java的运行机制。什么是Java类&#xff1f;Java类就像是一个模板或蓝图&#xff0c;它定义了对象的属性和行为。比如"汽车"可以看作一个类&#xff0c;它有颜色、品牌…

    一文速通Python并行计算:14 Python异步编程-协程的管理和调度

    一文速通 Python 并行计算&#xff1a;14 Python 异步编程-协程的管理和调度 摘要&#xff1a; Python 异步编程基于 async/await 构建协程&#xff0c;运行在事件循环中。协程生成 Task&#xff0c;遇到 await 时挂起&#xff0c;I/O 完成触发回调恢复运行&#xff0c;通过…

    Node.js面试题及详细答案120题(16-30) -- 核心模块篇

    《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

    RabbitMQ:Windows版本安装部署

    目录一、概述二、OPT三、安装RabbitMQ四、登录测试一、概述 什么是MQ&#xff0c;有什么做作用&#xff1f; MQ即MessageQueue&#xff0c;消息队列。可以分为两部分理解&#xff1a;消息Message用于在不同的应用程序中传递数据。队列Queue&#xff0c;一种FIFO先进先出的数据…