搭建前提条件:VMare16pro CentOS-7-x86_64-DVD-2009.iso镜像文件, 远程连接工具Xshell或者MobaXterm
首先创建三台centos7的虚拟机,装虚拟机的话大家可以参照网上资料,非常容易。
使用 kubeadm 安装 Kubernetes 集群
在各主机节点上均需要配置。
(1)查看当前系统的内核版本,以及主机名是否符合配置要求管理节点
工作节点 1:
工作节点 2
各主机当前系统的内核版本均为 Linux 3.10.0-1160.62.1.el7.x86_64,而且主机名也符合配置要求。
(2)升级当前系统的内核(不升级内核不支持 ipvlan,有些网络会有问题! )
1.导入公钥 public key
2.安装 epel 源
3.查看可用版本的内核
- yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
- --disablerepo="*":禁用所有 repo 配置文件
- --enablerepo="elrepo-kernel":仅使用仓库名为 elrepo-kernel 的配置文件 kernel-ml 中的 ml 是 main line stable 的缩写,elrepo-kernel 中罗列出来的是最新的稳定主线版本。
- kernel-lt 中的 lt 是 long term support 的缩写,elrepo-kernel 中罗列出来的长期支持版本。
4. 选择安装 ml 最新版本的内核
5.查看系统上可以用的内核顺序
注意:前面的 0、1、2 等代表编号
6.设置默认启动内核
7. 重启并查看内核升级情况管理节点:
工作节点 1:
工作节点 2:
(3) 检查是否已关闭防火墙及禁用 SELinux
工作节点1
工作节点2
各主机系统均已关闭防火墙并禁用 SELinux。
(4)配置主机映射
将/etc/hosts 复制到其他主机节点。
ping各个主机的隐射host
说明主机映射配置成功!
(5)配置时间同步
在各主机上进行时钟同步,时钟同步服务器可自行配置,此处选择阿里云的时钟服务器。
管理节点:
工作节点 1
工作节点 2:
检查系统是否已安装 ntpdate 软件包,若未安装,则可以执行“yum -y install ntpdate”命令进行安装。
(6)关闭 swap 分区
在所有节点上均要关闭 swap。
管理节点:
工作节点 1:
工作节点 2:
(7)配置免密登录
在本地主机上使用 ssh-keygen 产生公钥私钥对。
执行 ssh-kengen 命令后会在~/.ssh/目录下生成两个文件:id_rsa 和 id_rsa.pub,第一个是私钥文件,第二个是公钥文件。
使用 ssh-copy-id 命令将公钥复制到远程主机上。
(8)配置内核参数
开启 IP 转发,并允许 iptables 对 bridge 流量进行处理。
管理节点:
工作节点 1:
工作节点 2:
接下来就是配置yum源了
检查并配置yum源
若下面有的源已配置,则可以略过相应的操作!首先,配置管理节点的yum源:
-1.检查 CentOS 7 本地 YUM 源是否已配置
若未配置 CentOS 7 本地 YUM 源,则需要先行配置。
-2.检查 wget 下载工具是否安装
若未安装 wget 工具,则使用 yum -y install wget 命令进行安装。
-3.下载 CentOS 7 阿里源并配置
下载 CentOS 7 阿里源 http://mirrors.aliyun.com/repo/Centos-7.repo,注意区分大小写。
将 CentOS 7 源文件 CentOS-Base.repo 中的 mirrors.cloud.aliyuncs.com 全部替换为 mirrors.aliyun.com
-4.下载 Docker 阿里源
-5.配置 Kubernetes 阿里源
其次,配置各工作节点的 YUM 源:将管理节点的 YUM 源配置文件复制到各工作节点的相应位置
(9)检查 Docker 服务是否安装管理节点
当前系统已安装 Docker 服务,且已配置阿里云加速器。若未安装,则使用“yum -y install docker-ce”命令进行安装。
各个工作节点
(10)修改docker文件驱动
管理节点:
各工作节点:
系统配置结束
2.安装kubeadm、kubectl、kubelet
(1)查看 kubernetes 版本登录官网(https://v1-23.docs.kubernetes.io/releases/)查看 kubernetes 最近版本。
这里以 kubernetes 1.23.5 版本为例安装说明。
(2)在所有节点上安装 kubeadm、kubectl、kubelet,并设置开机自动启动 kubelet 服务
-1.在管理节点 master200250229 节点上执行
-2.在工作节点 node200250229-1 节点上执行
-3.在工作节点 node200250229-2 节点上执行
(3)kubectl 和 kebuadm 命令 Tab 键补齐 kubectl 和 kebuadm 命令 Tab 键补齐,默认不补齐。管理节点:
退出当前终端生效。各工作节点:
3.Kubernetes 集群初始化
在 master200250229 节点主机上使用 kubeadm 初始化 Kubernetes 集群
- kubeadm init --kubernetes-version=1.23.5 \
- --apiserver-advertise-address=172.16.0.100 \
- --image-repository registry.aliyuncs.com/google_containers \
- --pod-network-cidr=10.244.0.0/16
- 参数说明如下:
- --kubernetes-version:用于指定 k8s 版本;
- --apiserver-advertise-address:用于指定 kube-apiserver 监听的 ip 地址,就是 master 节点主机 IP 地址;
- --image-repository:指定阿里云镜像仓库地址;
- --service-cidr:用于指定 SVC 的网络范围;
- --pod-network-cidr:用于指定 Pod 的网络范围。其中,10.244.0.0/16 为 Flannel 网络的默认网段。
- 将最后面的 kubeadm join 命令内容保存下来,工作节点加入到集群中时需要用到此命令。
4.节点加入 Kubernetes 集群
将 node200250229-1、node200250229-2 节点主机加入 Kubernetes 集群
5. 配置访问 Kubernetes 集群
(1)配置管理节点访问集群
集群状态为未就绪(NotReady),说明当前集群尚未安装网络插件。
(2)配置工作节点访问集群
6. 部署 flannel 网络插件
(1)安装 flannel 网络插件
只需要在 master200250229 管理节点上安装网络插件,。
过了一会儿,在各节点上执行“kubectl get nodes”命令查看节点状态。
(2)查看flannel网络信息
管理节点:
各工作节点:
VXLAN 是 Flannel 默认和推荐的模式。当我们使用默认配置安装 Flannel 时,它会为每个节点分配一个
24 位子网,并在每个节点上创建两张虚机网卡:cni0 和 flannel.1。cni0 是一个网桥设备,类似于 docker0,
节点上所有的 Pod 都通过 veth pair 的形式与 cni0 相连。flannel.1 则是一个 VXLAN 类型的设备,充当 VTEP
(VXLAN Tunnel Endpoints,VXLAN 隧道端点)的角色,实现对 VXLAN 报文的封包解包。
(3)查看集群状态
-1查看组件状态
-2.查看资源对象
注意:使用 kubectl get pod -n kube-system 命令查看集群状态,可能会出现 Pending、ContainerCreating、CrashLoopBackOff、Error、Init:ImagePullBackOff 等异常信息,原因可能内核版本较低、镜像拉取失败等。
7.部署 Dashboard 管理工具Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到Kubernetes集群中,也可以对容器应用进行排错,还能管理集群本身及其附属资源。您可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源(如 Deployment、Job 等等)。例如,您可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。
(1)安装 Dashboard 监控界面仅需在 200250229-master 管理节点上安装 Dashboard。
-1.从官网查找与 kubernetes 对应的 Dashboard 版本,从 https://github.com/kubernetes/dashboard/releases 查找与 kubernetes v1.23.5 对应的 Dashboard 版本。
-2.下载 Dashboard YAML 文件
-3.编辑 Dashboard YAML 文件
由于默认的镜像仓库在国外可能无法访问,因此修改 YAML 文件中的镜像地址。
-4.拉取 Dashboard 镜像
-5.部署 Dashboard
-6.配置外网访问
配置对外暴露端口,将 type: ClusterIP 改为 type: NodePort,使外部可以通过 https://NodeIp:NodePort访问 Dashboard。
-7.检查相关服务的运行状态,获取对外暴露端口
-8. 使用浏览器访问 Dashboard 使用 Firefox 浏览器访问 https://172.16.0.100:30534,进入 Dashboard 登录界面
-9. 创建服务用户、集群角色绑定
-10.获取令牌 token
-11. 使用 token 认证进行登录复制 token 值,在 Dashboard 登录界面的“输入 token”文本框中粘贴 token 值后,单击“登录”按钮
粘贴输入 token 值
在 Dashboard 登录界面粘贴 token 值后,单击“登录”按钮,进入 Kubernetes 主界面
这是K8S平台搭建成功,
接下来我们部署个nginx看看
8.部署 nginx 服务验证集群
(1)部署 nginx 服务
(2)从任一节点访问 nginx 服务
打开浏览器看看
或者在在linux主机上输入curl http://172.22.29.100:31755 curl http://172.22.29.101:31755 http://172.22.29.102:31755看看
好了,k8s平台就搭建好了,能看到这,我就很欣慰了搭建过程有点长。恭喜你!!!