如何使用三台虚拟机搭建一个kubernetes集群?

163 阅读3分钟

数新网络官网链接:www.datacyber.com,快来联系我们吧!

本次搭建采用kubeadm工具,创建一主多从(单Master)Kubernetes集群。在集群中,有一台Master节点负责控制平面,多台Node节点负责运行容器。

Kubernetes是一个开源的容器编排平台,可以帮助简化容器化应用程序的部署、扩展和管理。在Kubernetes集群搭建过程中,有多种部署方式可选,包括kubeadm、Minikube和二进制包。本次选择使用kubeadm,因为它是快速搭建Kubernetes集群的常用工具。

M角色IP地址环境
Master192.168.85.4Centos 7.9
Node01192.168.85.5Centos 7.9
Node02192.168.85.6Centos 7.9

 

流程描述:

1)准备3台机器,要求网络互通,同时可联网。

2)关闭防火墙、selinux、swap分区等,这些是可能会导致k8s集群出问题的地方,需要提前配置好。

3)安装Docker容器化环境,同时安装核心组件:kubeadm、kubelet、kubectl等。

4)下载k8s所需镜像,创建一个Master节点,将Node节点加入到当前集群。

5)在k8s集群安装相关服务进行验证,登录k8s的WEB的用户界面dashboard。

 

集群环境配置:

1.修改主机名   

image.gif 2.修改hosts文件 image.gif

ps:在node1,node2也需同样配置

3.关闭防火墙和SELinux

image.gif ps:三台机器都执行

4.关闭swap分区

转存失败,建议直接上传图片文件 

image.gif ps:三台机器都执行,注释掉包含swap这一行。

问题:k8s集群为什么要关闭swap? Kubernetes 云原生的实现目的是将运行实例紧密包装到尽可能接近 100%,所有的部署、运行环境应该与 CPU 以及内存限定在一个可控的空间内。所以如果调度程序发送一个 Pod 到某一台节点机器,它不应该使用 Swap。如果使用swap,则其实node的pod使用内存总和可能超过了node的内存,这样其实就达不到资源的严格限制和管理的目的。

5.修改网卡配置

image.gif 6.免密登录

image.gif ps:三台机器都执行,目的是方便节点间直接连接。测试如下:  

image.gif 7. 安装k8s和docker

image.gif 修改docker配置文件

image.gif Ps:三台机器都执行,因k8s组件高版本多次安装失败,遂采用低版本安装。

8. 拉取k8s集群需要的镜像版本

image.gif 拉取完成后执行改变coredns的标记

image.gif Ps:三台机器都执行

9.初始化master节点

image.gif Ps:只在master节点执行

问题:

初始化成功后会出现一下内容

image.gif

根据提示信息操作

  image.gif

10 .node配置

image.gif

问题:执行后加入失败,查看node状态发现是NotReady,查看集群Pod状态,在查看节点日志发现缺少网络插件。

  image.gif

所以在master上安装一个插件

image.gif 再次查看node状态已经Ready,节点也可以加入master.

转存失败,建议直接上传图片文件 

11. 拉取Nginx镜像进行配置

image.gif

查看pod和服务

image.gif

查看映射的随机端口

  image.gif

测试Nginx服务

image.gif

12.安装k8s-dashboard

1. 创建一个nodePort类型的kubernetes-dashboard。进入/etc/kubernetes 目录下创建配置文件dashboard-svc.yaml:

image.gif

2. 创建kubernetes-dashboard的 Service服务:

image.gif

3. 此时再次查看namespace,已经有nodePort类型的kubernetes-dashboard,注意443:31487,即外部访问端口为31487。

image.gif 4. .获取 token,先查找token文件

image.gif

5. 查看外部访问端口

image.gif

6. 访问,如https://192.168.85.4:31487

image.gif

image.gif

最后,记得做一下虚拟机的快照,方便关机后还原!

image.gif