【kubernetes-the-hard-way】03-compute-resources 配置计算资源

【kubernetes-the-hard-way】03-compute-resources 配置计算资源

配置计算资源

Kubernetes 需要一组机器来托管 Kubernetes 控制平面和最终运行容器的工作节点。 在本实验中,您将配置设置 Kubernetes 集群所需的计算机。

机器数据库

本教程将利用一个文本文件作为机器数据库来存储设置 Kubernetes 控制平面和工作节点时将使用的各种机器属性。 以下模式表示机器数据库中的条目,每行一个条目:

IPV4_ADDRESS FQDN HOSTNAME POD_SUBNET

每列对应于机器 IP 地址IPV4_ADDRESS、完全限定域名FQDN、主机名HOSTNAME和 IP 子网POD_SUBNET。 Kubernetes 为每个pod分配一个 IP 地址,POD_SUBNET表示分配给集群中每台机器的唯一 IP 地址范围。

下面是一个示例机器数据库,与创建本教程时使用的数据库类似。 请注意,IP 地址已被屏蔽。 您的计算机可以分配任何 IP 地址,只要每台计算机彼此之间以及jumpbox均可访问。

cat machines.txt
XXX.XXX.XXX.XXX server.kubernetes.local server  
XXX.XXX.XXX.XXX node-0.kubernetes.local node-0 10.200.0.0/24
XXX.XXX.XXX.XXX node-1.kubernetes.local node-1 10.200.1.0/24

现在轮到您创建一个machines.txt文件,其中包含将用于创建 Kubernetes 集群的三台机器的详细信息。 使用上面的示例机器数据库并添加机器的详细信息。

# 例:
cat <<EOF > machines.txt
172.17.0.1 server.kubernetes.local server  
172.17.0.2 node-0.kubernetes.local node-0 10.200.0.0/24
172.17.0.3 node-1.kubernetes.local node-1 10.200.1.0/24
EOF

配置 SSH 访问

SSH 将用于配置集群中的计算机。 验证您是否对计算机数据库中列出的每台计算机具有rootSSH 访问权限。 您可能需要通过更新 sshd_config 文件并重新启动 SSH 服务器来在每个节点上启用 root SSH 访问。

启用 root SSH 访问

如果您的每台计算机都启用了rootSSH 访问,您可以跳过此部分。 如前所述,我们将通过 SSH 启用root访问,以简化本教程中的步骤。 安全性是一种权衡,在这种情况下,我们正在为了方便性而进行优化。 在每台计算机上使用您的用户帐户通过 SSH 登录,然后使用su命令切换到root用户:

su - root

编辑 /etc/ssh/sshd_config SSH 守护进程配置文件并将 PermitRootLogin 选项设置为 yes

sed -i \
  's/^#PermitRootLogin.*/PermitRootLogin yes/' \
  /etc/ssh/sshd_config

重新启动 sshd SSH 服务器以获取更新的配置文件:

systemctl restart sshd

生成并分发 SSH 密钥

在本节中,您将生成 SSH 密钥对并将其分发到servernode-0node-1计算机,在本教程中,它将用于在这些计算机上运行命令。 从jumpbox机器运行以下命令。

生成新的 SSH 密钥:

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub

将 SSH 公钥复制到每台机器:

while read IP FQDN HOST SUBNET; do 
  ssh-copy-id root@${IP}
done < machines.txt

添加每个密钥后,验证 SSH 公钥访问是否正常:

while read IP FQDN HOST SUBNET; do 
  ssh -n root@${IP} uname -o -m
done < machines.txt
aarch64 GNU/Linux
aarch64 GNU/Linux
aarch64 GNU/Linux

主机名

在本节中,您将为servernode-0node-1机器分配主机名。 从jumpbox到每台机器执行命令时将使用主机名。 主机名在集群中也发挥着重要作用。 Kubernetes 客户端不再使用 IP 地址向 Kubernetes API 服务器发出命令,而是使用server主机名。 在向给定 Kubernetes 集群注册时,每台工作机器、node-0node-1也会使用主机名。

要配置每台计算机的主机名,请在jumpbox上运行以下命令。

设置machines.txt文件中列出的每台计算机上的主机名:

while read IP FQDN HOST SUBNET; do 
    CMD="sed -i 's/^127.0.1.1.*/127.0.1.1\t${FQDN} ${HOST}/' /etc/hosts"
    ssh -n root@${IP} "$CMD"
    ssh -n root@${IP} hostnamectl set-hostname ${HOST}
done < machines.txt

验证每台计算机上是否设置了主机名:

while read IP FQDN HOST SUBNET; do
  ssh -n root@${IP} hostname --fqdn
done < machines.txt
server.kubernetes.local
node-0.kubernetes.local
node-1.kubernetes.local

DNS

在本节中,您将生成一个 DNS hosts 文件,该文件将附加到 jumpbox 本地 /etc/hosts 文件以及本教程使用的所有三台计算机的 /etc/hosts 文件。 这将允许使用主机名(例如servernode-0node-1)访问每台计算机。

创建一个新的hosts文件并添加标头以标识要添加的计算机:

echo "" > hosts
echo "# Kubernetes The Hard Way" >> hosts

machines.txt文件中为每台机器生成一个 DNS 条目,并将其附加到hosts文件中:

while read IP FQDN HOST SUBNET; do 
    ENTRY="${IP} ${FQDN} ${HOST}"
    echo $ENTRY >> hosts
done < machines.txt

查看hosts文件中的 DNS 条目:

cat hosts

# Kubernetes The Hard Way
XXX.XXX.XXX.XXX server.kubernetes.local server
XXX.XXX.XXX.XXX node-0.kubernetes.local node-0
XXX.XXX.XXX.XXX node-1.kubernetes.local node-1

将 DNS 条目添加到本地计算机

在本节中,您将把hosts文件中的 DNS 条目附加到jumpbox计算机上的本地/etc/hosts文件中。

将 DNS 条目从 hosts 附加到 /etc/hosts

cat hosts >> /etc/hosts

验证/etc/hosts文件是否已更新:

cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       jumpbox

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters



# Kubernetes The Hard Way
XXX.XXX.XXX.XXX server.kubernetes.local server
XXX.XXX.XXX.XXX node-0.kubernetes.local node-0
XXX.XXX.XXX.XXX node-1.kubernetes.local node-1

此时,您应该能够使用主机名通过 SSH 连接到machines.txt文件中列出的每台计算机。

for host in server node-0 node-1
   do ssh root@${host} uname -o -m -n
done
server aarch64 GNU/Linux
node-0 aarch64 GNU/Linux
node-1 aarch64 GNU/Linux

将 DNS 条目添加到远程计算机

在本节中,您将把 DNS 条目从hosts附加到machines.txt文本文件中列出的每台计算机上的/etc/hosts

hosts文件复制到每台计算机并将内容附加到/etc/hosts

while read IP FQDN HOST SUBNET; do
  scp hosts root@${HOST}:~/
  ssh -n \
    root@${HOST} "cat hosts >> /etc/hosts"
done < machines.txt

此时,当从jumpbox机器或 Kubernetes 集群中的三台机器中的任何一台连接到机器时,可以使用主机名。 您现在可以使用servernode-0node-1等主机名连接到计算机,而不是使用 IP 地址。

下一步: 配置 CA 并生成 TLS 证书

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值