本次搭建采用kubeadm工具,创建一主多从(单Master)Kubernetes集群。在集群中,有一台Master节点负责控制平面,多台Node节点负责运行容器。
Kubernetes是一个开源的容器编排平台,可以帮助简化容器化应用程序的部署、扩展和管理。在Kubernetes集群搭建过程中,有多种部署方式可选,包括kubeadm、Minikube和二进制包。本次选择使用kubeadm,因为它是快速搭建Kubernetes集群的常用工具。
M角色 IP地址 环境
Master 192.168.85.4 Centos 7.9
Node01 192.168.85.5 Centos 7.9
Node02 192.168.85.6 Centos 7.9
M角色 | IP地址 | 环境 |
---|---|---|
Master | 192.168.85.4 | Centos 7.9 |
Node01 | 192.168.85.5 | Centos 7.9 |
Node02 | 192.168.85.6 | Centos 7.9 |
流程描述:
1)准备3台机器,要求网络互通,同时可联网。
2)关闭防火墙、selinux、swap分区等,这些是可能会导致k8s集群出问题的地方,需要提前配置好。
3)安装Docker容器化环境,同时安装核心组件:kubeadm、kubelet、kubectl等。
4)下载k8s所需镜像,创建一个Master节点,将Node节点加入到当前集群。
5)在k8s集群安装相关服务进行验证,登录k8s的WEB的用户界面dashboard。
集群环境配置:
1.修改主机名
2.修改hosts文件
ps:在node1,node2也需同样配置
3.关闭防火墙和SELinux
ps:三台机器都执行
4.关闭swap分区
ps:三台机器都执行,注释掉包含swap这一行。
问题:k8s集群为什么要关闭swap? Kubernetes 云原生的实现目的是将运行实例紧密包装到尽可能接近 100%,所有的部署、运行环境应该与 CPU 以及内存限定在一个可控的空间内。所以如果调度程序发送一个 Pod 到某一台节点机器,它不应该使用 Swap。如果使用swap,则其实node的pod使用内存总和可能超过了node的内存,这样其实就达不到资源的严格限制和管理的目的。
5.修改网卡配置
6.免密登录
ps:三台机器都执行,目的是方便节点间直接连接。测试如下:
7.安装k8s和docker
修改docker配置文件
Ps:三台机器都执行,因k8s组件高版本多次安装失败,遂采用低版本安装。
8.拉取k8s集群需要的镜像版本
拉取完成后执行改变coredns的标记
Ps:三台机器都执行
9.初始化master节点
Ps:只在master节点执行
问题:
初始化成功后会出现一下内容
根据提示信息操作
10 .node配置
问题:执行后加入失败,查看node状态发现是NotReady,查看集群Pod状态,在查看节点日志发现缺少网络插件。
所以在master上安装一个插件
image.gif
再次查看node状态已经Ready,节点也可以加入master.
11.拉取Nginx镜像进行配置
查看pod和服务
查看映射的随机端口
测试Nginx服务
12安装k8s-dashboard
1.创建一个nodePort类型的kubernetes-dashboard。进入/etc/kubernetes 目录下创建配置文件dashboard-svc.yaml:
2.创建kubernetes-dashboard的 Service服务:
3.此时再次查看namespace,已经有nodePort类型的kubernetes-dashboard,注意443:31487,即外部访问端口为31487。
4..获取 token,先查找token文件
5.查看外部访问端口
6.访问,如https://192.168.85.4:31487
最后,记得做一下虚拟机的快照,方便关机后还原!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。