模拟题目:
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Task
- 在 node02 节点上创建一个文件 /opt/KDSP00101/data/index.html ,内容为 WEPKEY=7789
- 使用 hostPath 创建一个名为 task-pv-volume 的 PersistentVolume ,并分配 2Gi 容量,指定该卷位于集群节点上的 /opt/KDSP00101/data ,访问模式 ReadWriteOnce 。它应该为 PersistentVolume 定义 StorageClass 名称为 keys ,它将被用来绑定 PersistentVolumeClaim 请求到这个 PersistenetVolume。
- 创建一个名为 task-pv-claim 的 PersistentVolumeClaim,请求容量 200Mi ,并指定访问模式 ReadWriteOnce
- 创建一个 pod,使用 PersistentVolmeClaim 作为一个卷,带有一个标签 app:my-storage-app ,将卷挂载到 pod 内的 /usr/share/nginx/html
参考:
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
解答:
切换环境
kubectl config use-context k8s
1. 远程到node02 并写入文件
ssh node02
echo "WEPKEY=7789" > /opt/KDSP00101/data/index.html
2. 使用官网模板创建一个pv
pv.yaml
#pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume #根据题目要求修改
labels:
type: local
spec:
storageClassName: keys #题目要求keys
capacity:
storage: 2Gi #题目要求2Gi
accessModes:
- ReadWriteOnce # 题目要求
hostPath:
path: "/opt/KDSP00101/data" #题目要求路径
创建
kubectl apply -f pv.yaml
3. 创建pv-claim
pv-claim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
storageClassName: keys #根据题目要求
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 200Mi #根据题目要求
创建pvc
kubectl apply -f pv-claim.yaml
4. 创建pod
考试时, 检查是否有多个node, 如果有多个节点, 则需要指定nodeSelector, 让pod和pv所在一个节点
pod-pv.yaml
apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod
labels: #添加
app: my-storage-app # 按题目要求添加
spec:
nodeSelector:
kubernetes.io/hostname: node02 #kubectl get nodes --show-labels获取到的标签
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim #pvc名
containers:
- name: task-pv-container
image: nginx
imagePullPolicy: IfNotPresent #使用已有镜像,加快pod运行
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html" #挂载地址
name: task-pv-storage
创建pod
kubectl apply -f pod-pv.yaml
检查
kubectl get pod -owide | grep task-pv-pod
curl 10.244.140.65