我们有一个 4 节点 Kubernetes 集群,使用 Juju 2.0 和官方规范的 Kubernetes 魅力安装。这个非常本地和私人安装的唯一目的是开发和测试。
此安装最大的和记录在案的问题之一是完全缺乏优雅的服务器关闭程序。只有当etcd
节点出现故障时,整个配置才会丢失。
我们花了大量时间为 Kubernetes 寻找自动备份/恢复脚本/程序。我们遇到的问题最常见的答案是在我们启动它时使用 Juju 从头开始部署服务器。给予 30-35 分钟。部署时间 它似乎不是一个有吸引力的解决方案?
你碰巧对这个问题有任何可行的解决方案吗?
我想从社区中获得关于为什么 MongoDB 的键/值会或不会是 etcd 或其他专门构建的键/值存储系统(consol、zookeeper 等)的合适替代品的一般想法。
我正在尝试设置一个本地 Kubernetes 集群。首先,我使用 kubeadm 在一个节点上初始化我的控制平面。但所有 kube 系统 pod 都会不断崩溃。我通过 crictl 深入研究了 pod 日志,结果发现大多数 pod 崩溃是因为它们无法到达 上的 kube-apiserver <node IP>:6443
。并且 kube-apiserver 似乎崩溃了,因为它无法到达 上的 etcd 127.0.0.1: 2379
。etcd 会“崩溃”,因为几分钟后它会在没有任何明显原因的情况下收到 sigterm。在 etcd 容器进程上使用 strace 可以得到:
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=0, si_uid=0} ---
Run Code Online (Sandbox Code Playgroud)
我尝试过 flanneld、calico 和 weave net 作为 CNI,但没有成功。交换从一开始就被禁用了。防火墙没有任何自定义规则。作为一名 kubernetes 新手,我想不出其他可能的失败原因,如果有任何提示,我将不胜感激。
系统信息:
我正在尝试在我的 CoreOS 节点中启动 etcd2。
我的云配置中有这个:
coreos:
etcd2:
discovery: https://discovery.etcd.io/new?size=1
advertise-client-urls: http://127.0.0.1:2379,http://127.0.0.1:4001
initial-advertise-peer-urls: http://127.0.0.1:2380
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://127.0.0.1:2380
Run Code Online (Sandbox Code Playgroud)
安装后,当我启动系统时出现错误(根据日志):
etcdmain:顶级值后的无效字符“p”
并且 etcd2 无法启动。
这意味着什么?我遵循了https://coreos.com/os/docs/latest/cloud-config.html和https://coreos.com/os/docs/latest/cluster-discovery.html上的指南。
编辑
节点 1
coreos:
etcd2:
name: coreos1
discovery: https://discovery.etcd.io/2d585793b364cf8985ca7a983d6c52e3
advertise-client-urls: http://127.0.0.1:2379,http://127.0.0.1:4001
initial-advertise-peer-urls: http://127.0.0.1:2380
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://127.0.0.1:2380
Run Code Online (Sandbox Code Playgroud)
节点 2
coreos:
etcd2:
name: coreos2
discovery: https://discovery.etcd.io/2d585793b364cf8985ca7a983d6c52e3
advertise-client-urls: http://127.0.0.1:2379,http://127.0.0.1:4001
initial-advertise-peer-urls: http://127.0.0.1:2380
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://127.0.0.1:2380
Run Code Online (Sandbox Code Playgroud)
coreos1> journalctl -u etcd2:
Sep 21 20:10:31 coreos1 etcd2[671]: 2015/09/21 20:10:31 discovery: found self e276d5b4c276a19d in the cluster
Sep 21 …
Run Code Online (Sandbox Code Playgroud) 据我了解,kube-api 服务器在与 ETCD 和 Kubelet 通信时充当客户端。ETCD 和 Kubelet 都充当 kube-api 的服务器。在安全环境(双向 SSL 认证)下,kube-api 服务器需要 ETCD 和 Kubelet 证书以及 CA 证书。我不明白的是为什么我们在配置 kube-apiserver.yaml 时需要提供 ETCD(etcd-keyfile)和 Kubelet(kubelet-client-key)的私钥?
etcd ×5
kubernetes ×3
consul ×1
containerd ×1
coreos ×1
kubeadm ×1
mongodb ×1
shutdown ×1
zookeeper ×1