1.kubeadm搭建生产环境的单master节点的k8s集群
1.1 初始化集群环境
虚拟机基于Rocky Linux
准备三台linux机器,每台机器配置:4VCPU/4G内存/60G硬盘
环境说明:
IP 主机名 角色 内存 cpu
192.168.126.63 xuegod63 master 4G 4VCPU
192.168.126.64 xuegod64 worker 4G 4VCPU
192.168.126.62 xuegod62 worker 4G 4VCPU
1.配置静态ip 每台机器网络模式保持一直,能互相通信,机器网卡名字统一
目录:vim /etc/NetworkManager/system-connections/ens33.nmconnection
2.永久关闭selinux
cd /etc/selinux/config
sed -i 's/SELINUX-enforcing/SELINUX-disanled/g' /etc/selinux/config
#注意:修改selinux配置文件后,重启机器,selinux才能生效
查看是否成功: getenforce
在安装k8s时,关闭SELinux是因为默认情况下,SELinux会阻止Kubernetes一些操作,如kubelet对容器文件的访问等。为了避免由于SELinux导致Kubernetes 运行不正常,建议在安装Kubernetes之前关闭:SELinux。
如果启用了·SELinux,需要针对·Kubernetes·进行特定的·SELinux·配置,以确保·Kubernetes正常工作。具体的操作如下:
安装policycoreutils-python·工具: yum install -y policycoreutils-python
为·kubelet、kube-proxy·和· container·runtime·的进程添加· SELinux·策略。例如,为kubelet·添加策略的命令为:
semanage fcontext -a -t container_runtime_exec_t /usr/local/bin/kubelet
重载SELinux策略:
restorecon -R /usr/local/bin/kubelet
3.配置主机名
在3台主机上分别配置对应的主机名称:
hostnamectl set-hostname xuegod63 && bash
hostnamectl set-hostname xuegod64 && bash
hostnamectl set-hostname xuegod62 && bash
4.配置Hosts文件
修改每台机器的/etc/hosts文件:为了让3台机器互相通信
192.168.126.63 xuegod63
192.168.126.64 xuegod64
192.168.126.62 xuegod62
5.安装基本的软件包(3台)
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo libaio-devel vim ncurses-devel autoconf automake zlib-devel epel-release openssh-server socat conntrack telnet ipvsadm
6.配置主机之间无密码登录
配置xuegod63到其它机器免密登录
ssh-keygen #一路回车,不输入密码
把本地的ssh公钥文件安装到远程主机对应的账户
ssh-copy-id xuegod63
ssh-copy-id xuegod64
ssh-copy-id xuegod62
7.关闭防火墙
systemctl stop firewalld; systemctl disable firewalld
[root@xuegod62~]#systemctl stop firewalld; systemctl disable firewalld
如果生产机器,防火墙开启,不能关,也可以,但是要放行一些端口:
6443:Kubernetes·APl Server
2379、2380:etcd服务
10250、10255:kubelet服务
10257:kube-controller-manager 服务
10259:kube-scheduler服务
30000-32767:在物理机映射的NodePort 端口
179、473、4789、9099:Calico服务端口
如何在防火墙规则里放行端口:
firewall-cmd --zone=public --add-port=6443/tcp --permanent
#–zone 指定了防火墙规则所属的区域,–add-port 指定了要开放的端口号和协议,–permanent·表示在重启后也会保留这个规则。“
8.关闭交换分区 swap
安装k8s 会检查交换分区,如果存在会报错,可以设置跳过检查交换分区 官方建议关掉 影响性能
swapoff -a
永久关闭 注释swap挂载
vim /etc/fstab #给swap这行开头加一下注释
交换分区(Swap)是为了在内存不足时,把部分内存的数据交换到硬盘上,以释放内存空间的一种机制。这样,即使物理内存不足,也可以保证系统运行的稳定性和正常性。在安装 Kubernetes 时,需要禁用交换分区。这是因为Kubernetes 在运行时需要使用大量的内存和 CPU资源,如果系统开始使用交换分区,会导致性能下降,严重影响Kubernetes的正常运行。因此,为了保证Kubernetes 的性能和稳定性,建议在安装Kubernetes 时禁用交换分区
9.修改内核参数
modprobe br_netfilter
modprobe是一个Linux命令,它用于动态加载内核模块到linux内核中。br_netfilter是linux内核模块之一,它提供了桥接网络设备和Netfilter之间的接口。Netfilter是Linux内核中的一个框架,它可以在数据包中通过网络协议栈时进行修改或过滤。
在kubernetes中,br_netfilter模块用于实现kubernetes集群中的网络