Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 当处于GKE下时,DenyEscalatingExec_Kubernetes_Google Kubernetes Engine - Fatal编程技术网

Kubernetes 当处于GKE下时,DenyEscalatingExec

Kubernetes 当处于GKE下时,DenyEscalatingExec,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我们在Kubernetes集群中使用GKE。我们正在运行的应用程序之一是CI的Jenkins。不幸的是,Jenkins奴隶需要使用Docker挂载主机的Docker.sock。这可能是一种升级攻击 解决方案是在API服务器中设置准入控制器以使用DenyEscalatingExec。但就我个人而言,我不知道如何通过GKE达到那种状态。它甚至可以默认设置,但我不知道如何获得隐藏在GKE后面的默认设置 是否有办法通过GKE设置此控制器(以及其他控制器),或者检查默认值以查看是否已设置?看起来您希望以特

我们在Kubernetes集群中使用GKE。我们正在运行的应用程序之一是CI的Jenkins。不幸的是,Jenkins奴隶需要使用Docker挂载主机的
Docker.sock
。这可能是一种升级攻击

解决方案是在API服务器中设置准入控制器以使用
DenyEscalatingExec
。但就我个人而言,我不知道如何通过GKE达到那种状态。它甚至可以默认设置,但我不知道如何获得隐藏在GKE后面的默认设置


是否有办法通过GKE设置此控制器(以及其他控制器),或者检查默认值以查看是否已设置?

看起来您希望以特权模式运行Jenkins CI。但是,如果您只想从Jenkins内部调用Docker,则不需要使用特权模式,只需将Docker套接字从节点装入Jenkins容器即可

spec:
      volumes:
      - name: docker-socket
        hostPath:
          path: /var/run/docker.sock
      containers:
      - name: name
        image: image-location
        volumeMounts:
        - name: docker-socket
          mountPath: /var/run/docker.sock
关于准入控制器,所有这些控制器都由
kube-apiserver
二进制文件提供,并在GKE上启用。


您可以在

中找到更多的示例,看起来您希望以特权模式运行Jenkins CI。但是,如果您只想从Jenkins内部调用Docker,则不需要使用特权模式,只需将Docker套接字从节点装入Jenkins容器即可

spec:
      volumes:
      - name: docker-socket
        hostPath:
          path: /var/run/docker.sock
      containers:
      - name: name
        image: image-location
        volumeMounts:
        - name: docker-socket
          mountPath: /var/run/docker.sock
关于准入控制器,所有这些控制器都由
kube-apiserver
二进制文件提供,并在GKE上启用。


您可以在

中找到更多示例不幸的是,您无法更改GKE上启用的准入控制器。Alpha集群支持,但这将涉及大量定制工作


另一种选择是使用PodSecurityPolicy,只允许特权pod在几个严格的控制器名称空间中运行。例如,您可以创建一个jenkins命名空间,只允许在jenkins和kube系统命名空间中创建特权POD,然后阻止除群集管理员以外的所有用户在这些命名空间中执行POD。

不幸的是,您无法更改GKE上启用的准入控制器。Alpha集群支持,但这将涉及大量定制工作

另一种选择是使用PodSecurityPolicy,只允许特权pod在几个严格的控制器名称空间中运行。例如,您可以创建一个jenkins命名空间,只允许在jenkins和kube系统命名空间中创建特权POD,然后防止除群集管理员以外的所有用户执行这些命名空间中的POD