雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

如何在 Rocky Linux 9/AlmaLinux 9 上安装 Kubernetes

2024-06-24 Linux 174

Rocky Linux 9/AlmaLinux 9 Linux 发行版自 2022 年 7 月起向公众开放。它们的支持期限将持续到 2032 年 5 月 31 日(10 年支持寿命),使其成为运行 Kubernetes 集群的理想平台。在本文中,我们分享在 Rocky Linux 9/AlmaLinux 9 系统上设置 3 节点 kubernetes 集群时应遵循的步骤。

  • 1 控制平面 kubernetes 节点
  • 2 Kubernetes工作节点

我的服务器设置如下所示。

Server IP Server Hostname Role
37.27.37.63 k8smaster.mylab.io Master Node (Control Plane)
37.27.6.95 k8snode01.mylab.io Worker Node 01
135.181.195.155 k8snode02.mylab.io Worker Node 02

本指南中使用的基础架构由 Hetzner Cloud 提供支持。

$ hcloud server list
ID         NAME                 STATUS    IPV4              IPV6                      PRIVATE NET   DATACENTER
41815406   k8snode01.mylab.io   running   37.27.6.95        2a01:4f9:c011:bf23::/64   -             hel1-dc2
41815407   k8snode02.mylab.io   running   135.181.195.155   2a01:4f9:c011:b7d7::/64   -             hel1-dc2
41815408   k8smaster.mylab.io   running   37.27.37.63       2a01:4f9:c012:c08a::/64   -             hel1-dc2

此设置是使用 Ansible Playbook 半自动化的,它将运行一系列任务来配置诸如以下内容:

  • 更新系统并安装依赖包
  • 禁用swap(安装kubernetes集群时必须关闭)
  • 设置时区并配置NTP时间同步
  • 加载所需的内核模块并配置其他 sysctl 配置
  • 在每个节点上配置/etc/hosts文件
  • 安装和配置容器运行时; Containerd、CRI-O 或 Docker 与 Mirantis cri-dockerd
  • 配置firewalld(如果已激活)

1. 准备您的工作站机器

工作站是执行 ansible 命令的地方。这也可以是集群节点之一。

在计算机上安装基本的 CLI 工具。

### Ubuntu / Debian ###
sudo apt update
sudo apt install git wget curl vim bash-completion tmux

### CentOS / RHEL / Fedora / Rocky Linux ###
sudo yum -y install git wget curl vim bash-completion tmux

接下来我们安装 ansible(如果尚未安装)。

### Python3 ###
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user
python3 -m pip install ansible --user

### Python2 ###
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py --user
python -m pip install ansible --user

安装后检查 Ansible 版本:

$ ansible --version
ansible [core 2.15.8]
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /root/.local/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /root/.local/bin/ansible
  python version = 3.9.18 (main, Sep  7 2023, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] (/usr/bin/python3)
  jinja version = 3.1.3
  libyaml = True

更新工作站计算机中的 /etc/hosts 文件:

$ sudo vim /etc/hosts
37.27.37.63      k8smaster.mylab.io  k8smaster
37.27.6.95       k8snode01.mylab.io  k8snode01
135.181.195.155  k8snode02.mylab.io  k8snode02

生成 SSH 密钥:

$ ssh-keygen -t rsa -b 4096 -N ''
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wAufyZb3Zn/aEjo2Ds9/wnJrTTM2L3LsTlvtFXMiZcw [email 
The key's randomart image is:
+---[RSA 4096]----+
|OOo              |
|B**.             |
|EBBo. .          |
|===+ . .         |
|=*+++ . S        |
|*=++.o . .       |
|=.o. .. . .      |
| o. .    .       |
|   .             |
+----[SHA256]-----+

使用以下参数创建 SSH 客户端配置文件。

$ vim ~/.ssh/config
Host *
    UserKnownHostsFile /dev/null
    StrictHostKeyChecking no
    IdentitiesOnly yes
    ConnectTimeout 0
    ServerAliveInterval 30

将 SSH 密钥复制到所有 Kubernetes 集群节点

ssh-copy-id username@ServerIP #Loop for all nodes.

# Example
ssh-copy-id  root@k8smaster
ssh-copy-id  root@k8snode01
ssh-copy-id  root@k8snode02

2. 在所有节点上设置正确的主机名

登录集群中的每个节点并配置正确的主机名:

# Examples
# Master Node 01
sudo hostnamectl set-hostname k8smaster.mylab.io

# Worker Node 01
sudo hostnamectl set-hostname k8snode01.mylab.io

注销然后重新登录以确认主机名设置正确:

$ hostnamectl
 Static hostname: k8smaster.mylab.io
       Icon name: computer-vm
         Chassis: vm 更新于:5个月前
赞一波!2

文章评论

评论问答