当前位置:首页 > 随笔 > 正文内容

Kubernetes 控制器资源调度机制

访客 随笔 2026年6月15日 1

标签与选择器机制

通过标签(Label)和选择器(Selector)实现资源关联与管理

标签配置

  • 在资源metadata.labels字段配置
  • 命令行操作:
    kubectl label <resource-type> <resource-name> <key=value>
      --overwrite  # 修改现有标签
      --show-labels # 显示全部标签
      -A -l 'env=prod' # 跨命名空间查询
      -l 'tier in (frontend,backend)' # 多值匹配
      -l 'env=prod,app=web' # 多条件匹配

选择器应用

  • 在资源spec.selector字段配置
  • 命令行使用同上

Deployment控制器

Deployment架构图

基础操作

# 创建Deployment
kubectl create deploy web-server --image=nginx:1.7.9

# 查看资源状态
kubectl get deploy
kubectl get rs
kubectl get pods --show-labels

滚动更新

# 更新镜像版本
kubectl set image deploy/web-server nginx=nginx:1.9.1

# 查看更新状态
kubectl rollout status deploy web-server
kubectl describe deploy web-server

版本回退

# 查看历史版本
kubectl rollout history deploy/web-server

# 回退操作
kubectl rollout undo deploy/web-server
kubectl rollout undo deploy/web-server --to-revision=2

扩缩容

# 调整副本数量
kubectl scale deploy/web-server --replicas=5

更新暂停与恢复

kubectl rollout pause deploy/web-server
kubectl rollout resume deploy/web-server

配置示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:1.9.1

StatefulSet控制器

特性:

  • 稳定网络标识:Pod名称格式<statefulset-name>-<ordinal>
  • 持久化存储:通过volumeClaimTemplate实现
  • 有序部署:按索引顺序创建/删除Pod

无头服务配置

apiVersion: v1
kind: Service
metadata:
  name: db-service
spec:
  clusterIP: None
  selector:
    app: database

StatefulSet配置

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: db-node
spec:
  serviceName: db-service
  replicas: 3
  template:
    metadata:
      labels:
        app: database
    spec:
      containers:
      - name: db
        image: mysql:5.7
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: ssd
      resources:
        requests:
          storage: 10Gi

DaemonSet控制器

DaemonSet架构图

配置示例

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: log-collector
spec:
  selector:
    matchLabels:
      name: log-agent
  template:
    metadata:
      labels:
        name: log-agent
    spec:
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      containers:
      - name: fluentd
        image: fluentd:latest
        volumeMounts:
        - name: host-logs
          mountPath: /host/log
      volumes:
      - name: host-logs
        hostPath:
          path: /var/log

节点选择

spec:
  template:
    spec:
      nodeSelector:
        logging: enabled

HPA自动扩缩容

指标服务部署

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

HPA配置

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: app-scaler
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 60

相关文章

可以按小时收费的VPS

很多 VPS 提供商都支持 按小时计费(hourly billing),想短期试用 / 临时搭建节点、测试网络、短期项目等场景非常合适。下面是当前最主流且靠谱的按小时 VPS 选项,分别按不同需求场景整理: 1. Vultr(全球节点,包括日本) 按小时计费 可选机房:东京 / 大阪 / 洛杉矶 / 法兰克福 / 伦敦 … 支持 PayPal(部分情况),但更常用信用卡/PayPal+卡价格参考$...

在 iPhone 上下载国外App

地区/国家限制App Store 会根据 Apple ID 的国家或地区限制应用下载。如果你的 Apple ID 绑定的是中国大陆,就可能无法下载 OpenAI 官方的 ChatGPT 应用,因为它在大陆 App Store 不上架。解决办法:换成美国、加拿大、香港等地区的 Apple ID。或者在现有 Apple ID 上更改地区。注册一个国外 Apple ID(推荐)比如注册 美国区 Appl...

Node.js 中的异步编程:回调与 Promise

Node.js 是一个基于 JavaScript 构建的单线程、非阻塞运行环境,它通过异步编程机制来高效处理多个操作。在执行如文件读取、API 请求或数据库查询等任务时,Node.js 不会等待这些操作完成,而是使用回调函数和 Promise 来避免阻塞主线程。 回调方式实现异步 那么当异步操作完成后,Node.js 如何知道接下来要做什么呢?这就要用到 回调函数(callback)。 回调本质上...

Selenium自动化测试入门指南

Selenium自动化测试入门指南

什么是自动化测试? 自动化测试是指利用软件工具自动执行测试用例,模拟用户操作,如打开网页、点击链接、输入文本等,并验证结果是否符合预期。 其主要优点包括: 大幅减少人工成本 测试速度快 可以在非工作时间运行 支持持续集成和交付 然而,它也存在一些局限性,例如开发成本较高、不适合快速变化的项目、依赖稳定的UI界面等。 自动化测试的应用条件 适合引入自动化测试的情况包括: 手动测试耗时且需要大量...

MariaDB Galera集群故障快速恢复指南

OpenStack控制节点采用三节点MariaDB Galera集群架构。当数据库集群因故障重启时,有时会出现Galera集群无法正常启动的问题。虽然有多种方法可以恢复数据库服务,但如何实现快速启动同时确保数据完整性呢? 通过分析日志发现,MariaDB Galera集群节点宕机时会在日志中输出以下信息: [Note] WSREP: 新集群视图:全局状态: 874d8e7e-5980-11e8-8...

Android 中 EventBus 的通信机制与实现原理深度解析

EventBus 核心设计思想 EventBus 是一个基于观察者模式的事件总线框架,广泛应用于 Android 平台以实现组件解耦。它通过中心化的消息分发机制,使不同层级、不同线程的对象能够以"发布-订阅"方式通信,避免了传统接口回调或广播带来的强依赖问题。 核心角色说明 事件(Event):任意 Java 对象,作为数据载体,如网络状态变更通知、用户登录信息等。 发布者(Publi...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。