1.  环境规划:

主机名主机地址内核数量
master192.168.188.1132核
slave1192.168.188.1142核
slave2192.168.188.1152核

以下所有节点都在进行配置

2.  初始配置:

        1>.  修改主机名。

        2>.  配置三个节点的hosts解析。

        3>.  配置三个节点的时间同步。

        4>.  关闭三个节点的防火墙并且禁用selinux。

3.  禁用swap分区:swap分区据的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明:

[root@master ~]# vim /etc/fstab 

## 将文件中该行注释掉
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

4.  升级操作系统内核:

## 导入elrepo gpg key
[root@master ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

## 安装elrepo yum仓库
[root@master ~]# yum -y install https://www.elrepo.org/elrepo-release-7.0-
4.el7.elrepo.noarch.rpm

## 安装install kernel-ml,ml为长期稳定版本,lt为长期维护版本
[root@master ~]# yum --enablerepo="elrepo-kernel" -y install kernel-ml.x86_64

## 设置grub2默认引导为0
[root@master ~]# grub2-set-default 0

## 重新生成grub2引导文件
[root@master ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

## 更新后需要重启,是升级的内核生效
[root@master ~]# reboot

## 重新查看内核
[root@master ~]# uname -r
6.0.0-1.el7.elrepo.x86_64

5.  修改linux的内核参数:

## 修改linux内核参数,添加网桥过滤和地址转发功能
[root@master ~]# vim /etc/sysctl.d/kubernetes.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness=0

## 重新加载配置
[root@master ~]# sysctl -p /etc/sysctl.d/kubernetes.conf

## 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter

## 修改bridge-nf-call-iptables文件
[root@master ~]# echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

## 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter
br_netfilter           28672  0

6.  配置ipvs功能:在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块。

##  安装ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadm -y

## 添加需要加载的模块写入脚本文件
[root@master ~]# vim /etc/sysconfig/modules/ipvs.modules

#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack

## 为脚本添加执行权限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

## 执行脚本文件
[root@master ~]# sh /etc/sysconfig/modules/ipvs.modules

## 查看对应的模块是否加载成功:
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
ip_vs_sh               16384  0 
ip_vs_wrr              16384  0 
ip_vs_rr               16384  0 
ip_vs                 163840  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          159744  5 xt_conntrack,nf_nat,xt_nat,xt_MASQUERADE,ip_vs
nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
libcrc32c              16384  5 nf_conntrack,nf_nat,nf_tables,xfs,ip_vs

7.  由于k8s的镜像源在国外,速度比较慢,因此这里切换成国内源:

[root@master ~]# vim /etc/yum.repos.d/kubernetes.repo

[Kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
         http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

[root@master ~]# yum clean all && yum makecache

8.  集群软件安装:

## 查看所有可用版本
[root@master ~]# yum list kubeadm kubelet kubectl --showduplicates | sort -r

[root@master ~]# yum install kubelet-1.24.2 kubeadm-1.24.2 kubectl-1.24.2

## 查看k8s版本
[root@master ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.2", 
GitCommit:"f66044f4361b9f1f96f0053dd46cb7dce5e990a8", GitTreeState:"clean", 
BuildDate:"2022-06-15T14:20:54Z", GoVersion:"go1.18.3", Compiler:"gc", 
Platform:"linux/amd64"}

9.  配置kubelet的cgroup:为了实现docker使用的cgroupdriver与kubelet使用cgroup的一致性,建议使用以下文件内容。

[root@master ~]# vim /etc/sysconfig/kubelet 

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

10.  设置kubelet开机自启:

[root@master ~]# systemctl enable kubelet.service 

11. 创建快照,保存配置。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐