Kubernetes Pod调度基础

Kubernetes Pod调度基础

前言

  • Kubernetes简化了应用部署,无需关心应用具体部署在哪台服务器上。
  • 通过kubectl或Dashboard管理应用,包括定位、执行命令、查看日志和监控。

ReplicationController和ReplicaSet

Replication Controller (RC)

  • 确保Pod副本数达到期望值,自动替换失败或终止的Pod。
  • 用法示例:
    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: nginx
    spec:
      replicas: 3
      selector:
        app: nginx
      template:
        metadata:
          name: nginx
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    

ReplicaSet (RS)

  • 支持基于集合的标签选择器,用于Deployment协调创建、删除和更新Pod。
  • 用法示例:
    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
      name: frontend
      labels:
        app: guestbook
        tier: frontend
    spec:
      replicas: 3
      selector:
        matchLabels:
          tier: frontend
        matchExpressions:
        - {key: tier, operator: In, values: [frontend]}
      template:
        metadata:
          labels:
            app: guestbook
            tier: frontend
        spec:
          containers:
          - name: php-redis
            image: nginx:1.7.9
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 80
    

标签与标签选择器

  • 标签用于标识Kubernetes对象,键值对形式。
  • 标签选择器用于选择一组对象,支持基于等式和集合的选择。

无状态应用管理Deployment

定义

  • 无状态服务不依赖其他请求,不存储持久化数据。
  • Kubernetes中通过Deployment管理无状态服务的Pod。

创建Deployment

  • 用法示例:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    

更新Deployment

  • 更新镜像或配置,Deployment会创建新的ReplicaSet并进行滚动升级。

回滚Deployment

  • 当更新不稳定时,可以回滚到之前的版本。

扩容Deployment

  • 调整Pod副本数以应对负载变化。

暂停和恢复Deployment更新

  • 暂停更新以便进行配置更改,之后恢复更新。

有状态应用管理StatefulSet

定义

  • 用于部署有状态且需要有序启动的应用程序,如数据库。

特征

  • 每个Pod有唯一序号,顺序性启动、更新和销毁。
  • 稳定的网络标识和持久化存储。

创建StatefulSet

  • 用法示例:
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: redis-sts
    spec:
      serviceName: redis-svc
      replicas: 2
      selector:
        matchLabels:
          app: redis-sts
      template:
        metadata:
          labels:
            app: redis-sts
        spec:
          containers:
          - name: redis
            image: redis:5-alpine
            ports:
            - containerPort: 6379
    

扩容和缩容StatefulSet

  • 调整副本数,有序管理Pod的增加和减少。

删除StatefulSet

  • 可选择级联删除或非级联删除。

守护进程集DaemonSet

定义

  • 确保全部或符合条件的节点上运行一个Pod副本。

创建DaemonSet

  • 用法示例:
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: pod-controller
    spec:
      selector:
        matchLabels:
          app: nginx-pod
      template:
        metadata:
          labels:
            app: nginx-pod
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    

删除DaemonSet

  • 删除DaemonSet时,可以选择是否删除其创建的Pod。

CronJob

定义

  • 用于周期性执行任务,类似于Linux系统的Cron。

创建CronJob

  • 用法示例:
    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "*/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: hello
                image: busybox:v1
                args:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
              restartPolicy: OnFailure
    

删除CronJob

  • 删除CronJob及其创建的Job和Pod。

这份笔记概括了Kubernetes中Pod调度的基础知识,包括无状态和有状态应用的管理,以及守护进程集和计划任务的创建和删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Small Cow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值