我使用 supervisord 作为 Docker 容器的入口点,如https://docs.docker.com/articles/using_supervisord/ 中所述,我希望所有日志都写入标准输出,以便我可以利用内置工具,如docker logs或 systemd 的日志,尤其是在 CoreOS 上运行容器时。
对于 stderr 有redirect_stderr=true子进程选项,是否可以以某种方式将子进程 stdout 重定向回 supervisord 而不是处理实际的日志文件?
我正在学习CoreOS/Docker,并试图围绕一些事情.
使用Java基础结构,是否可以在其自己的容器中使用JVM,并让其他Java应用程序/服务使用此JVM容器?如果没有,我假设JVM必须捆绑在每个容器中,所以基本上你必须拉Java dockerfile并合并我的Java服务; 本质上创建一个在CoreOS机器上运行的Linux Machine + Java + Service容器.
我唯一的另一个想法是可能在CoreOS上运行JVM,但似乎这是不可能的.
我正在寻找 Web 应用程序的监控解决方案,部署为 Docker 容器群,分布在 7-10 个虚拟机中。高级要求是:
这里有任何建议/最佳实践吗?
注意:外部 Kibana 安装用于从部署在 VM 上的 Logstash 代理收集应用程序日志。
我无法从文档和源代码中找出如何定义根设备的大小.
您可以使用BlockDeviceMappings部分指定N个附加块设备,您可以在其中声明其大小.但是没有办法设置根卷的大小.因此,它始终创建一个根卷大小为8GB的实例,这是默认值.
我们有以下问题.在我们的群集中,网址已经改变了.一旦我们更改配置以反映这些更改,网址就不会在'discovery.etcd.io'上更新.所以我们的想法就是使用一个新的令牌.然而,这不起作用.群集未在"discovery.etcd.io"上注册新令牌.每次我们更改网址或令牌时,我们都不想重新安装.有没有更好的办法?重新安装工作没有问题.
#cloud-config
hostname: server1
coreos:
etcd2:
# generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
discovery: https://discovery.etcd.io/<our token>
# multi-region and multi-cloud deployments need to use $public_ipv4
advertise-client-urls: server1:2379
initial-advertise-peer-urls: server1:2380
# listen on the official ports
listen-client-urls: server1:2379
listen-peer-urls: server1:2380
#fleet:
# public-ip: server1
# metadata: region=eu-central-1
#update:
# reboot-strategy: etcd-lock
units:
- name: etcd2.service
command: start
# - name: fleet.service
# command: start
ssh_authorized_keys:
<our ssh keys>
Run Code Online (Sandbox Code Playgroud) 是否可以在OpenStack的CoreOS上运行的Kubernetes中启用节点(小兵)的自动缩放?
我只读过AWS和GCE。
所以我在 VirtualBox 上运行 CoreOS。我启动了虚拟机并使用
sudo openssl passwd -1 > cloud-config-file
Run Code Online (Sandbox Code Playgroud)
它提示我输入密码,我输入了该密码。然后我的云配置文件如下所示:
#cloud-config
users:
- name: test
- passwd: 'provided password hash'
groups:
- sudo
- docker
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用以下命令安装映像
sudo coreos-install -d /dev/sda -C stable -c cloud-config-file
Run Code Online (Sandbox Code Playgroud)
它安装成功,我关闭虚拟机,卸载磁盘,然后重新启动虚拟机,它提示我输入登录名和密码。我使用云配置文件中提供的凭据,但它一直告诉我“登录不正确”。为什么会发生这种情况?看来我已经正确完成了所有步骤。
我有两台带CoreOS beta的核心机器(1185.2.0).
我使用修改后的脚本使用rkt容器安装kuberentes,原始脚本位于https://github.com/coreos/coreos-kubernetes/tree/master/multi-node/generic.修改后的版本位于https://github.com/kfirufk/coreos-kubernetes-multi-node-generic-install-script.
我为脚本设置的环境变量是:
ADVERTISE_IP=10.79.218.2
ETCD_ENDPOINTS="https://coreos-2.tux-in.com:2379,https://coreos-3.tux-in.com:2379"
K8S_VER=v1.4.3_coreos.0
HYPERKUBE_IMAGE_REPO=quay.io/coreos/hyperkube
POD_NETWORK=10.2.0.0/16
SERVICE_IP_RANGE=10.3.0.0/24
K8S_SERVICE_IP=10.3.0.1
DNS_SERVICE_IP=10.3.0.10
USE_CALICO=true
CONTAINER_RUNTIME=rkt
ETCD_CERT_FILE="/etc/ssl/etcd/etcd1.pem"
ETCD_KEY_FILE="/etc/ssl/etcd/etcd1-key.pem"
ETCD_TRUSTED_CA_FILE="/etc/ssl/etcd/ca.pem"
ETCD_CLIENT_CERT_AUTH=true
OVERWRITE_ALL_FILES=true
CONTROLLER_HOSTNAME="coreos-2.tux-in.com"
ETCD_CERT_ROOT_DIR="/etc/ssl/etcd"
ETCD_SCHEME="https"
ETCD_AUTHORITY="coreos-2.tux-in.com:2379"
IS_MASK_UPDATE_ENGINE=false
Run Code Online (Sandbox Code Playgroud)
最值得注意的更改是添加对etcd2 tls证书和kubeconfig yaml使用的支持,而不是depreated --api-server.
目前我正在尝试使用coreos-2.tux-in.com的控制器脚本进行安装.
控制器节点的kubeconfig yaml包含:
current-context: tuxin-coreos-context
apiVersion: v1
clusters:
- cluster:
certificate-authority: /etc/kubernetes/ssl/ca.pem
server: https://coreos-2.tux-in.com:443
name: tuxin-coreos-cluster
contexts:
- context:
cluster: tuxin-coreos-cluster
name: tuxin-coreos-context
kind: Config
preferences:
colors: true
users:
- name: kubelet
user:
client-certificate: /etc/kubernetes/ssl/apiserver.pem
client-key: /etc/kubernetes/ssl/apiserver-key.pem
Run Code Online (Sandbox Code Playgroud)
生成的kubelet.service文件包含
[Service]
Environment=KUBELET_VERSION=v1.4.3_coreos.0
Environment=KUBELET_ACI=quay.io/coreos/hyperkube
Environment="RKT_OPTS=--volume dns,kind=host,source=/etc/resolv.conf --mount volume=dns,target=/etc/resolv.conf …Run Code Online (Sandbox Code Playgroud) 我有一个 Go 程序,它使用 aws-sdk-go 与 dynamodb 对话。依赖项是供应商的。转到版本 1.7.1。aws-sdk-go 版本 1.6.24。该程序在以下所有环境中按预期工作:
当我在 kubernetes 上运行 docker 容器(我在我的开发箱上测试的同一个容器)时,我收到以下错误:
2017/03/02 22:30:13 调试错误:请求 dynamodb/GetItem: ---[请求转储错误]---------------------------- net/http: 无效的标头字段值“AWS4-HMAC-SHA256 Credential=hidden\n/20170302/us-east-1/dynamodb/aws4_request, SignedHeaders=accept-encoding;content-length;content-type;host;x- amz-date;x-amz-target, Signature=483f56dd0b17d8945d3c2f2044b7f97e531190602f132a4d5f828264b3a2cff2" 用于密钥授权 -------------------------------------------------- --- 2017/03/02 22:30:13 调试:响应 dynamodb/GetItem 详细信息: - -[ 回复 ] - - - - - - - - - - - - - - - - - - - HTTP/0.0 000 状态码 0 内容长度:0
所以我使用CoreOS手册安装指南中的Kubernetes启动并运行了kubernets集群.
$ kubectl get no
NAME STATUS AGE
coreos-master-1 Ready,SchedulingDisabled 1h
coreos-worker-1 Ready 54m
$ kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health": "true"}
etcd-2 Healthy {"health": "true"}
etcd-1 Healthy {"health": "true"}
$ kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default curl-2421989462-h0dr7 1/1 Running 1 53m 10.2.26.4 coreos-worker-1
kube-system busybox 1/1 Running 0 55m 10.2.26.3 coreos-worker-1
kube-system kube-apiserver-coreos-master-1 1/1 Running 0 …Run Code Online (Sandbox Code Playgroud) coreos ×10
docker ×4
kubernetes ×4
autoscaling ×1
aws-ec2 ×1
aws-sdk-go ×1
boto3 ×1
containers ×1
devops ×1
docker-swarm ×1
go ×1
java ×1
jvm ×1
kubelet ×1
monitoring ×1
nodes ×1
openstack ×1
rkt ×1
supervisord ×1
virtualbox ×1