繁体   English   中英

从 kubernetes 部署 yaml 运行容器时如何添加“-v /var/run/docker.sock:/var/run/docker.sock”

[英]How to add "-v /var/run/docker.sock:/var/run/docker.sock" when running container from kubernetes deployment yaml

我正在使用将执行 docker 命令( docker ps等)的映像设置 kubernetes 部署。

我的 yaml 如下所示:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: discovery
  namespace: kube-system
  labels:
    discovery-app: kubernetes-discovery
spec:
  selector:
    matchLabels:
      discovery-app: kubernetes-discovery
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        discovery-app: kubernetes-discovery
    spec:
      containers:
      - image: docker:dind
        name: discover
        ports:
        - containerPort: 8080
          name: my-awesome-port
      imagePullSecrets:
        - name: regcred3
      volumes:
      - name: some-volume
        emptyDir: {}
      serviceAccountName: kubernetes-discovery

通常我会运行一个 docker 容器,如下所示:

docker run -v /var/run/docker.sock:/var/run/docker.sock docker:dind

现在,kubernetes yaml 支持commandsargs但由于某种原因不支持options

正确的做法是什么?

也许我应该配置一个卷,但是,它是 volumeMount 还是只是一个卷?

我是 kubernetes 的新手,所以以正确的方式做这件事对我来说很重要。

谢谢

您想将卷添加到容器中。

spec:
  containers:
  - name: discover
    image: docker:dind
    volumeMounts:
    - name: dockersock
      mountPath: "/var/run/docker.sock"
  volumes:
  - name: dockersock
    hostPath:
      path: /var/run/docker.sock  

直接与 Kubernetes 中任何节点上的容器交互似乎是一个坏主意。 Kubernetes 的全部意义在于编排。 如果您在 Pod 构造之外添加容器,那么 Kubernetes 将不会知道节点上运行的进程。 这会影响资源分配。

还需要说明的是,直接使用容器绕过了安全性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM