某不知名博客 某不知名博客
首页
  • 《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
        • 理论练习(开放性试题)
        • 实操练习
        • 实操练习答案
          • 1. 列出命名空间kube-system中的 Pod,并查看这些 Pod 是运行在哪些节点上的
          • 2. 列出所有 Pod 的负载信息
          • 3. 计算所有命名空间中一共有多少个 Pod
          • 4. 创建命名空间ns1
          • 5. 通过命令行创建一个Pod
          • 6. 创建包含两个容器的 Pod
          • 7. 将pod1的/etc/hosts文件拷贝到物理机的当前目录中
          • 8. 查看pod2容器c2的日志信息
          • 9. 在pod2容器c2中执行命令ifconfig
          • 10. 修改worker01静态Pod存储路径,并创建静态Pod
          • 11. 列出含有标签run=dynamic的所有Pod,然后同时删除这些 Pod
          • 12. 删除其余的 Pod
      • 练习题-4
      • 练习题-5
      • 练习题-6
      • 练习题-7
      • 练习题-8
    • 常用命令及yaml配置

  • CKS教程

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

练习题-3

# 课后练习题-3

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

涵盖第 5 章的内容。

  1. master 节点上静态 Pod 的 yaml 文件默认存储在哪个目录下?
  2. 修改静态 Pod 存储路径的方式有两种,是哪两种?
答案
  1. master 静态 Pod 的 yaml 文件默认存储于/etc/kubernetes/manifests/目录下。
  2. 修改静态 Pod 路径:
  • 第一种——修改 kubelet 服务文件/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf,在选项Environment="..."后面添加参数--pod-manifest-path=<目录>。
  • 第二种——修改 k8s 配置文件/var/lib/kubelet/config.yaml,重新配置参数staticPodPath: <目录>。

# 实操练习

涵盖第 5 的内容。

  1. 列出命名空间kube-system中的 Pod,并查看这些 Pod 是运行在哪些节点上的
  2. 列出所有 Pod 的负载信息,并按照内存使用率进行排序
  3. 计算所有命名空间中一共有多少个 Pod
  4. 创建命名空间ns1
  5. 通过命令行创建一个 Pod,要求如下:
  • 名称为pod1
  • 容器镜像为nginx
  • 镜像下载策略为IfNotPresent
  • 设置标签run=dynamic
  1. 创建包含两个容器的 Pod,要求如下:
  • 名称为pod2
  • 设置标签run=dynamic
  • 第一个容器名称为c1,镜像为nginx
  • 第二个容器名称为c2,镜像为alpine,创建该容器时运行命令echo "hello alpine" && sleep 999999
  • 容器的镜像下载策略都为IfNotPresent
  1. 将pod1的/etc/hosts文件拷贝到物理机的当前目录中
  2. 查看pod2容器c2的日志信息
  3. 在pod2容器c2中执行命令ifconfig
  4. 切换至 worker01 节点,将静态 Pod 存储路径修改为/opt/static-worker01/。然后在 worker01 上创建一个静态 Pod,要求如下:
  • 名称为pod-static
  • 命名空间为ns1
  • 设置标签run=static
  • 容器镜像为nginx
  • 镜像下载策略为IfNotPresent
  1. 列出含有标签run=dynamic的所有 Pod,然后同时删除这些 Pod
  2. 删除其余的 Pod

答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


答案分隔线


# 实操练习答案

# 1. 列出命名空间kube-system中的 Pod,并查看这些 Pod 是运行在哪些节点上的

kubectl get pods -n kube-system -o wide
1

# 2. 列出所有 Pod 的负载信息

kubectl top pods -A --sort-by=memory
1

# 3. 计算所有命名空间中一共有多少个 Pod

kubectl get pods -A -o name | wc -l
1

# 4. 创建命名空间ns1

kubectl create ns ns1
1

# 5. 通过命令行创建一个Pod

Pod 要求:

  • 名称为pod1
  • 容器镜像为nginx
  • 镜像下载策略为IfNotPresent
  • 设置标签run=dynamic
kubectl run pod1 --image nginx --image-pull-policy=IfNotPresent -l run=dynamic
1

# 6. 创建包含两个容器的 Pod

Pod 要求:

  • 名称为pod2
  • 设置标签run=dynamic
  • 第一个容器名称为c1,镜像为nginx
  • 第二个容器名称为c2,镜像为alpine,创建该容器时运行命令echo "hello alpine" && sleep 999999
  • 容器的镜像下载策略都为IfNotPresent
# pod2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod2
  labels:
    run: dynamic
spec:
  containers:
  - name: c1
    image: nginx
    imagePullPolicy: IfNotPresent
  - name: c2
    image: alpine
    imagePullPolicy: IfNotPresent
    command: ['sh', '-c', 'echo "hello alpine" && sleep 999999']
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
kubectl apply -f pod2.yaml
1

# 7. 将pod1的/etc/hosts文件拷贝到物理机的当前目录中

kubectl cp pod1:/etc/hosts ./hosts
1

# 8. 查看pod2容器c2的日志信息

kubectl logs pod2 -c c2
1

# 9. 在pod2容器c2中执行命令ifconfig

kubectl exec pod2 -c c2 -- ifconfig
1

# 10. 修改worker01静态Pod存储路径,并创建静态Pod

手动打开文件修改:

  • 方式一,打开文件/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf,在选项Environment="..."后面添加参数--pod-manifest-path=<目录>
  • 方式二,打开文件/var/lib/kubelet/config.yaml,修改参数staticPodPath: <目录>

通过命令快捷修改:

  • sed -i ...:将更改应用到文件中
  • s/<原始内容>/<替换后的内容>/g:s 是替换,g 是全局搜索
# 通过命令快捷修改
sed -i 's/staticPodPath: .*/staticPodPath: \/opt\/static-worker01\//g' /var/lib/kubelet/config.yaml

# 修改之后, 需要创建对应目录 并 重启服务
mkdir /opt/static-worker01
systemctl restart kubelet
1
2
3
4
5
6

Pod 要求:

  • 名称为pod-static
  • 命名空间为ns1
  • 设置标签run=static
  • 容器镜像为nginx
  • 镜像下载策略为IfNotPresent
# pod-static.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-static
  namespace: ns1
  labels:
    run: static
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: pod-static
1
2
3
4
5
6
7
8
9
10
11
12
13

静态 Pod 无需通过 kubectl 创建,只要放到对应的存储目录中即可。

# worker01创建静态Pod
cp ./pod-static.yaml /opt/static-worker01/

# master查看
kubectl get pods -n ns1
1
2
3
4
5

# 11. 列出含有标签run=dynamic的所有Pod,然后同时删除这些 Pod

kubectl get pods -l run=dynamic
kubectl delete pods -l run=dynamic --force
1
2

# 12. 删除其余的 Pod

只剩下 worker01 上的一个静态 Pod。

# worker01
rm -rf /opt/static-worker01/pod-static.yaml
1
2
编辑 (opens new window)
练习题-2
练习题-4

← 练习题-2 练习题-4→

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