admin管理员组文章数量:1649208
目录
- 一、环境规划
- 二、环境准备
-
- 2.1 搭建流程概述:
- 2.2 安装环境准备
-
- 2.2.1 升级系统内核
- 2.2.2 设置主机名和hosts本地解析
- 2.2.3 关闭防火墙和SELinux
- 2.2.4 时间同步
- 2.2.5 关闭 swap 分区
- 2.2.6 将桥接的IPv4流量传递到iptables链
- 2.2.7 开启 ipvs
- 2.2.8 重启机器
- 2.3 容器化环境和组件安装
-
- 2.3.1 Docker 安装
- 2.3.2 设置Docker镜像加速器:
- 2.3.3 添加阿里云的YUM软件源
- 2.3.4 安装kubeadm、kubelet和kubectl
- 三、kubernetes集群部署
-
- 3.1 下载k8s所需镜像
- 3.2 部署 Kubernetes 的 Master 节点
- 3.3 部署 Kubernetes 的 Node节点
- 3.4 部署网络插件
- 3.5 设置 kube-proxy 的 ipvs 模式
- 3.6 配置Node节点也能使用 kubectl 命令
- 3.7 服务部署
- 3.8 自动补全
- 3.9 安装K8s-Dashboard
- 3.10 登录dashboard
- 四、参考资料
- 五、拓展
学习并总结一下使用三台虚拟机搭建一个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 搭建流程概述:
- 准备3台机器,要求网络互通(云服务器私网互通,虚拟机网络互通),同时可联网,因为要拉取镜像。
- 关闭防火墙、selinux、swap分区等,这些是可能会导致k8s集群出问题的地方,需要提前配置好。
- 安装Docker容器化环境,同时安装三个核心组件:kubeadm、kubelet、kubectl。
- 下载k8s所需镜像,创建一个master节点,将slave节点加入到当前集群。
- 在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/RPM-GPG-KEY-elrepo
rpm -Uvh https://www.elrepo/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模式,允许访问被拒绝的操作,但会记录到系统日志中。
版权声明:本文标题:如何搭建K8S集群 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729508851a1203815.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论