如何搭建K8S集群

学习并总结一下使用三台虚拟机搭建一个kubernetes集群的过程。

一、环境规划

  • Kubernetes 集群大致分为两类:一主多从和多主多从。
    (1)一主多从(单 master ):一个 Master 节点,多台 Node
    节点,搭建简单,但是有单机故障风险,适合用于测试环境。
    (2)多主多从(高可用):多台 Master 节点和多台 Node
    节点,搭建麻烦但安全性高,适合用于生产环境。

  • kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包三种。简介如下:
    (1)minikube:一个用于快速搭建单节点的kubernetes工具。
    (2)kubeadm:一个用于快速搭建kubernetes集群的工具。
    (3)二进制包:从官网上下载每个组件的二进制包依次安装,此方式对于理解kubernetes组件更加有效。

1.集群类型:一主多从
2.安装方式:使用kubeadm工具快速搭建kubernetes集群。
3.主机规划:

角色 IP地址 实验环境
master 192.168.18.20 Centos7.9 虚拟机
slave01 192.168.18.21 Centos7.9 虚拟机
slave02 192.168.18.22 Centos7.9 虚拟机

二、环境准备

2.1 搭建流程概述:

  1. 准备3台机器,要求网络互通(云服务器私网互通,虚拟机网络互通),同时可联网,因为要拉取镜像。
  2. 关闭防火墙、selinux、swap分区等,这些是可能会导致k8s集群出问题的地方,需要提前配置好。
  3. 安装Docker容器化环境,同时安装三个核心组件:kubeadm、kubelet、kubectl。
  4. 下载k8s所需镜像,创建一个master节点,将slave节点加入到当前集群。
  5. 在k8s集群安装相关服务进行验证,登录k8s的web的用户界面dashboard。

2.2 安装环境准备

其实简单来说通过两条指令就能部署一个kubernetes集群:
1.创建一个master节点:kubeadm init
2.将slave节点加入当前集群:kubeadm join <master 节点的IP和端口> 在执行kubeadm init 指令后,kubeadm首先会做一系列检查工作,确保机器能够安装kubernetes:

  • linux系统内核的版本是否必须3.10以上?
  • linux cgroups模块是否可用?
  • 机器的hostname是否标准?
  • 安装的kubeadm和kubelet是否匹配?
  • docker是否已经安装? … 因此建议把环境配置好再部署。

2.2.1 升级系统内核

K8S集群服务器内核必须一致,建议在每个节点(三台机器)上都升级系统内核到最新版本。

1.检查操作系统的版本(操作系统的版本至少在7.5以上)

#实验环境下机器的系统版本为7.9,内核版本为3.10.0
#查看系统版本
cat /etc/redhat-release
#查看当前系统的内核:
uname -sr

在这里插入图片描述
2.默认的 3.10.0版本较低,建议安装最新主线内核版本:

#在 CentOS 7.x 上启用 ELRepo 仓库:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

#查看可用的系统内核相关包:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

#安装最新主线内核版本:
yum -y --enablerepo=elrepo-kernel install kernel-ml

在这里插入图片描述
3.设置默认的内核版本:

#修改GRUB_DEFAULT=0,设置为0表示默认启动第一个操作系统或内核,从0开始计数
vi /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0 # 修改此处,原来是 saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

4.重新创建内核配置:

grub2-mkconfig -o /boot/grub2/grub.cfg

#查看默认内核
grubby --default-kernel

#若不是最新的,使用以下命令设置,reboot重启生效。
grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo)

在这里插入图片描述

2.2.2 设置主机名和hosts本地解析

这一步的作用是方便识别,如主节点所在的虚拟机命名为k8s-master,从节点所在的虚拟机命名为k8s-slave01、k8s-slave02(重启或者新开窗口可验证)。

Linux 的 /etc/hosts 文件是配置ip地址及其对应主机名的文件,这里可以记录本机的或其他主机的ip及其对应主机名,方便后面集群节点间的直接调用,因此在每个节点(三台机器)上都配置一下主机名解析。

#根据集群规划,各节点设置对应的主机名
hostnamectl set-hostname k8s-master    #192.168.18.20
hostnamectl set-hostname k8s-slave01     #192.168.18.21
hostnamectl set-hostname k8s-slave02     #192.168.18.22

vi /etc/hosts 
#所有节点编辑/etc/hosts文件,添加:
127.0.0.1   $(hostname)
192.168.18.20 k8s-master
192.168.18.21 k8s-slave01
192.168.18.22 k8s-slave02

在这里插入图片描述

2.2.3 关闭防火墙和SELinux

在每个节点(三台机器)上都关闭防火墙,并设置开机禁用。

在实际生产环境中,通常会采用防火墙和SELinux来增强系统的安全性,但在学习和测试环境中,这些安全措施可能会造成麻烦。因此,只用于学习环境建议关闭所有节点的防火墙和SELinux,以方便学习和测试。三台机器(所有节点)均需要在部署前配置好环境。

#关闭防火墙,关闭SELinux(设置为disabled)
systemctl stop firewalld && systemctl disable firewalld 
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

#确保防火墙和SElinux是关闭状态
systemctl status firewalld
getenforce

#查看selinux:cat /etc/selinux/config
#1.永久关闭 SELinux ,需要重启机器生效:sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
说明:修改SELinux配置文件,将SELINUX=enforcing改为SELINUX=disabled,禁用SELinux安全模块。其中,sed是一个文本编辑器,-i选项表示直接修改原文件,#是分隔符,g表示全局替换。

#2.临时关闭当前会话的 SELinux ,机器重启之后无效:setenforce 0
说明:将SELinux设置为Permissive模式,允许访问被拒绝的操作,但会记录到系统日志中。

  • 39
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值