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 在k8s群集上运行的ansible的正确dockerfile_Kubernetes_Ansible_Dockerfile - Fatal编程技术网

Kubernetes 在k8s群集上运行的ansible的正确dockerfile

Kubernetes 在k8s群集上运行的ansible的正确dockerfile,kubernetes,ansible,dockerfile,Kubernetes,Ansible,Dockerfile,我有aks集群,我从基本映像(如nginx)为ansible创建了一个pod,并通过shell命令(pip3 install ansible、pip3 install openshift)手动安装shell中的所有内容。现在我需要创建一个带有必要更新的ansible映像,这是我的dockerfile。它在笔记本电脑上运行良好,但当我推回购并创建一个pod时,它会返回错误。也许有人能帮助我理解如何为ansible部署正确的映像。谢谢 Dockerfile: FROM ubuntu:16.04.

我有aks集群,我从基本映像(如nginx)为ansible创建了一个pod,并通过shell命令(pip3 install ansible、pip3 install openshift)手动安装shell中的所有内容。现在我需要创建一个带有必要更新的ansible映像,这是我的dockerfile。它在笔记本电脑上运行良好,但当我推回购并创建一个pod时,它会返回错误。也许有人能帮助我理解如何为ansible部署正确的映像。谢谢

Dockerfile:

FROM ubuntu:16.04. 

RUN apt-get update && apt-get install -y --no-install-recommends \
python3.5 \
python3-pip \
python3-setuptools \
curl \
sudo \
nano \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN pip3 install --upgrade pip
RUN pip3 install ansible
RUN pip3 install openshift
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s 
https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
RUN chmod +x ./kubectl
RUN sudo mv ./kubectl /usr/local/bin/kubectl
# Define working directory.
WORKDIR /data

# Define default command.
CMD ["bash"]
这里是ansible_pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: ansible
spec:
  volumes:
    - name: ansible-data
      persistentVolumeClaim:
        claimName: ansible-data
  containers:
    - name: ansible
      image: ansible:latest
      volumeMounts:
        - mountPath: /scripts
          name: ansible-data
      restartPolicy: Never

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ansible-data
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
     storage: 1Gi
创建一个pod,使其返回错误

这是因为您将
CMD
设置为
bash
,但是(a)如果没有提供命令,bash希望能够从stdin读取,并且您的
PodSpec
确实允许这样做(b)即使有,您希望容器做什么?坐在那里,直到有人运行
kubectl exec
才能运行任意ansible playbook命令

我猜出现非退避错误的最短路径是要求您已经创建的docker映像无限期地休眠,直到有人将
kubectl exec
放入pod和/或您提出您希望pod做的事情

容器:
-姓名:ansible
图片:ansible:最新
命令:[“睡眠”,“无限”]


虽然这不是您要求的,但您似乎花费了大量精力将python安装到通用映像中,与其使用已经安装的python附带的,只需要放在其上的其他二进制文件,kubectl Descripte将为您提供一些详细信息。谢谢@code\u ada,但它只是说它崩溃了非常感谢@mdaniel这已经解决了我的问题。现在我有一个没有崩溃的豆荚,也许将来我会根据你的建议改变我的形象。