环境准备
本地用的操作系统是Windows 10 专业版,版本号22H2,操作系统内部版本19045.3324,内存64.0 GB,处理器12th Gen Intel® Core™ i9-12900K 3.19 GHz,三台机都是通过VMware Workstation Pro安装Centos7的操作系统。
规划Kubernetes集群配置
角色 | IP | kubernetes版本 |
k8s-master | 192.168.122.130 | |
k8s-node1 | 192.168.122.131 | |
k8s-node2 | 192.168.122.132 |
主机间做信任
在本地Windows操作系统生成秘钥文件,并把它上传到Linux操作系统CentOS7的3台机上面,做好免密登录,方便后续的操作。
执行ssh-copy-id root@目标IP地址
命令实现免密登录,其他两台做同样的操作。
在Windows系统中执行ssh-copy-id root@192.168.248.129命令时,需要使用第三方软件来实现SSH客户端的功能,如PuTTY、Git Bash等。
使用ssh-copy-id命令实现免密登录的安装与配置
下面以Git Bash为例,介绍在Windows系统中使用ssh-copy-id命令实现Linux的CentOS 7免密登录的安装与配置过程。
1. 安装Git Bash软件
可以从Git官网下载安装程序,安装时选择默认选项即可。
2. 生成公钥
在Git Bash中执行以下命令,生成公钥文件:
ssh-keygen -t rsa
执行后,会提示输入文件名和密码等信息,可以直接按回车选择默认选项。生成的公钥文件默认保存在用户目录的.ssh目录下,文件名为id_rsa.pub。
然后将这二个文件上传到k8s-master、k8s-node1、k8s-node2
3. SSH登录Linux服务器
使用Git Bash登录到Linux服务器,执行以下命令:
ssh root@192.168.122.130
第一次登录时,会提示是否添加主机到已知主机列表。输入yes,然后输入Linux服务器的密码即可登录成功。
4. 公钥复制到Linux服务器
使用以下命令将公钥复制到Linux服务器上:
ssh-copy-id root@192.168.122.130
执行后,会提示输入Linux服务器的密码,输入即可。
5. SSH免密登录测试
使用以下命令测试是否已实现SSH免密登录:
ssh root@192.168.122.130
若能直接登录而无需输入密码,则表示SSH免密登录已成功实现。
提示“/root/.ssh/id_rsa”的权限0777太开放,此私钥将被忽略,修改一下权限,代码如下:
chmod 600 /root/.ssh/id_rsa
执行过程中如果出现提示无法打开 ‘/root/.pub’ 这个文件,因为该文件或目录不存在。在尝试将SSH公钥复制到远程服务器时,可能指定了错误的公钥文件路径。可以尝试以下步骤来解决此问题:首先,确保具有SSH密钥对。运行以下命令来检查:
ls -al ~/.ssh
。如果结果中没有 id_rsa 和 id_rsa.pub 文件,说明您还没有SSH密钥对。您可以使用以下命令生成它们:ssh-keygen -t rsa
。按提示操作即可,不必理会默认设置。
其他二台机器也是如此操作,这样就可以在本地(Windows操作系统)、CentOS(3台机器)都可以使用,效果如下图所示:
安装ansible工具
是的,Ansible是一种自动化工具,可用于配置和管理多个服务器。它使用SSH连接来远程管理服务器,可以在多个服务器上同时执行命令,从而提高效率。安装Ansible也非常简单,只需从官方的yum源安装即可。在CentOS上,可以使用以下命令安装Ansible,只需要在master上安装,然后在配置/etc/ansible/hosts文件中,将要操作的主机加入一个组中即可。安装命令代码如下:
yum install epel-release -y yum -y install ansible
在安装完成后,就可以开始使用Ansible进行自动化配置和管理服务器了。
配置/etc/ansible/hosts,该文件是存放要操作的主机,如下:
vim /etc/ansible/hosts
把上述三台机器加入一个组名字为k8s,如下:
[k8s] 192.168.122.130 192.168.122.131 192.168.122.132
执行ansible命令测试连通性,命令如下:
ansible k8s -m ping
该命令会对名为k8s的主机组中的所有主机执行ping模块,测试它们是否能正常连接。如果输出pong,就说明测试成功。如果输出失败信息,则需要检查主机的网络设置和防火墙等因素是否正确。
-m:指定使用的Ansible模块。 ping:是Ansible中一个模块,用于测试主机的连通性。 k8s:是Ansible中定义的主机组名,即要执行ping命令的目标主机所属的主机组。
k8s:刚定义的组名
升级内核版本
查看Linux内核版本号,可以使用以下命令:
uname -sr
这将返回当前正在运行的Linux内核版本号。
Linux 3.10.0-1160.95.1.el7.x86_64
当前内核版本是3.10,Kubernetes需要使用一些Linux内核的功能,例如Namespaces、Cgroups、OverlayFS等,这些功能是在比较新的Linux内核版本中才能够完整支持。因此,为了保证Kubernetes的正常运行,建议升级到最新的Linux内核版本。对于Kubernetes1.22版本来说,官方推荐的最低Linux内核版本为4.4。如果使用的是更老的Linux内核版本,可能会在Kubernetes的安装、部署和使用中遇到一些问题或者限制。因此,为了获得更好的Kubernetes使用体验,建议升级到官方推荐的Linux内核版本或者更高的版本。
使用elrepo源升级内核
在每台机器上都执行相同的命令来安装elrepo源,配置elrepo源,执行如下命令:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
查看最新版内核
执行如下命令查看最新的内核版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
kernel-ml #主线版本,比较新
kernel-lt #长期支持版本,比较旧
安装最新的内核版本
执行如下命令安装主线版本:
yum --enablerepo=elrepo-kernel install kernel-ml -y