Tag: coreos

supervisord:是否有可能将subprocessstdoutredirect回supervisord?

我使用supervisord作为Docker容器的入口点,如https://docs.docker.com/articles/using_supervisord/中所述 ,我希望将所有日志写入stdout,以便我可以利用docker logs等内置工具或systemd的日志,尤其是在CoreOS上运行容器时。 对于stderr有subprocessredirect_stderr=true选项,是否有可能redirect到supervisord子处理stdout不知道怎么处理实际的日志文件?

在CoreOS上将私钥安全地分发给Docker

我们开始使用Docker / CoreOS作为我们的基础架构。 我们正在部署EC2。 CoreOS集群由一个自动扩展组pipe理,所以新主机进出。 另外,还有很多。 我试图find一种方法来向所有主机分发一个秘密(私有RSA密钥或对称密码的共享密钥),以便我可以使用它来安全地分发数据库凭证,某些服务的AWS访问密钥等。 我想服从“最小特权原则”。 具体来说,如果我在同一主机上运行的两个不同容器中有两个应用程序,则每个应用程序只能访问应用程序所需的机密。 例如,应用程序A可能有权访问MySQL凭据,应用程序B可能有权访问Dynamo的AWS Access密钥,但A不能访问Dynamo,B无法访问MySQL。 如果我在每个服务器上都有一个秘密,那么这不会很难。 我可以使用像Crypt这样的工具从etcd中读取encryption的configuration数据,然后使用卷映射来select性地将凭据提供给单个容器。 问题是,我怎么安全地把钥匙到主机上。 以下是我考虑的一些事情,以及为什么他们不工作: 使用AWSangular色为每个主机授予对encryptionS3存储桶的访问权限。 主机然后可以从那里读取一个共享的秘密。 但是这不起作用,因为S3有一个REST API,Docker不限制networking访问容器有,而且angular色适用于整个主机。 因此,该主机上的任何容器都可以读取S3中的密钥,然后读取etcd(其中也包含不受限制的REST API)中的所有值并对其进行解密。 在我的CloudFormation模板中,我可以有一个密钥的参数。 然后embedded到UserData中并分发给所有主机。 不幸的是,任何容器都可以通过元数据服务REST API检索密钥。 使用船队向全部主机提交全局单元,并且该单元复制密钥。 但是,容器可以通过它的REST API访问队列,并执行“fleetctl cat”来查看密钥。 把密钥放在一个私人回购的容器中。 然后,可以将其作为全局单元分发给所有主机,并且该容器中的应用程序可以将密钥复制到卷装载。 不过,我认为,鉴于私人回购证书,有人可以用标准的networking工具下载容器,并提取密钥(尽pipe有一些努力)。 然后,问题就变成了如何安全地分发.dockercfg和私人回购的凭据,我想我们马上就回到了开始的地方。 基本上,似乎核心问题是,每个东西都有一个REST API,我不知道有什么办法来阻止容器访问某些networking资源。 想法?

Coreos安全性

我正在玩coreos和digitalocean,我想开始允许我的容器之间的内部沟通。 我已经为所有的主机设置了私人networking,现在我想确保一些容器只打开本地主机和内部接口的端口。 我已经探索了很多这方面的select,但没有一个看起来令人满意: 使用'-p',我可以确保docker绑定到本地接口,但是这有两个缺点: 我不能轻易地通过SSH进行testing,因为stream量来自本地主机 我需要写一些hacky shell脚本来启动我的服务,以便注入容器运行的机器的地址 我尝试使用法兰绒,但它不会使交通私密(或我没有设置它的权利) 我考虑在容器上使用iptables来防止外部访问,但这似乎并不安全 我尝试在coreos主机上使用iptables,但是…这是棘手的,我无法得到它的工作。 当我尝试在主机上configurationiptables时,我使用这个方法: https : //docs.docker.com/articles/networking/#communication-between-containers-and-the-wider-world ,通过添加一个DROP规则到docker链,但是没有工作,包仍然通过 那么最好的办法是什么,我会投入时间让它工作。 总的来说,我想我需要find一些我可以做到的事情: 向所有主机可靠地转出 一些相当灵活的东西前进 一些允许从更广泛的互联网访问的“边缘机器”。 解 我会进入我最终解决这个问题。 感谢larsks的帮助。 最后,他们的做法是正确的。 这对于coreos来说是非常棘手的,因为没有真正稳定的地址,像larsks所假设的那样。 它可以忘记ip地址的整个coreos点。 我通过find一个不错的方法来解决这个问题,将ip地址注入服务文件中的命令。 棘手的事情是,它并不真正支持我期望的许多shellfunction。 我想要做的是将机器的IP地址分配给一个variables,然后将其注入到命令中: ip=$(ifconfig eth1 | grep -o 'inet [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' | grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'); /usr/bin/docker run -p $ip:7000:7000 … 但是,如前所述,这是行不通的。 那么该怎么办? 得到壳! ExecStart=/usr/bin/sh -c "\ export ip=$(ifconfig eth1 | […]

MySQL导入挂在Mac上的Vagrant CoreOS框中

我有一个本地开发安装使用以下内容: Mac优胜美地10.10.3 stream浪1.7.3 CoreOS alpha版本681.0.0 2个Docker容器,一个用于Apache PHP,另一个用于基于Ubuntu 12.10的mysql 它设置为使用NFS将本地开发目录〜/ Sites同步到Vagrant框,因为我的工作目录以及MySQL目录位于这里(〜/ Sites / .coreos-databases / mysql)。 从我所读到的这不是最好的设置types,但它已经为我工作了一段时间以及其他工作。 最近我还没有能够导入任何数据库转储到此设置。 import开始和挂起大约一半的过程。 它发生在命令行以及Sequel Pro上。 它确实导入了一些表格,但是每次都在相同的位置冻结。 这个转储的大小似乎并不重要 – 我一直在尝试的只有104Kb。 其他人与100MB +转储有同样的问题 – 在同一地点冻结大约一半。 我的stream浪文件: Vagrant.configure("2") do |config| # Define the CoreOS box config.vm.box = "coreos-alpha" config.vm.box_url = "http://alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json" # Define a static IP config.vm.network "private_network", ip: "33.33.33.77" # Share the […]

从另一个容器,dockerpipe理容器

我需要能够部署一个新的容器或从另一个正在运行的Docker容器pipe理在CoreOS中运行的docker容器。 docker版本是1.5.0,coreos版本是647.2.0 现在我部署应用程序的一个新实例的过程是使用一个shell脚本。 它基本上做到: 将node.js应用程序的源代码复制到新文件夹 CD进入它 以分离模式部署一个新的docker容器,将'pwd'设置为-v到工作目录,然后应用程序运行 我在想,如果有可能从容器内部执行shell脚本,以便在coreos中部署一个新的容器,或者有任何替代方法。 另一个目标是能够停止正在运行的容器。 任何意见或build议将不胜感激。

如何利用CoreOS的机队构build有状态的docker服务架构?

与舰队使用的CoreOS使人们能够build立运行一些docker应用程序的服务。 但有没有办法运行docker服务,要求其状态保持在重新启动之间,要持久? 例如,数据库或服务必须存储一些文件以便以后共享。 因为据我所知,这个服务可以在core-1机器上启动,重启后会随机启动。 所以docker的数量可能会丢失。

如何编写一个kubernetes podconfiguration来启动两个容器

我想创build一个包含2个容器的kubernetes容器,两个容器都有不同的图像,所以我可以将两个容器一起启动。 目前我已经尝试了以下configuration: { "id": "podId", "desiredState": { "manifest": { "version": "v1beta1", "id": "podId", "containers": [{ "name": "type1", "image": "local/image" }, { "name": "type2", "image": "local/secondary" }] } }, "labels": { "name": "imageTest" } } 但是,当我执行kubecfg -c app.json create /pods我得到以下错误: F0909 08:40:13.028433 01141 kubecfg.go:283] Got request error: request [&http.Request{Method:"POST", URL:(*url.URL)(0xc20800ee00), Proto:"HTTP/1.1", ProtoMajor:1, ProtoMinor:1, Header:http.Header{}, B ody:ioutil.nopCloser{Reader:(*bytes.Buffer)(0xc20800ed20)}, […]

kubernetes pod无法连接(通过服务)到自己,只能连接到其他pod-containers

我有一个kubernetes单节点设置(请参阅https://coreos.com/kubernetes/docs/latest/kubernetes-on-vagrant-single.html ) 我有一个服务和复制控制器创build窗格。 这些豆荚需要连接到同一服务中的其他豆荚(注意:这最终是为了让我可以运行带有副本集(非本地主机)的mongo,但是这个简单的例子说明了mongo具有的问题)。 当我从任何节点连接到服务时,它将被分配(如预期)到其中一个容器。 这将工作,直到它负载平衡本身(我所在的容器)。 然后它连接失败。 对不起,我要把所有的文件都附上来,这样你就可以看到我在这个小例子中做了什么。 Dockerfile: FROM ubuntu MAINTAINER Eric H RUN apt-get update; apt-get install netcat EXPOSE 8080 COPY ./entry.sh / ENTRYPOINT ["/entry.sh"] 这是入口点 #!/bin/bash # wait for a connection, then tell them who we are while : ; do echo "hello, the date=`date`; my host=`hostname`" | nc -l 8080 sleep […]

如何构build一个从Kubernetes集群之外的机器传递文件的附属容器?

我有一个noob问题。 如果我正在使用位于主机上的文件夹执行某些操作的Docker镜像,应该在kubernetes集群中的哪个文件夹中find该文件夹​​? 我可以用docker做这个,因为我知道我的主机文件系统在哪里,但是当我在一个kubernetes集群上时,我迷路了。 其实我不知道这是不是最好的办法 但是我想要做的是build立一个PHP后台开发环境。 因为我想要的是每个人都可以用他们自己的文件 (在他们的计算机上)运行一个容器环境,我试图build立一个边车容器,所以当启动容器我可以将文件传递到PHP容器。 问题是我运行kubernetes为我的公司使用stream浪(coreos + kubernetes)解决scheme来构build开发环境,因为我们现在没有云服务,所以我不能使用persiten磁盘。 我尝试使用NFS,但是对于我所需要的,似乎太多了(只是将一些信息传递给pod,而不pipe我在哪里的PC)。 另外我尝试在Kubernetes中使用hostPAth,但问题是,我想连接到容器的机器位于kubernetes集群之外(Vagrant + CoreOS + Kubernetes,所以我试图暴露一些容器到公共IP地址,但是我不能了解如何将文件(位于群集外部的计算机中)过滤到容器中。 感谢您的帮助,感谢您的意见。

kubernetes如何设置日志文件的最大大小?

如何设置日志文件的最大大小? 或者启用日志旋转。 在文档中我还没有发现任何关于这个。 或者有必要为此写一个脚本?