创建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
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
创建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/…
解答:
考试的时候务必记住切换集群, 注意集群名称 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
总结
-
创建
PersistentVolumeClaim:- 使用
pv-volume-pvc.yaml文件创建PersistentVolumeClaim。 kubectl apply -f pv-volume-pvc.yaml
- 使用
-
创建
Pod并挂载PersistentVolumeClaim:- 使用
web-server-pod.yaml文件创建Pod。 kubectl apply -f web-server-pod.yaml
- 使用
-
扩展
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
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命令会获取 Podfoo的日志输出。>符号将日志重定向到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