标签: coreos

什么时候运行cloud-init以及它如何找到它的数据?

我目前正在处理CoreOS,到目前为止,我认为我有了整体的想法和概念.我还没有得到的一件事就是执行cloud-init.

我知道这cloud-init是一个为CoreOS做一些配置的过程.我还不明白的是......

  • CoreOS何时运行cloud-init?在第一次启动?每次开机?...?
  • 怎么cloud-init知道在哪里找到它的配置数据?我已经看到有config-drive,这完全有道理,但这是唯一的方法吗?user-data文件的作用究竟是什么?...?

cloud-init coreos

11
推荐指数
1
解决办法
6341
查看次数

在CoreOS cloud-config中执行命令(例如添加交换)

我看到,与标准cloud-config文件不同,runcmdCoreOS cloud-config文件中没有选项.目前,我通过向我添加以下内容来启用CoreOS机器上的交换cloud-config:

units:
    - name: swap.service
      command: start
      content: |
        [Unit]
        Description=Turn on swap

        [Service]
        Type=oneshot
        Environment="SWAPFILE=/1GiB.swap"
        RemainAfterExit=true
        ExecStartPre=/usr/sbin/losetup -f ${SWAPFILE}
        ExecStart=/usr/bin/sh -c "/sbin/swapon $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
        ExecStop=/usr/bin/sh -c "/sbin/swapoff $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
        ExecStopPost=/usr/bin/sh -c "/usr/sbin/losetup -d $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"

        [Install]
        WantedBy=local.target
Run Code Online (Sandbox Code Playgroud)

然后在初始化我的CoreOS映像后,我必须ssh进入机器并运行:

sudo fallocate -l 1024m /1GiB.swap && sudo chmod 600 /1GiB.swap \
&& …
Run Code Online (Sandbox Code Playgroud)

swapfile systemd digital-ocean coreos

11
推荐指数
2
解决办法
2895
查看次数

如何在coreOS上将etcd值输入我的systemd服务?

我有两个服务A和B.

A在启动时设置etcd中的值,比如它从环境文件中获取的公共IP地址:

ExecStartPost=/usr/bin/etcdctl set /A_ADDR $COREOS_PUBLIC_IPV4
Run Code Online (Sandbox Code Playgroud)

B在启动时需要该值,以及它自己的IP地址.所以这样的事情会很好:

ExecStart=/usr/bin/docker run -e MY_ADDR=$COREOS_PUBLIC_IPV4 -e A_ADDR=$ETCD_A_ADDR mikedewar/B
Run Code Online (Sandbox Code Playgroud)

但这显然是不可能的,因为etcd变量不会像这样的systemd环境变量.相反,我可以做一些/usr/bin/bash -c 'run stuff'我的,ExecStart但它很尴尬,特别是因为我需要systemd扩展$COREOS_PUBLIC_IPV4和我的新bash shell扩展$(etcdctl get /A_ADDR).它也充满了代码味道,让我觉得我错过了一些重要的东西.

有人能告诉我从etcd获取值到我ExecStart声明中的"正确"方法吗?

- 更新

所以我一直在运行

ExecStart=/usr/bin/bash -c 'source /etc/environment && /usr/bin/docker run -e A_ADDR=$(/usr/bin/etcdctl get /A_ADDR) -e MY_ADDR=$COREOS_PUBLIC_IPV4 mikedewar/B'
Run Code Online (Sandbox Code Playgroud)

但它很难看.还是不敢相信我没有错过什么..

systemd coreos etcd

10
推荐指数
2
解决办法
4993
查看次数

停止和启动容器时奇怪的docker错误

我一直在停止并启动这个容器没有问题.然后突然我得到了这个奇怪的错误.

请参阅下面的命令历史

core@ip-10-32-251-200 /vol/jenkins/war/WEB-INF/lib $ docker ps
CONTAINER ID        IMAGE                           COMMAND                CREATED             STATUS              PORTS                  NAMES
241d05c8d14f        joshuacalloway/jenkins:latest   "/usr/bin/supervisor   5 weeks ago         Up 6 days           0.0.0.0:80->8080/tcp   jenkins             
core@ip-10-32-251-200 /vol/jenkins/war/WEB-INF/lib $ docker stop 241
241
core@ip-10-32-251-200 /vol/jenkins/war/WEB-INF/lib $ docker start 241
241
core@ip-10-32-251-200 /vol/jenkins/war/WEB-INF/lib $ docker stop 241
241
core@ip-10-32-251-200 /vol/jenkins/war/WEB-INF/lib $ docker start 241
Error response from daemon: Cannot start container 241: Unit docker-241d05c8d14f0b9f18d4f8647ac76a27097354aab5d92f1aaa6c9789a85e6e3d.scope already exists.
2014/09/05 00:27:39 Error: failed to start one or more containers
core@ip-10-32-251-200 /vol/jenkins/war/WEB-INF/lib $ docker start …
Run Code Online (Sandbox Code Playgroud)

docker coreos

10
推荐指数
1
解决办法
3471
查看次数

跨多个数据中心使用etcd是否安全?

跨多个数据中心使用etcd是否安全?因为它将etcd端口暴露给公共互联网.在这种情况下我是否必须使用客户端证书或者etcd有某种授权?

coreos etcd

10
推荐指数
1
解决办法
4100
查看次数

无法为vethXXXXX生成持久性MAC地址:没有此类文件或目录

我开始使用CoreOS(在AWS ECS上).在启动我的第一个容器后,我看到了journalctl:

Could not generate persistent MAC address for vethXXXX: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这里有更多背景信息.我删除了时间和实例信息,但这都在同一秒内.请注意,有两个不同的veth条目.我不知道这是否意味着什么.

systemd[1]: Started docker container 1234
systemd[1]: Starting docker container 1234
dockerd[595]: time="2015-07-23T23:30:52Z" level=info msg="GET /v1.17/containers/1234/json"
dockerd[595]: time="2015-07-23T23:30:52Z" level=info msg="+job container_inspect(1234)"
systemd-timesyncd[473]: Network configuration changed, trying to establish connection.systemd-udevd[7501]: Could not generate persistent MAC address for vethYYYY: No such file or directory
kernel: device vethXXXX entered promiscuous mode
kernel: IPv6: ADDRCONF(NETDEV_UP): vethXXXX: link is not ready
systemd-udevd[7508]: Could not generate persistent …
Run Code Online (Sandbox Code Playgroud)

amazon-ecs coreos

10
推荐指数
1
解决办法
9290
查看次数

我可以用/到CoreOS rkt运行/转换Docker-Compose项目吗?

我可以使用CoreOS rkt或一些相关工具来运行我的Docker-Compose项目吗?

和/或有没有办法将Docker-Compose项目转换为类似的东西,对于CoreOS和rkt

我的Docker-Compose项目在localhost和生产服务器上运行良好.但我认为我更喜欢CoreOS和rkt的安全模型 - 那么我就不必在我的开发机器上运行具有root权限的容器(对吧?).

这里似乎是关于如何运行单个Docker容器的文档rkt:https://coreos.com/rkt/docs/latest/running-docker-images.html - 但我想要Docker-Compose之类的功能,而不仅仅是单个容器.

(我目前使用基于Ubuntu的Linux发行版.)

docker coreos docker-compose rkt

10
推荐指数
1
解决办法
2109
查看次数

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

如何设置日志文件的最大大小?或启用日志轮换.在文档中我没有找到任何关于此的内容.

或者有必要为此编写脚本?

logging rotation docker coreos kubernetes

10
推荐指数
1
解决办法
3583
查看次数

kubernetes pod无法连接(通过服务)到self,只能连接到其他pod容器

我有一个kubernetes单节点设置(参见https://coreos.com/kubernetes/docs/latest/kubernetes-on-vagrant-single.html)

我有一个服务和一个复制控制器创建pod.这些pod需要连接到同一服务中的其他pod(注意:这最终是因为我可以让mongo运行w /副本集(非localhost),但这个简单的例子演示了mongo的问题).

当我从任何节点连接到服务时,它将被分发(按预期)到其中一个pod.这将一直有效,直到它自身负载平衡(我所在的容器).然后它无法连接.

很抱歉是冗长的,但我要附上我的所有文件,以便你可以看到我在这个小例子中做了什么.

Dockerfile:

FROM ubuntu
MAINTAINER Eric H
RUN apt-get update; apt-get install netcat
EXPOSE 8080
COPY ./entry.sh /
ENTRYPOINT ["/entry.sh"]
Run Code Online (Sandbox Code Playgroud)

这是切入点

#!/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 .5
done
Run Code Online (Sandbox Code Playgroud)

构建dockerfile

docker build -t echoserver .

标记并上传到我的k8s群集的注册表

docker tag -f echoserver:latest 127.0.0.1:5000/echoserver:latest
docker push 127.0.0.1:5000/echoserver:latest
Run Code Online (Sandbox Code Playgroud)

这是我的复制控制器

apiVersion: v1
kind: ReplicationController
metadata:
  labels:
    role: echo-server …
Run Code Online (Sandbox Code Playgroud)

docker coreos kubernetes

9
推荐指数
1
解决办法
4345
查看次数

无法使用`kubectl logs`或`kubectl exec`解析主机名

我在AWS上使用CoreOS创建了一个Kubernetes集群,但我无法与主节点进行通信.

例如,类似于以下操作的操作类似于kubectl execkubectl logs失败:

Error from server: dial tcp: lookup ip-XXX-X-XXX-XXX.eu-west-1.compute.internal: no such host
Run Code Online (Sandbox Code Playgroud)

我在Github上发现了一些描述问题的问题所以我知道团队知道这个bug,但是我想在这里询问是否有可能使用一些解决方法,直到它以某种方式得到解决.

提到的一个解决方法是使用--hostname-override标志,但是当我在AWS上时,这个标志被忽略(参见#22984)

关于GitHub的相关问题:#22770 #22063.

coreos kubernetes

9
推荐指数
1
解决办法
2373
查看次数