如何使用SELinux标签在Pod之间共享卷?

时间:2020-08-04 04:21:09

标签: kubernetes rhel kubernetes-pod selinux persistent-volumes

在我的用例中,有两个Pod共享相同的音量。一个Pod将日志和特定于应用程序的数据写入卷安装,而另一个Pod从同一卷安装读取数据以进行后处理。以下示例并不能完全正确地说明设计,但是我试图证明'my-pv-claim'是在两个吊舱之间共享的。

apiVersion: v1
kind: Pod
metadata:
  name: main-pod-1
spec:
  volumes:
    - name: pod-1-storage
      persistentVolumeClaim:
        claimName: my-pv-claim
  containers:
    - name: pod-1-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/"
          name: my-pod-1-storage

-

apiVersion: v1
kind: Pod
metadata:
  name: post-processing-pod-2
spec:
  volumes:
    - name: pod-2-storage
      persistentVolumeClaim:
        claimName: my-pv-claim
  containers:
    - name: pod-2-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/"
          name: my-pod-2-storage

支持SELinux标签的卷将重新标记为可以通过seLinuxOptions下指定的标签进行访问。这将设置为Pod中的所有容器以及卷指定的多类别安全(MCS)标签。

在我的示例中,如果我在Pod main-pod-1的securityContext下使用以下SELinux标签,则在此pod中装入的卷(my-pv-claim)也将获得相同的SELinux MCS标签,即{{1 }}

s0:c123,c456

所有具有相同标签的Pod均可访问该卷。但是,我正在寻找一种具有唯一Pod级标签和相同卷标的方法,以便仅共享卷安装(securityContext: seLinuxOptions: level: "s0:c123,c456" )。

寻找一些指针。任何帮助,将不胜感激。谢谢。

0 个答案:

没有答案
相关问题