跳至内容

实验 7:引导 etcd 集群

信息

这是由 Kelsey Hightower(GitHub:kelseyhightower)最初编写的 “Kubernetes the hard way” 的一个分支。与原始版本不同的是,原始版本基于 ARM64 架构的类 Debian 发行版,而此分支则针对 Rocky Linux 等企业级 Linux 发行版,这些发行版运行在 x86_64 架构上。

Kubernetes 组件是无状态的,并将集群状态存储在 etcd 中。在本实验中,您将引导一个三节点 etcd 集群,并为其配置高可用性和安全的远程访问。

先决条件

etcd 二进制文件和 systemd 单元文件复制到 server 实例

scp \
  downloads/etcd-v3.4.36-linux-amd64.tar.gz \
  units/etcd.service \
  root@server:~/

server 机器上运行本实验后续章节中的命令。使用 ssh 命令登录到 server 机器。例如

ssh root@server

引导 etcd 集群

安装 etcd 二进制文件

如果尚未安装,请先使用 dnf 安装 tar 工具。然后,解压并安装 etcd 服务器和 etcdctl 命令行工具

  dnf -y install tar
  tar -xvf etcd-v3.4.36-linux-amd64.tar.gz
  mv etcd-v3.4.36-linux-amd64/etcd* /usr/local/bin/

配置 etcd 服务器

  mkdir -p /etc/etcd /var/lib/etcd
  chmod 700 /var/lib/etcd
  cp ca.crt kube-api-server.key kube-api-server.crt \
    /etc/etcd/

每个 etcd 成员在 etcd 集群中必须有一个唯一的名称。设置 etcd 名称以匹配当前计算实例的主机名

创建 etcd.service systemd 单元文件

mv etcd.service /etc/systemd/system/
chmod 644 /etc/systemd/system/etcd.service

注意

虽然这被认为是一种糟糕的安全实践,但如果您在启动 etcd systemd 服务时遇到任何问题,可能需要暂时或永久禁用 SELinux。正确的解决方法是使用 ausearchaudit2allow 等工具进行调查并创建所需的策略文件。

运行以下命令可以绕过 SELinux 并禁用它

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

启动 etcd 服务器

  systemctl daemon-reload
  systemctl enable etcd
  systemctl start etcd

验证

列出 etcd 集群成员

etcdctl member list
6702b0a34e2cfd39, started, controller, http://127.0.0.1:2380, http://127.0.0.1:2379, false

下一步:引导 Kubernetes 控制平面

作者:Wale Soyinka

贡献者:Steven Spencer, Ganna Zhyrnova