备战CKA: 创建PV|创建PVC|查看Pod日志

257 阅读3分钟

创建PV

  • apiVersion: 指定使用的 Kubernetes API 版本。
  • kind: 定义资源类型,这里是 PersistentVolume。
  • metadata.name: PV 的名称,即 app-config
  • spec.capacity.storage: 设置 PV 的容量为 1GiB。
  • spec.accessModes: 指定 PV 的访问模式,这里设置为 ReadWriteMany,允许多个节点以读写方式同时挂载该卷。
  • spec.hostPath.path: 指定在宿主机上的路径,即 /srv/app-config

模拟题目:

设置配置环境: [candidate@node-1] $ kubectl config use-context hk8s

Task

创建名为 app-config 的 persistent volume,容量为 1Gi,访问模式为 ReadWriteMany。 volume 类型为 hostPath,位于 /srv/app-config


参考:

任务 --> 配置 Pods 和容器 --> 配置 Pod 以使用 PersistentVolume 作为存储 kubernetes.io/zh-cn/docs/…


解答:

考试的时候务必记住切换集群, 注意集群名称 kubectl config use-context k8s

image.png

vim pv.yaml

pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: app-config
 # labels:
 #   type: local
spec:
 # storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/srv/app-config"

应用文件


kubectl apply -f pv.yaml

检查:


kubectl get pv

file

创建PVC

模拟题目:

设置配置环境: [candidate@node-1] $ kubectl config use-context ok8s

Task

创建一个新的PersistentVolumeClaim: 名称: pv-volume Class: csi-hostpath-sc 容量: 10Mi

创建一个新的Pod,来将PersistentVolumeClaim作为volume进行挂载: 名称:web-server Image:nginx:1.16 挂载路径:/usr/share/nginx/html 配置新的Pod,以对volume具有ReadWriteOnce权限。

最后,使用kubectl edit或kubectl patch将 PersistentVolumeClaim的容量扩展为70Mi,并记录此更改。


参考:

任务 --> 配置 Pods 和容器 --> 配置 Pod 以使用 PersistentVolume 作为存储 kubernetes.io/zh-cn/docs/…


解答:

image.png

考试的时候务必记住切换集群, 注意集群名称 kubectl config use-context k8s

vim pvc.yaml

pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-volume  #pvc名字
spec:
  storageClassName: csi-hostpath-sc  # class名
  accessModes:
    - ReadWriteOnce  # 注意,考试时的访问模式可能有ReadWriteMany和ReadOnlyMany和ReadWriteOnce,根据题目要求写。
  resources:
    requests:
      storage: 10Mi  # 大小
kubectl apply -f pvc.yaml
vim pvc-pod.yaml

pvc-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  volumes:
    - name: task-pv-storage # 两处name需要一样
      persistentVolumeClaim:
        claimName: pv-volume  # 这个要使用上面创建的pvc名字
  containers:
    - name: nginx
      image: nginx:1.16  # 使用指定镜像
      volumeMounts:
        - mountPath: "/usr/share/nginx/html" # 挂载容器内位置
          name: task-pv-storage # 两处name需要一样
kubectl apply -f pvc-pod.yaml

修改PVC配置

kubectl edit pvc pv-volume --record

总结

  1. 创建 PersistentVolumeClaim

    • 使用 pv-volume-pvc.yaml 文件创建 PersistentVolumeClaim
    • kubectl apply -f pv-volume-pvc.yaml
  2. 创建 Pod 并挂载 PersistentVolumeClaim

    • 使用 web-server-pod.yaml 文件创建 Pod
    • kubectl apply -f web-server-pod.yaml
  3. 扩展 PersistentVolumeClaim 容量

    • 使用 kubectl edit 或 kubectl patch 修改 PersistentVolumeClaim 的容量至 70Mi。

查看Pod日志

模拟题目:

设置配置环境: [candidate@node-1] $ kubectl config use-context k8s

Task

监控 pod foo 的日志并: 提取与错误 RLIMIT_NOFILE相对应的日志行 将这些日志行写入 /opt/KUTR00101/foo


参考:

kubectl log -h kubernetes.io/zh-cn/docs/…


解答:

考试的时候务必记住切换集群, 注意集群名称 kubectl config use-context k8s

image.png

kubectl logs foo | grep -i "RLIMIT_NOFILE" > /opt/KUTR00101/foo

详细说明

1. 获取 Pod foo 的日志

首先,我们需要获取 Pod foo 的日志。这可以通过 kubectl 命令来实现。

kubectl logs foo > foo.log
  • 作用:此命令将 Pod foo 的日志输出到本地文件 foo.log 中。
  • 解释kubectl logs foo 命令会获取 Pod foo 的日志输出。> 符号将日志重定向到 foo.log 文件中。

2. 过滤出包含 RLIMIT_NOFILE 错误的日志行

接下来,我们需要从 foo.log 文件中过滤出包含 RLIMIT_NOFILE 关键字的日志行。

grep "RLIMIT_NOFILE" foo.log > rlimit_nofile.log
  • 作用:此命令将包含 RLIMIT_NOFILE 关键字的日志行筛选出来,并保存到 rlimit_nofile.log 文件中。
  • 解释grep "RLIMIT_NOFILE" foo.log 命令会搜索 foo.log 文件中包含 RLIMIT_NOFILE 的行。> 符号将这些行重定向到 rlimit_nofile.log 文件中。

3. 将过滤后的日志行写入指定文件

最后,我们需要将过滤后的日志行写入指定的文件 /opt/KUTR00101/foo/rlimit_nofile.log

mkdir -p /opt/KUTR00101/foo
mv rlimit_nofile.log /opt/KUTR00101/foo/rlimit_nofile.log
  • 作用:此命令会创建目录 /opt/KUTR00101/foo(如果不存在),并将 rlimit_nofile.log 文件移动到该目录中。

  • 解释

    • mkdir -p /opt/KUTR00101/foo:创建目录 /opt/KUTR00101/foo-p 参数表示即使路径中的中间目录不存在也会自动创建。
    • mv rlimit_nofile.log /opt/KUTR00101/foo/rlimit_nofile.log:将 rlimit_nofile.log 文件移动到 /opt/KUTR00101/foo 目录,并重命名为 rlimit_nofile.log

检查:

cat /opt/KUTR00101/foo