我正在使用 CoreOS 和 SystemD 计时器来运行我的报告......
我有某些监控报告需要在接下来的 12 小时内每 3 小时运行一次,每半小时运行一次。如果我想在 1230 醒来以停止报告,那么实现起来非常简单。
systemd 计时器中是否有“终止计时器”选项或类似的选项>
我在笔记本电脑上安装了CoreOS,将其用作Docker主机.我真的很喜欢我的Mac上的Kitematic来创建和管理容器.我没有看到使用Kitematic连接到CoreOS上的远程docker的选项.是否有其他工具可用于连接到远程docker主机并使用GUI而不是命令行来管理它.
我一直在尝试为远程客户端的 HTTP REST API 服务器访问启用令牌身份验证。
我使用这个脚本安装了我的 CoreOS/K8S 集群控制器:https : //github.com/coreos/coreos-kubernetes/blob/master/multi-node/generic/controller-install.sh
我的集群工作正常。这是一个 TLS 安装,因此我需要使用客户端证书配置任何 kubectl 客户端以访问集群。
然后我尝试通过运行启用令牌身份验证:
echo `dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64 | tr -d "=+/" | dd bs=32 count=1 2>/dev/null`
Run Code Online (Sandbox Code Playgroud)
这给了我一个令牌。然后我将令牌添加到我的控制器上包含令牌和默认用户的令牌文件中:
$> cat /etc/kubernetes/token
3XQ8W6IAourkXOLH2yfpbGFXftbH0vn,default,default
Run Code Online (Sandbox Code Playgroud)
然后我修改了 /etc/kubernetes/manifests/kube-apiserver.yaml 以添加:
- --token-auth-file=/etc/kubernetes/token
Run Code Online (Sandbox Code Playgroud)
到启动参数列表
然后我重新启动(不确定自己重新启动 API Server 的最佳方法??)
此时,来自远程服务器的 kubectl 停止工作(无法连接)。然后我查看docker ps控制器并查看 api 服务器。我运行docker logs container_id并没有输出。如果我查看其他 docker 容器,我会看到如下输出:
E0327 20:05:46.657679 1 reflector.go:188]
pkg/proxy/config/api.go:33: Failed to list *api.Endpoints:
Get http://127.0.0.1:8080/api/v1/endpoints?resourceVersion=0:
dial tcp 127.0.0.1:8080: getsockopt: connection refused …Run Code Online (Sandbox Code Playgroud) 从 docker 容器内将结构化日志写入日志的最佳方法是什么?
例如,我有一个使用sd_journal_send写入的应用程序 ,我没有更改应用程序,而是尝试通过
-v /var/log/systemd/journal:/var/log/systemd/journal
它适用于我的 Ubuntu 16.04 桌面,但不适用于运行应用程序的 CoreOS 实例(使用 Ubuntu 16.04 基础映像)。我不太明白为什么。也许有更好的方式发送到期刊?
docker Journald 输出日志记录选项有哪些限制?它似乎不支持应用程序写入的内容不仅仅是消息字段。
--
所以我发现我需要-v /dev/log:/dev/log
但还有一个问题就是与启动docker容器的服务文件没有关联。手动添加 UNIT: servicename.service 没有解决问题。因此,在查看和传送服务日志时,它与 exe 相关联,但与容器或服务无关。谁遇到过这些问题,您是如何解决的?
——好吧,让我稍微扩展一下。
AC 程序可以像这样写入 systemd 日志:
#include <systemd/sd-journal.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
sd_journal_send("MESSAGE=Hello World!",
"MESSAGE_ID=52fb62f99e2c49d89cfbf9d6de5e3555",
"PRIORITY=5",
"HOME=%s", getenv("HOME"),
"TERM=%s", getenv("TERM"),
"PAGE_SIZE=%li", sysconf(_SC_PAGESIZE),
"N_CPUS=%li", sysconf(_SC_NPROCESSORS_ONLN),
NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这会写入日志并添加自定义字段,如 HOME、TERM、PAGE_SIZE 等。当我使用 Journalbeat 将它们发送到 ELK 堆栈时,这些字段最终会很好地出现在 elasticsearch 中,我可以直接搜索它们。
然而,docker 似乎只是简单地获取应用程序的标准输出,并将其提供给日志,仅包含它自己添加的几个字段。例如 CONTAINER_ID。
当在 Docker 容器内使用这样的程序然后从服务文件运行它们时,会产生一个小问题。
1)我必须传递一些目录和设备文件才能使用 …
我有一组核心机器.我在其中一个主机上的容器上运行数据库,我在不同主机中的另一个容器上运行appserver.由于这两个容器不在同一主机上,我无法真正使用'docker link'命令将这些容器链接在一起,所以我想知道实际通知网络服务器有关数据库服务器的IP地址的最佳做法是什么.
在大多数教程,演示文稿和演示中,只提供通过DNS(SkyDNS,skydock等)或通过反向代理(例如HAproxy或Vulcand,使用etcd或ZooKeeper配置)进行负载平衡的无状态服务.
是否有使用以下方法部署MariaDB和Redis集群的最佳实践:
CoreOS +车队+ Docker; 要么
Mesos + Marathon + Docker
任何其他集群管理解决方案
当运行Master的主机可能发生变化时,如何配置Redis群集和MariaDB群集(Galera)?
https://github.com/sheldonh/coreos-vagrant/tree/master/redis
http://www.severalnines.com/blog/how-deploy-galera-cluster-mysql-using-docker-containers
我有一个系统服务.我想为此实施看门狗.它是这样的,
[Unit]
Description=Watchdog example service
[Service]
Type=notify
Environment=NOTIFY_SOCKET=/run/%p.sock
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm %p
ExecStart=/usr/libexec/sdnotify-proxy /run/%p.sock /usr/bin/docker run \
--env=NOTIFY_SOCKET=/run/%p.sock \
--name %p pranav93/test_watchdogged python hello.py
ExecStop=/usr/bin/docker stop %p
Restart=on-success
WatchdogSec=30s
RestartSec=30s
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
根据文档,我要调用sd_notify("watchdog=1")指定间隔的每一半(在这种情况下是它15s).但我不知道如何在服务中调用该函数.帮助将受到高度赞赏.
我有一个coreos kubernetes集群,我开始遵循这篇文章:
TLDR;
> kube-aws init
> kube-aws render
> kube-aws up
Run Code Online (Sandbox Code Playgroud)
一切都很好,我在AWS上有一个kubernetes coreos集群.在文章中有一个警告说:
生产注意:kube-aws生成的TLS密钥和证书不应用于部署生产Kubernetes集群.每个组件证书仅在90天内有效,而CA有效期为365天.如果部署生产Kubernetes集群,请首先考虑独立于此工具建立PKI.
所以我想替换默认证书,所以我遵循以下文章:
TLDR;
我在kubectl和群集之间收到通信错误,抱怨证书
无法连接到服务器:x509:由未知权限签名的证书
我还尝试使用签名证书kubectl指向群集DNS,我为群集设置了DNS.
如何让kubectl与我的集群通信?
提前致谢
编辑:
我的〜/ .kube/config看起来像这样:
apiVersion: v1
clusters:
- cluster:
certificate-authority: /Users/Yariv/Development/workspace/bugeez/bugeez-kubernetes/credentials/ca2.pem
server: https://kubernetes.bugeez.io
name: bugeez
contexts:
- context:
cluster: bugeez
user: bugeez-admin
name: bugeez-system
current-context: bugeez-system
kind: Config
preferences: {}
users:
- name: bugeez-admin
user:
client-certificate: /Users/Yariv/Development/workspace/bugeez/bugeez-kubernetes/credentials/admin2.pem
client-key: /Users/Yariv/Development/workspace/bugeez/bugeez-kubernetes/credentials/admin-key2.pem
Run Code Online (Sandbox Code Playgroud)
编辑:
我的所有证书都是由ca2.pem签名的,我也通过运行来验证这个事实:
openssl verify -CAfile ca2.pem <certificate-name>
Run Code Online (Sandbox Code Playgroud)
编辑:
我认为错误的原因是:当我在控制器和工作人员中切换密钥时,似乎cloud-config正在用旧密钥覆盖我的新密钥.如何更换密钥并更改cloud-config以适应我的更改?
我正在尝试在CoreOS beta(1192.2.0)上使用kubelet 1.4.5安装kubernetes.
我正在使用稍微修改过的控制器版本和工作者安装脚本来自https://github.com/coreos/coreos-kubernetes/tree/master/multi-node/generic
所以一般我使用以下bash脚本在Gentoo Linux上创建许可证:
#!/bin/bash
export MASTER_HOST=coreos-2.tux-in.com
export K8S_SERVICE_IP=10.3.0.1
export WORKER_IP=10.79.218.3
export WORKER_FQDN=coreos-3.tux-in.com
openssl genrsa -out ca-key.pem 2048
openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca.pem -subj "/CN=kube-ca"
openssl genrsa -out apiserver-key.pem 2048
openssl req -new -key apiserver-key.pem -out apiserver.csr -subj "/CN=kube-apiserver" -config openssl.cnf
openssl x509 -req -in apiserver.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out apiserver.pem -days 365 -extensions v3_req -extfile openssl.cnf
openssl genrsa -out ${WORKER_FQDN}-worker-key.pem 2048
openssl req -new -key ${WORKER_FQDN}-worker-key.pem -out ${WORKER_FQDN}-worker.csr …Run Code Online (Sandbox Code Playgroud)