日常更新

This commit is contained in:
2026-03-29 09:08:01 +08:00
parent 31709425e2
commit befdefd222
224 changed files with 7240 additions and 3297 deletions

View File

@@ -0,0 +1,158 @@
# 对应文档docs/04-13-nodejs-HPA.md
# 累积04-12 + HorizontalPodAutoscalerCPU 50%min 1 max 5
apiVersion: v1 # PVC API 版本
kind: PersistentVolumeClaim # 持久卷声明
metadata: # PVC 元信息
name: nodejs-demo-data # PVC 名称
namespace: default # 命名空间
spec: # PVC 规格
accessModes: # 访问模式
- ReadWriteOnce # RWO同一时间仅单节点挂载读写
storageClassName: local-path # 存储类
resources: # 资源请求
requests: # 配额请求
storage: 1Gi # 申请容量
---
apiVersion: v1 # ConfigMap API 版本
kind: ConfigMap # 配置资源
metadata: # ConfigMap 元信息
name: nodejs-demo-config # ConfigMap 名称
namespace: default # 命名空间
data: # 配置键值
APP_MSG: "Hello from ConfigMap" # 示例消息内容
---
apiVersion: apps/v1 # Deployment API 版本
kind: Deployment # 工作负载Deployment
metadata: # Deployment 元信息
name: nodejs-demo # Deployment 名称
namespace: default # 命名空间
spec: # Deployment 规格
replicas: 3 # 副本数
strategy: # 更新策略
type: RollingUpdate # 滚动更新
rollingUpdate: # 滚动更新参数
maxSurge: 1 # 更新时最多额外增加 1 个 Pod
maxUnavailable: 0 # 更新时不可用 Pod 数为 0
selector: # Pod 选择器
matchLabels: # 标签匹配集合
app: nodejs-demo # 匹配 app=nodejs-demo 的 Pod
template: # Pod 模板
metadata: # Pod 元信息
labels: # Pod 标签
app: nodejs-demo # 与 selector.matchLabels 对齐
spec: # Pod 规格
nodeSelector: # 节点选择
kubernetes.io/hostname: ylc62 # 固定到指定节点(按实际修改)
securityContext: # Pod 级安全上下文
fsGroup: 1000 # 挂载卷文件组 ID
containers: # 容器列表
- name: nodejs-demo # 容器名
image: node:18.20-alpine # Node.js 镜像
imagePullPolicy: IfNotPresent # 拉取策略
securityContext: # 容器级安全上下文
allowPrivilegeEscalation: false # 禁止提权
runAsNonRoot: true # 非 root 运行
runAsUser: 1000 # 运行用户 UID
readOnlyRootFilesystem: true # 根文件系统只读
env: # 环境变量
- name: APP_MSG # 环境变量名
valueFrom: # 从引用源取值
configMapKeyRef: # 从 ConfigMap key 读取
name: nodejs-demo-config # ConfigMap 名称
key: APP_MSG # ConfigMap 键名
command: # 启动命令
- node # 执行 node
- "-e" # 执行内联脚本
- | # 多行 JS 脚本(内容保持原样)
const http=require('http');
const msg=process.env.APP_MSG||'no env';
http.createServer((q,s)=>s.end(msg)).listen(8080);
ports: # 容器端口
- containerPort: 8080 # 监听端口
resources: # 资源请求与限制
requests: # 最小资源请求
cpu: "50m" # 请求 CPU
memory: "64Mi" # 请求内存
limits: # 资源上限
cpu: "500m" # CPU 限制
memory: "256Mi" # 内存限制
livenessProbe: # 存活探针
httpGet: # HTTP 探测
path: / # 探测路径
port: 8080 # 探测端口
initialDelaySeconds: 3 # 初始延迟
periodSeconds: 10 # 探测周期
readinessProbe: # 就绪探针
httpGet: # HTTP 探测
path: / # 探测路径
port: 8080 # 探测端口
initialDelaySeconds: 2 # 初始延迟
periodSeconds: 5 # 探测周期
volumeMounts: # 卷挂载
- name: tmp # 临时卷名称
mountPath: /tmp # 容器内临时目录
- name: data # 数据卷名称
mountPath: /data # 容器内数据目录
volumes: # 卷定义
- name: tmp # 临时卷
emptyDir: {} # 空目录卷
- name: data # 数据卷
persistentVolumeClaim: # 卷来源为 PVC
claimName: nodejs-demo-data # 绑定 PVC 名称
---
apiVersion: v1 # Service API 版本
kind: Service # Service 资源
metadata: # Service 元信息
name: nodejs-demo # Service 名称
namespace: default # 命名空间
spec: # Service 规格
selector: # 选择后端 Pod
app: nodejs-demo # 选中 app=nodejs-demo
ports: # 端口映射
- port: 80 # Service 暴露端口
targetPort: 8080 # 转发到容器端口
---
apiVersion: networking.k8s.io/v1 # Ingress API 版本
kind: Ingress # Ingress 资源
metadata: # Ingress 元信息
name: nodejs-demo # Ingress 名称
namespace: default # 命名空间
annotations: # Traefik 注解
traefik.ingress.kubernetes.io/router.entrypoints: websecure # 使用 websecure(HTTPS) 入口
spec: # Ingress 规则
tls: # TLS 配置
- hosts: # 证书覆盖域名
- app.example.local # 域名
secretName: nodejs-demo-tls # 引用的 TLS Secret 名称
rules: # 路由规则列表
- host: app.example.local # 主机名匹配
http: # HTTP 路由
paths: # 路径列表
- path: /api # 匹配 API 路径前缀
pathType: Prefix # 前缀匹配
backend: # 后端目标
service: # 后端 Service
name: nodejs-demo # Service 名称
port: # Service 端口
number: 80 # 端口号
---
apiVersion: autoscaling/v2 # HPA API 版本
kind: HorizontalPodAutoscaler # 水平自动扩缩容资源
metadata: # HPA 元信息
name: nodejs-demo # HPA 名称
namespace: default # 命名空间
spec: # HPA 规格
scaleTargetRef: # 伸缩目标引用
apiVersion: apps/v1 # 目标 API 版本
kind: Deployment # 目标资源类型
name: nodejs-demo # 目标 Deployment 名称
minReplicas: 1 # 最小副本数
maxReplicas: 5 # 最大副本数
metrics: # 伸缩指标
- type: Resource # 资源指标类型
resource: # 资源指标配置
name: cpu # 指标资源CPU
target: # 目标值
type: Utilization # 目标类型:利用率
averageUtilization: 50 # 目标平均 CPU 利用率(%