我正在设置一个将执行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
现在,kuberntes yaml支持commands
和args
,但由于某些原因不支持options
。
正确的做法是什么?
也许我应该配置一个卷,但是然后是volumeMount还是一个卷?
我是kubernetes的新手,所以对我来说正确的做法很重要。
谢谢
答案 0 :(得分:2)
直接与Kubernetes中任何节点上的容器进行交互似乎是一个坏主意。 Kubernetes的重点是协调。如果您在Pod构造之外添加容器,那么Kubernetes将不会意识到在节点上运行的进程。这将影响资源分配。
还需要说直接与容器一起使用会绕过安全性。
答案 1 :(得分:1)
您要将卷添加到容器中。
spec:
containers:
- name: discover
image: docker:dind
volumeMounts:
- name: dockersock
mountPath: "/var/run/docker.sock"
volumes:
- name: dockersock
hostPath:
path: /var/run/docker.sock