某不知名博客 某不知名博客
首页
  • 《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章-控制器与节点驱逐
    • 暂缓更新
    • 练习题

      • 练习题-1
      • 练习题-2
      • 练习题-3
      • 练习题-4
      • 练习题-5
      • 练习题-6
      • 练习题-7
        • 理论练习(开放性试题)
        • 实操练习
        • 实操练习答案
          • 1. 控制器deploy-seven
          • 2. 修改这个 deployment 的副本数为5。
          • 3. 变更这个 deployment 的镜像为nginx:1.9,通过注释来记录变更信息,内容为"Update image to nginx:1.9"。
          • 4. 列出这个 deployment 的历史镜像变更记录,然后查看记录 2 的详情。
          • 5. 变更这个 deployment 的镜像为nginx:1.7.9,通过注释来记录变更信息,内容为"Update image to nginx:1.7.9"。
          • 6. 客户觉得还是第一版最好,请你将这个 deployment 的镜像回滚至记录 1。
      • 练习题-8
    • 常用命令及yaml配置

  • CKS教程

  • 云原生安全
  • Kubernetes教程
  • 练习题
carsaid
2023-11-21
目录

练习题-7

# 课后练习题-7

# 理论练习(开放性试题)

涵盖第 9 章的内容。

  1. 在低版本和高本版的 k8s 中,如何记录镜像变更信息?
答案
  • 在低版本的 k8s 中,执行变更命令时,可以通过添加选项--record来记录变更信息。
  • 在高版本的 k8s 中,执行变更命令之后,需要修改控制器的注释kubernetes.io/change-cause=<变更原因>来记录变更信息。

目前 k8s 不支持修改前置历史记录的变更信息,你必须在每次变更之后,立马修改注释。

没错,这次的理论就一题。

# 实操练习

涵盖第 8 章和第 9 章的内容。

  1. 创建一个 Deployment,要求如下:
    • 名称为deploy-seven
    • 副本数为2
    • 配置滚动更新,Pod 的创建数量和删除数量都采用百分比20%
    • Pod 模板的镜像为nginx:latest,镜像下载策略为IfNotPresent
    • 为 Pod 配置资源限制,CPU 使用上限为400个微核心,内存使用上限为800 MiB
  2. 修改这个 deployment 的副本数为5。
  3. 变更这个 deployment 的镜像为nginx:1.9,通过注释来记录变更信息,内容为"Update image to nginx:1.9"。
  4. 列出这个 deployment 的历史镜像变更记录,然后查看记录 2 的详情。
  5. 变更这个 deployment 的镜像为nginx:1.7.9,通过注释来记录变更信息,内容为"Update image to nginx:1.7.9"。
  6. 客户觉得还是第一版最好,请你将这个 deployment 的镜像回滚至记录 1。

答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


# 实操练习答案

# 1. 控制器deploy-seven

创建一个 Deployment,要求如下: + 控制器名称为deploy-seven + 副本数为2 + 配置滚动更新,Pod 的创建数量和删除数量都采用百分比20% + Pod 模板的镜像为nginx:latest,镜像下载策略为IfNotPresent + 容器名称为pod1 + 为 Pod 配置资源限制,CPU 使用上限为400个微核心,内存使用上限为800 MiB

快速生成一个 yaml 文件,然后使用 vim 对其进行编辑:

kubectl create deployment deploy-seven --image nginx:latest --dry-run=client -o yaml > deploy-seven.yaml

vim deploy-seven.yaml
1
2
3

修改之前:

# 旧
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: deploy-seven
  name: deploy-seven
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deploy-seven
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: deploy-seven
    spec:
      containers:
      - image: nginx:latest
        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
25

修改之后:

# 新
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: deploy-seven
  name: deploy-seven                    # 控制器名称
spec:
  replicas: 2                           # 副本数
  selector:
    matchLabels:
      app: deploy-seven
  strategy:                             # 滚动更新策略
    rollingUpdate:
        maxSurge: 20%
        maxUnavailable: 20%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: deploy-seven
    spec:
      containers:
      - image: nginx:latest             # 镜像
        imagePullPolicy: IfNotPresent   # 镜像下载策略
        name: pod1                      # 容器名称
        resources:                      # 资源限制
          limits:
            cpu: 400m
            memory: 800Mi
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
25
26
27
28
29
30
31
32
33

创建这个控制器:

kubectl apply -f deploy-seven.yaml
1
Not Found Image

# 2. 修改这个 deployment 的副本数为5。

kubectl scale deployment deploy-seven --replicas=5
1
Not Found Image

# 3. 变更这个 deployment 的镜像为nginx:1.9,通过注释来记录变更信息,内容为"Update image to nginx:1.9"。

kubectl set image deployment deploy-seven pod1=nginx:1.9
kubectl annotate deployment deploy-seven kubernetes.io/change-cause="Update image to nginx:1.9"
1
2
Not Found Image

# 4. 列出这个 deployment 的历史镜像变更记录,然后查看记录 2 的详情。

kubectl rollout history deployment deploy-seven
kubectl rollout history deployment deploy-seven --revision=2
1
2
Not Found Image

# 5. 变更这个 deployment 的镜像为nginx:1.7.9,通过注释来记录变更信息,内容为"Update image to nginx:1.7.9"。

kubectl set image deployment deploy-seven pod1=nginx:1.7.9
kubectl annotate deployment deploy-seven kubernetes.io/change-cause="Update image to nginx:1.7.9"

kubectl rollout history deployment deploy-seven
1
2
3
4
Not Found Image

# 6. 客户觉得还是第一版最好,请你将这个 deployment 的镜像回滚至记录 1。

kubectl rollout undo deployment deploy-seven --to-revision=1
1
Not Found Image
编辑 (opens new window)
练习题-6
练习题-8

← 练习题-6 练习题-8→

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