实验 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。正确的解决方法是使用 ausearch
、audit2allow
等工具进行调查并创建所需的策略文件。
运行以下命令可以绕过 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
作者:Wale Soyinka
贡献者:Steven Spencer, Ganna Zhyrnova