0

作为容器管理的初学者,我找不到关于 OpenShift 部署阶段和相关 YAML 语句的清晰描述,特别是在涉及持久卷挂载和 shell 命令执行时。例如,在 RedHat 文档中有很多示例。一个简单的就是16.4。Pod 对象定义

apiVersion: v1
kind: Pod
metadata:
  name: busybox-nfs-pod
  labels:
    name: busybox-nfs-pod
spec:
  containers:
  - name: busybox-nfs-pod
    image: busybox
    command: ["sleep", "60000"]
    volumeMounts:
    - name: nfsvol-2
      mountPath: /usr/share/busybox
      readOnly: false
  securityContext:
    supplementalGroups: [100003]
    privileged: false
  volumes:
  - name: nfsvol-2
    persistentVolumeClaim:
      claimName: nfs-pvc

现在的问题是:命令sleep(或任何其他命令)是在安装完成之前还是之后执行nfsvol-2?换句话说,是否可以在此类命令中使用卷的资源?如果在这个配置中不可能,那么应该使用哪些事件处理程序?我没有看到任何有关诸如volume mounted之类的事件的提及。

4

1 回答 1

0

sleep 命令(或任何其他命令)是在 nfsvol-2 挂载完成之前还是之后执行的?

为了理解这一点,让我们深入了解 Openshift 的基本概念。

OpenShift 是一个将 docker 和 Kubernetes 带入企业的容器应用平台。所以 Openshift 只不过是docker 和 kubernetes 之上的一个抽象层以及附加功能

关于卷和命令,让我们考虑以下示例:

让我们通过挂载一个卷来运行 docker 容器,该卷是主机的主目录到容器的根路径(-v 是附加卷的选项)。

$ docker run -it -v /home:/root ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
50aff78429b1: Pull complete 
f6d82e297bce: Pull complete 
275abb2c8a6f: Pull complete 
9f15a39356d6: Pull complete 
fc0342a94c89: Pull complete 
Digest: sha256:f871d0805ee3ce1c52b0608108dbdf1b447a34d22d5c7278a3a9dd78fc12c663
Status: Downloaded newer image for ubuntu:latest
root@1f07f083ba79:/# cd /root/
root@1f07f083ba79:~# ls
lost+found  raghavendralokineni  raghu  user1
root@1f07f083ba79:~/raghavendralokineni# pwd
/root/raghavendralokineni

现在在容器中执行sleep命令并退出。

root@1f07f083ba79:~/raghavendralokineni# sleep 10
root@1f07f083ba79:~/raghavendralokineni# 
root@1f07f083ba79:~/raghavendralokineni# exit

检查我们已安装到容器的/home路径中可用的文件。该内容与容器中的/root路径相同。

raghavendralokineni@iconic-glider-186709:/home$ ls
lost+found  raghavendralokineni  raghu  user1

因此,当一个卷被挂载到容器时,卷中的任何更改也会在主机中受到影响。

因此卷将与容器一起安装,并且命令将在容器启动后执行

回到你的 YAML 文件,

volumeMounts:
    - name: nfsvol-2
      mountPath: /usr/share/busybox

它说,将卷 nfsvol-2 安装到容器中,卷中提到了有关卷的信息:

volumes:
  - name: nfsvol-2
    persistentVolumeClaim:
      claimName: nfs-pvc

因此,将卷挂载到容器并执行指定的命令:

containers:
  - name: busybox-nfs-pod
    image: busybox
    command: ["sleep", "60000"]

希望这可以帮助。

于 2017-12-20T15:29:58.840 回答