我想在两个位置(距离 300 公里)构建自己的 Kubernetes 集群并将其集成到 GitLab。
让我列出我的想法。我的问题是我的想法是否有错误并要求解决它。
由于我只能设置虚拟机并且没有直接在主机上的权限,因此我想在 5 个虚拟机(3+2)上安装一个 etcd-cluster。我会在 Ubuntu 18.04 上使用 apt 安装 etcd。为此,我一开始不需要 Kubernetes。
奇数个实例仅适用于 etcd 而不适用于控制平面?
为控制平面设置单独的虚拟机是否有意义,或者我可以重用 etcd 集群的 3+2 个虚拟机吗?否则我已经有 10 个虚拟机了。
除非您有一个包含数千个服务和许多节点的大型 kubernetes 集群,否则您可以设置一个单独的 etcd 集群并记住如果您想在两个位置设置 etcd 集群,请查看 coreos 文档,因为 etcd 对延迟非常敏感
如果选择使用外部 etcd 集群,控制平面不需要奇数,etcd 只需要奇数,因为 etcd 机器在集群中。
控制平面之间不通信,仅与 etcd 通信
我学到了一些东西,想和你分享。
etcd 的发音类似于“@cee dee”。
我现在决定不使用 apt(Ubuntu 18.04 上的 etcd 3.2)进行安装,而是使用 wget 下载最新版本(3.3.18)。谷歌的第一次成功奏效了。
安装
重置
删除成员文件夹中的所有数据:
或更改参数
--initial-cluster-token XYZ
(每五个成员相同)并etcd
以 parameter开头--force-new-cluster
。当您重新启动现有集群或添加更多成员时:从 更改
--initial-cluster-state new
为--initial-cluster-state existing
。从 etcd 集群中删除所有数据(带有值的键):
配置
您可以将其投入使用:
/etc/systemd/system/etcd.service
(如果不存在则创建)(第一个成员 aaa 的示例)如果有人可以做一个加密的例子,即使用客户端证书,我将不胜感激。
计时码表
同样重要的是所有五台机器都具有相同的时间。否则你会在你的日志中看到很多错误。为此,我使用了chrony。
/etc/chrony/chrony.conf
请记住也为工作节点提供相同的时间。
检查
sudo etcdctl cluster-health
sudo etcdctl member list