部署环境为 centos7.9 , kubernetes 1.27
环境准备:

每一台设备都需要的操作:
1,更新源
修改 CentOS 操作系统的 YUM 软件源配置文件,将默认的镜像源地址替换为中国科技大学的镜像站点,并备份原始配置文件。
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-Base.repo
yum -y update
-e选项表示对文件进行多次编辑;s|^mirrorlist=|#mirrorlist=|g表示将以mirrorlist=开头的行注释掉,并以#mirrorlist=开头的新行替换;s|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g表示将以#baseurl=http://mirror.centos.org/centos开头的行修改为以baseurl=https://mirrors.ustc.edu.cn/centos开头的新行。-i.bak选项表示在编辑时备份原始文件并使用.bak扩展名保存。
2.关闭防火墙 dnsmap networkmanager swap selinux
setenforce 0
systemctl disable firewalld --now
systemctl disable dnsmasp --now
systemctl disable NetworkManager --now
swapoff -a && sysctl -w vm.swappiness=0 && sed -i "/swap/d" /etc/fstabsed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0:将 SELinux 的执行模式设置为宽容模式(Permissive Mode)。systemctl disable firewalld --now:禁用并停止 firewalld 防火墙服务。systemctl disable dnsmasq --now:禁用并停止 dnsmasq DNS 服务。systemctl disable NetworkManager --now:禁用并停止 NetworkManager 网络管理器服务。swapoff -a:关闭所有交换空间。sysctl -w vm.swappiness=0:将系统的交换空间使用比例调整为最低(0),减少对交换空间的使用。sed -i "/swap/d" /etc/fstab:使用 sed 工具编辑/etc/fstab文件,删除其中包含关于交换空间的行,从而实现永久关闭交换空间。-i选项表示在原始文件上进行直接编辑。's/SELINUX=enforcing/SELINUX=disabled/g'是sed的替换命令,将文件中所有出现的SELINUX=enforcing替换为SELINUX=disabled。/etc/selinux/config是要编辑的文件路径。命令将禁用SELinux,在系统重启后仍然生效
3.设置时区和时间同步
将系统时区设置为中国上海(Asia/Shanghai)、安装和启用时间同步服务 Chrony
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' > /etc/timezone
yum -y install chrony
systemctl enable chronyd --now
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime:使用 ln 命令将/usr/share/zoneinfo/Asia/Shanghai软链接到/etc/localtime,以设置系统时区为中国上海。echo 'Asia/Shanghai' > /etc/timezone:使用 echo 命令将Asia/Shanghai写入/etc/timezone文件中,以设置时区。yum -y install chrony:使用 yum 包管理器安装 Chrony 时间同步服务。systemctl enable chronyd --now:使用 systemctl 命令启用并立即启动 Chrony 服务,并使其开机自启动。
4.设置ulimit的值
open file值, 可以用ulimit -a 查看
ulimit -SHn 65535
ulimit是一个用于设置和显示系统资源限制的命令。-S选项表示对软限制进行操作。-H选项表示对硬限制进行操作。n表示文件描述符的数量限制。65535是要设置的文件打开限制的值。
通过执行此命令,将文件打开限制设置为65535。您可以使用 ulimit -a 命令查看当前的资源限制设置,包括文件打开限制。
5.设置主机名
以下为示例
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl是一个用于管理主机名和相关设置的命令。set-hostname是一个指定要设置主机名的子命令。k8s-master是要设置的新主机名。
6.添加hosts
cat >> /etc/hosts << EOF
192.168.44.17 k8s-master
192.168.44.18 k8s-nnode1
192.168.44.19 k8s-nnode2192.168.44.20 k8s-testEOF
cat >> /etc/hosts:使用cat命令将输入附加到/etc/hosts文件中。<< EOF:表示输入的开始标记,在输入结束之前,所有行将被视为输入内容。IP0 k8s-master:将 IP 地址与主机名k8s-master关联。IP1 k8s-node1:将 IP 地址与主机名k8s-node1关联。IP2 k8s-node2:将 IP 地址与主机名k8s-node2关联。
通过执行此命令,将IP地址和主机名的映射添加到 /etc/hosts 文件中。请将 IP0、IP1 和 IP2 替换为实际的 IP 地址,并确保主机名与相应的 IP 地址对应。
这样做可以在主机上建立静态的 IP 地址和主机名的映射关系,方便网络通信时直接使用主机名
7.ssh 密钥和公钥 生成和分发
#密钥生成
ssh-keygen -t rsa
#密钥分发
for i in 节点1名 节点2名 节点3名 ... ; do ssh-copy-id -i /root/.ssh/id_rsa.pub $i;done
通过执行此命令,将在当前用户的 .ssh 目录下生成一个新的RSA密钥对。通常,默认情况下会生成 id_rsa(私钥)和 id_rsa.pub(公钥)两个文件。您可以选择是否为密钥对设置密码。
ssh-keygen是一个用于生成SSH密钥的命令。-t rsa选项指定要使用RSA算法生成密钥对。
该命令通过迭代每个指定的节点,使用 ssh-copy-id 命令将您的公钥复制到每个节点上。以下是命令的解释:
for i in 节点1名 节点2名 节点3名 ... ; do:循环迭代每个指定的节点。ssh-copy-id -i .ssh/id_rsa.pub $i:使用ssh-copy-id命令将您的公钥复制到当前节点 ($i) 上。-i .ssh/id_rsa.pub选项指定要复制的公钥文件路径。$i表示当前迭代的节点名称。
8.系统更新
yum -y clean all
yum -y makecache
yum -y update
9.安装常用软件
yum -y install wget jq psmisc vim net-tools gcc curl bash-completion
wget:用于通过HTTP、HTTPS和FTP下载文件的工具。jq:一种轻量级的命令行JSON处理器,用于解析和转换JSON数据。psmisc:包含一些有用的进程工具,如killall和fuser。vim:一款功能强大的文本编辑器。net-tools:包含一些网络工具,如ifconfig、netstat和ping。gcc:GNU C语言编译器,用于编译C语言代码。curl:用于与服务器进行数据交互的命令行工具。bash-completion:Bash命令自动完成的插件
10.关闭IPV6
vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1

10.让无内网IP主机能够访问外网
安装kubernetes
1.环境检查,交换分区,selinux,时间同步
free -m # 查看swap
getenforce # selinux
systemctl status chronyd #时间同步
2.添加kubernetes源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
创建一个名为 kubernetes.repo 的 YUM 仓库配置文件,并将其写入 /etc/yum.repos.d/ 目录中
name:设置 YUM 仓库的名称为 “Kubernetes”。baseurl:定义 YUM 仓库的基础 URL,即从中安装 Kubernetes 软件包的位置。在这种情况下,使用的基础 URL 是 https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/。enabled:将 YUM 仓库设为启用状态(值为 1),以便在后续使用 YUM 安装软件包时,该仓库可供选择。gpgcheck和repo_gpgcheck:这两个参数都设置为 0,以禁用 GPG 签名检查(因此,安装软件包时不会验证软件包的签名)。gpgkey:定义了 RPM 包的 GPG 密钥文件的位置,以便进行软件包的 GPG 签名验证。在这种情况下,使用的密钥文件位于 https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 和 https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg,都来自于阿里云的 Kubernetes YUM 仓库。
3.安装 Kubernetes 的 kubelet、kubeadm 和 kubectl 组件,以及 Docker 的 containerd 容器运行时。kubelet 和 containerd 将被设置为开机启动,并立即启动。
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet --now
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install containerd
systemctl enable containerd --now
yum install -y kubelet kubeadm kubectl:使用 YUM 安装 Kubernetes 的 kubelet、kubeadm 和 kubectl 组件。-y参数用于自动回答确认提示,加快安装过程。systemctl enable kubelet --now:将 kubelet 服务设置为开机启动,并立即启动该服务。yum -y install yum-utils device-mapper-persistent-data lvm2:使用 YUM 安装一些依赖项,包括 yum-utils、device-mapper-persistent-data 和 lvm2。yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo:向系统添加 Docker-CE 的 YUM 仓库配置文件。yum -y install containerd:使用 YUM 安装 containerd 容器运行时。systemctl enable containerd --now:将 containerd 服务设置为开机启动,并立即启动该服务。






