Tag: etcd

用etcdconfigurationHipache

我最近发现Hipache现在可以和etcd一起工作。 我有以下Hipacheconfiguration: { "server": { "accessLog": "/tmp/access.log", "port": 80, "workers": 10, "maxSockets": 100, "deadBackendTTL": 30, "tcpTimeout": 30, "retryOnError": 3, "deadBackendOn500": true, "httpKeepAlive": false }, "driver": ["etcd://172.17.42.1:4001"] } 我的问题是关于"driver": ["etcd://172.17.42.1:4001"]位。 反正我可以指示Hipache机器dynamic地将它自己附加到etcd集群的任何成员上吗? 我当前的CoreOS安装程序中的所有etcd节点都位于不同的节点上,并且etcd未在CoreOS群集中的每个节点上运行。

Kubernetes奴才不完全连接

我有一个开发kubernetes集群设置,我有一个运行kube-proxy和kubelet的小兵。 只有当它能连接到主人的apiserver,它才可以开始。 Howerver我越来越 error updating node status, will retry: error getting node "10.211.55.126": minion "10.211.55.126" not found 我注意到之前,我得到这个: Server rejected event '&api.Event后面跟着一个大型的JSON对象,大部分都是空的string值。 当我尝试运行奴才的古贝莱特时,我反复尝试。 我有它指向一个私人的IP,它报告说,它不能鳍公共IP。 我想这是一个etcd问题,但我不知道,也可能flanneld? 更新1我pipe理得到通过最初的错误注册与主的奴才(节点?)。 这允许它从桅杆接收荚并运行容器; 然而,仆从仍然没有完全连接,导致主人不断推动更多的荚向仆从。 kubelet进程正在报告: Cannot get host IP: Host IP unknown; known addresses: [] Cannot get host IP: Host IP unknown; known addresses: [] 。 有一个运行kubelet的标志给主机IP?

在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资源。 想法?

无法在etcd3中findKubernetes apiserver的数据

我使用kargo脚本来构build我的集群。 我无法find数据存储在etcd3中的位置,尽pipe查看了apiserver的详细日志。 以下是我看到的hyperkube apiserver日志: $ docker logs k8s_kube-apiserver.fd19548d_kube-apiserver-kube-master-01_kube-system_2f6ad6b0bf81ca6a0e2b4d499a25fc89_aa25196e [[ SNIP ]] I0127 23:31:55.871267 1 storage_factory.go:242] storing { podtemplates} in v1, reading as __internal from { /registry [https://10.60.68.11:2379 https://10.60.68.39:2379 https://10.60.68.35:2379] /etc/ssl/etcd/ssl/node-kube-master-01-key.pem /etc/ssl/etcd/ssl/node-kube-master-01.pem /etc/ssl/etcd/ssl/ca.pem true 1000 <nil>} I0127 23:31:55.875975 1 storage_factory.go:242] storing { events} in v1, reading as __internal from { /registry [https://10.60.68.11:2379 https://10.60.68.39:2379 https://10.60.68.35:2379] /etc/ssl/etcd/ssl/node-kube-master-01-key.pem /etc/ssl/etcd/ssl/node-kube-master-01.pem […]

docker群 – etcd群集不可用或configuration错误

我正在尝试开始使用etcd作为发现后端的 docker swarm。 我的etcd服务器位于etcd.programster.org(10.1.0.44),而我的docker节点位于swarm1.programster.org(10.1.0.47)。 所有机器都在本地networking(10.1.0.x)上的Virtualbox实例上运行。 我设法让我的etcd服务器运行以下内容: MY_IP="10.1.0.44" ./etcd \ -name infra0 \ -initial-advertise-peer-urls http://$MY_IP:2380 \ -listen-peer-urls="http://0.0.0.0:2380,http://0.0.0.0:7001" \ -listen-client-urls="http://0.0.0.0:2379,http://0.0.0.0:4001" \ -advertise-client-urls="http://$MY_IP:2379" \ -initial-cluster-token etcd-cluster-1 \ -initial-cluster infra0=http://$MY_IP:2380 \ -initial-cluster-state new 我可以使用curl和etcd设置和检索swarm1.programster.org的关键值。 # setting key with etcdctl ./etcdctl –peers http://etcd.programster.org:4001 set etc://etcd.programster.org/mykey "test" # setting key with curl curl -L \ http://etcd.programster.org:4001/v2/keys/mykey \ -XPUT -d value="test" # […]

无法发现docker集装箱

我正在按照本教程进行服务发现http://jasonwilder.com/blog/2014/07/15/docker-service-discovery 简述: 我创build了一个在xyzd:4001上运行的etcd主机 docker run -d –name etcd -p 4001:4001 -p 7001:7001 coreos/etcd 在backend_serverip:8000和docker-register上创build一个运行容器的后端服务器 $ docker run -d -p 8000:8000 –name whoami -t jwilder/whoami $ docker run –name docker-register -d -e HOST_IP=$(hostname –all-ip-addresses | awk '{print $1}') -e ETCD_HOST=xyzd:4001 -v /var/run/docker.sock:/var/run/docker.sock -t jwilder/docker-register 在backend2_serverip:8000和docker-register上创build另一个运行容器的后端服务器 $ docker run -d -p 8000:8000 –name whoami -t jwilder/whoami $ […]

法兰绒和docker不启动

我试图在2个节点上build立一个kubernetes集群,centos 7.1使用http://severalnines.com/blog/installing-kubernetes-cluster-minions-centos7-manage-pods-services上的指南。 但是,当我尝试像这样开始在服务器上的服务: for SERVICES in kube-proxy kubelet docker flanneld; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done 我得到以下错误: — Logs begin at Wed 2015-12-23 13:00:41 UTC, end at Wed 2015-12-23 16:03:54 UTC. — Dec 23 16:03:47 sc-test2 systemd[1]: docker-storage-setup.service: main process exited, code=exited, status=1/FAILURE Dec 23 16:03:47 sc-test2 systemd[1]: Failed to […]

minikube:无法连接本地部署的nginx服务

我已经在我的Ubuntu 16.04机器上安装了minikube,并启动了一个群集,并附有消息 "Kubernetes is available at https://192.168.99.100:443" 接下来,我使用以下命令部署了nginx服务 > kubectl.sh run my-nginx –image=nginx –replicas=2 –port=80 –expose > kubectl.sh get pods -o wide NAME READY STATUS RESTARTS AGE NODE my-nginx-2494149703-8jnh4 1/1 Running 0 13m 127.0.0.1 my-nginx-2494149703-q09be 1/1 Running 0 13m 127.0.0.1 > kubectl.sh get services -o wide NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kubernetes 10.0.0.1 <none> […]

通过systemd在CoreOS中启用etcd服务自动启动

我已经部署了一个带有VMware映像的CoreOS standealone服务器,请按照本指南来体验CoreOS。 部署成功后,我发现我的CoreOS只启用Docker服务,没有etcd和舰队服务运行。 虽然我知道如何使用systemd手动运行etcd和车队服务。 而且我也知道使用适当的cloud-config可以安装CoreOS,其中etcd和fleet service自动启动。 但是我想知道: 是否可以在/etc/systemd/system放置一个单元文件来使systemd自动启动etcd服务? 如果可以的话,单元文件的内容是什么? 如果不能,那么另一种方式是什么? 谢谢