嚣张研究站呀 · 2023年9月7日 0

K8s部署测试

 部署环境为  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
  1. setenforce 0:将 SELinux 的执行模式设置为宽容模式(Permissive Mode)。
  2. systemctl disable firewalld --now:禁用并停止 firewalld 防火墙服务。
  3. systemctl disable dnsmasq --now:禁用并停止 dnsmasq DNS 服务。
  4. systemctl disable NetworkManager --now:禁用并停止 NetworkManager 网络管理器服务。
  5. swapoff -a:关闭所有交换空间。
  6. sysctl -w vm.swappiness=0:将系统的交换空间使用比例调整为最低(0),减少对交换空间的使用。
  7. sed -i "/swap/d" /etc/fstab:使用 sed 工具编辑 /etc/fstab 文件,删除其中包含关于交换空间的行,从而实现永久关闭交换空间。
  8. -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
  1. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime:使用 ln 命令将 /usr/share/zoneinfo/Asia/Shanghai 软链接到 /etc/localtime,以设置系统时区为中国上海。
  2. echo 'Asia/Shanghai' > /etc/timezone:使用 echo 命令将 Asia/Shanghai 写入 /etc/timezone 文件中,以设置时区。
  3. yum -y install chrony:使用 yum 包管理器安装 Chrony 时间同步服务。
  4. 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 文件中。请将 IP0IP1IP2 替换为实际的 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:包含一些有用的进程工具,如killallfuser
  • vim:一款功能强大的文本编辑器。
  • net-tools:包含一些网络工具,如ifconfignetstatping
  • 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/ 目录中

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
  1. yum install -y kubelet kubeadm kubectl:使用 YUM 安装 Kubernetes 的 kubelet、kubeadm 和 kubectl 组件。-y 参数用于自动回答确认提示,加快安装过程。
  2. systemctl enable kubelet --now:将 kubelet 服务设置为开机启动,并立即启动该服务。
  3. yum -y install yum-utils device-mapper-persistent-data lvm2:使用 YUM 安装一些依赖项,包括 yum-utils、device-mapper-persistent-data 和 lvm2。
  4. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo:向系统添加 Docker-CE 的 YUM 仓库配置文件。
  5. yum -y install containerd:使用 YUM 安装 containerd 容器运行时。
  6. systemctl enable containerd --now:将 containerd 服务设置为开机启动,并立即启动该服务。