某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 学习建议

  • Docker命令大全
  • Kubernetes教程

    • Kubernetes(K8s)学习教程 - 前言
    • 第1章-Kubernetes集群部署
    • 第2章-便捷性设置以及集群插件的安装
    • 第3章-基础操作
    • 第4章-集群升级
    • 第5章-Pod
    • 第6章-Pod生命周期与资源限制
    • 第7章-Pod与节点
    • 第8章-控制器Deployment
    • 第9章-Deployment镜像变更和滚动更新
    • 第10章-其他控制器-以及标签表达式
    • 第11章-控制器与节点驱逐
    • 暂缓更新
    • 练习题

    • 常用命令及yaml配置

      • 常见的集群配置文件
      • kubectl

      • kubeadm

      • ctr

      • etcd(etcdctl)

      • yaml常用配置项

        • Pod文件常用配置项
        • LimitRange文件常用配置项
        • ResourceQuota文件常用配置项
        • 控制器(Deployment)
          • 一个简单的Deployment控制器
            • spec.replicas
            • spec.template
            • spec.selector.matchLabels
            • matchLabels
            • matchExpressions
            • (1)同键不同值
            • (2)某个键是否存在/不存在
            • spec.strategy
        • 水平自动扩缩(HPA)
        • 其他控制器(DS、RC和RS)
        • 持久卷(PV)
        • 持久卷申领(PVC)
        • 存储类(StorageClass)
        • Secret
        • ConfigMap
        • 任务(Job)
        • 周期任务(CronJob)
        • 服务(Service)
        • 路由规则(Ingress)
        • 网络策略(NetworkPolicy)
        • 角色(Role)
        • 角色绑定(RoleBinding)
        • 集群角色(ClusterRole)
        • 集群角色绑定(ClusterRoleBinding)
        • 证书签名请求(CertificateSigningRequest)
      • 具有特殊作用的标签或注释

  • CKS教程

  • 云原生安全
  • Kubernetes教程
  • 常用命令及yaml配置
  • yaml常用配置项
carsaid
2023-11-27
目录

控制器(Deployment)

# Deployment yaml文件常用配置项

# 1一个简单的Deployment控制器

学习更多

  • 官方文档-Deployment (opens new window)

快速生成一个 Deployment 的配置文件。

kubectl create deployment deploy-test --image nginx --dry-run=client -o yaml > deploy-test.yaml
1

文件内容:

  • apiVersion:Deployment 的 API 版本是固定的apps/v1
  • kind:写的是资源名称Deployment
  • metadata:和其他资源一样,包含当前资源的元数据信息
  • spec:包含 Deployment 的具体配置内容
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: deploy-test
  name: deploy-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deploy-test
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: deploy-test
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# specspec.replicas

需要维持的 Pod 数量(副本数)。

spec:
  replicas: 1
1
2

# specspec.template

Pod 模板,和标准的 Pod 配置文件基本一致,只有少部分区别:

  • Pod 模板里没有apiVersion字段
  • Pod 模板里没有kind字段
  • Pod 模板里没有metadata.name字段
spec:
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: deploy-test
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
1
2
3
4
5
6
7
8
9
10
11

# specspec.selector.matchLabels

根据哪些标签来追踪 Pod。

# spec.selector.matchLabels

键值对的形式,和设置标签时一样。

spec:
  selector:
    matchLabels:
      <键>: <值>
      ...
1
2
3
4
5

# spec.selector.matchExpressions

高级用法,标签表达式(又称为 “选择算符”)。

# (1)同键不同值
  • 操作In,追踪具有标签run=abc/xyz/jkl(三追一)的任意 Pod
  • 操作NotIn,不追踪具有标签run=ufo的任意 Pod
# 第一种编写格式,一字排开的折叠法
spec:
  selector:
    matchExpressions:
    - { key: run, operator: In, values: [abc, xyz, jkl] }
    - { key: run, operator: NotIn, values: [ufo] }
1
2
3
4
5
6

另一种编写格式。

# 第二种编写格式,展开法
spec:
  selector:
    matchExpressions:
    - key: run
      operator: In
      values:
      - abc
      - xyz
      - jkl
    - key: run
      operator: NotIn
      values:
      - ufo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# (2)某个键是否存在/不存在
  • 追踪标签键名为healthy的 Pod
  • 拒绝带有bad标签的 Pod
spec:
  selector:
    matchExpressions:
    - { key: healthy, operator: Exists}
    - { key: bad, operator: DoesNotExist}
1
2
3
4
5

注意

Exists后面有字母s,而DoesNotExist后面是没有的。

# specspec.strategy

滚动更新。

  • maxSurge:当镜像被变更时,依次创建25%个新的 Pod
  • maxUnavailable:当镜像被变更时,依次删除25%个旧的 Pod
...
spec:
  strategy:                     # 控制器策略
    rollingUpdate:              # 滚动更新参数
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate         # 策略类型
1
2
3
4
5
6
7

如果不想使用百分比,也可以改为使用绝对数值。

...
spec:
  strategy:
    rollingUpdate:
      maxSurge: 2               # 依次创建两个新的 Pod
      maxUnavailable: 2         # 依次删除两个旧的 Pod
    type: RollingUpdate
1
2
3
4
5
6
7

提示

若你没有配置滚动更新,那么默认值皆为25%。

编辑 (opens new window)
ResourceQuota文件常用配置项
水平自动扩缩(HPA)

← ResourceQuota文件常用配置项 水平自动扩缩(HPA)→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式