企业级k8s集群部署

企业级k8s集群部署,第1张

二进制包

注:推荐用二进制包部署Kubernetes集群,虽手动部署麻烦,但可以学习很多工作原理利于后期维护。

环境

可以使用VMware虚拟机,宿主机必须8G内存以上

• 服务器可以访问外网,有从网上拉取镜像的需求

单Master服务器规划:( 注:部署时候根据具体环境进行IP地址调整即可 )



这里使用3台组建集群,可容忍1台机器故障,当然,你也可以使用5台组建集群

etcd1: 1921683110 etcd2: 1921683112 etcd3: 1921683113

cfssl是一个开源的证书管理工具,使用json文件生成证书,相比openssl更方便使用。

找任意一台服务器 *** 作,这里用Master节点

创建工作目录:

自签CA:

生成证书:

会生成capem和ca-keypem文件。

创建证书申请文件:

注:上述文件hosts字段中IP为所有etcd节点的集群内部通信IP,一个都不能少!为了方便后期扩容可以多写几个预留的IP。

生成证书:

会生成etcdpem和etcd-keypem文件。

>搭建Openstack之前原则上不需要对服务器本身做任何虚拟化,除非你是在虚拟机之上再搭建Openstack,个人建议计算节点和存储节点直接跑裸机,其它的控制服务比如api服务、scheduler服务等,如果不要求高性能,可以考虑放在虚拟机。我下面表述都假定不考虑对服务器做任何虚拟化的情况(某些服务可以考虑跑容器上)。

本文会以 最简单 最直接 最完整 的方式记录kubernetes(下面统称K8S)单master多工作节点(worker nodes)的集群步骤

首先要简单了解一下本文的3个核心概念:

内存建议至少4G

问:如何查看主机名?

答:执行命令hostname

问:如何修改主机名?

答:永久生效的做法:执行命令vi /etc/hostname,把第一行去掉(不能注释掉,要去掉),然后重新写上自定义的主机名(注意命名规范),保存并重启后生效;

临时生效的做法:执行以下命令

问:如何查看MAC地址?

答:执行命令ip link,然后看你的第一网卡

问:如何查看product_uuid?

答:执行命令sudo cat /sys/class/dmi/id/product_uuid

注意:30000-32767这个端口范围是我们创建服务的端口必须要设置的一个范围(如果设置范围以外的会有限制提示并创建失败),这是K8S规定的。

另外,如果你要直接关闭防火墙可以执行

⑥必须禁用Swap

Swap total大于0,说明Swap分区是开启的

问:如何关闭Swap?

答:编辑文件/etc/fstab,在swap行前面加上#号注释, 保存并重启服务器

再次查看分区状态,已生效

常见的容器引擎(Container runtime,简称runtime):

本文使用的容器引擎是Docker

安装完成后查看版本:

当出现可能跟Docker引擎相关的奇怪异常时可以尝试把Docker卸载干净并重新安装,但一定要注意镜像、容器、卷或配置文件这些是否需要备份。

下面记录卸载Docker引擎的步骤:

①卸载 Docker Engine、CLI 和 Containerd 包:

②主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷:

③配置文件如果有不合法的字符时会导致启动失败,我们需要将其删除然后重建

此时Docker引擎已卸载干净

官网用的是谷歌的yum源,因为国内是连不上的,所以这里替换成阿里提供的yum源

①安装

从安装信息中可以看到版本号是122

Installing:

kubeadm x86_64 1224-0 kubernetes 93 M

kubectl x86_64 1224-0 kubernetes 97 M

kubelet x86_64 1224-0 kubernetes 20 M

②启动



这就是一个驱动程序,注意cgroup和cgroupfs不要混淆了

引用官方的一段话

“由于 kubeadm 把 kubelet 视为一个系统服务来管理,所以对基于 kubeadm 的安装, 我们推荐使用 systemd 驱动,不推荐 cgroupfs 驱动。”

kubeadm默认是使用systemd 驱动,而我们的Docker默认驱动是cgroupfs(docker info可以查看),所以需要将Docker的驱动改成systemd

①编辑Docker配置文件

②重启Docker服务

再次docker info查看驱动信息已变成了systemd

工作节点(worker nodes)的最小配置就到这里了

①镜像源参数说明

默认情况下, kubeadm 会从 k8sgcrio 仓库拉取镜像,国内是拉不了的。官方文档明确表示允许你使用其他的 imageRepository 来代替 k8sgcrio。

--image-repository 你的镜像仓库地址

接下来我找了一些国内的镜像源,并简单做了下分析

综合上述统计,我选择阿里云的镜像源

②ip地址范围参数说明

--pod-network-cidr =19216800/16

注意:如果19216800/16已经在您的网络中使用,您必须选择一个不同的pod网络CIDR,在上面的命令中替换19216800/16。

集群初始化命令:

因为我用的是演示机器,所以这里把完整的执行信息都贴出来方便查阅,平时工作中一定要注意保护好敏感的信息(我的ip地址范围是自定义的便于下面的功能演示,另外初次init需要下载镜像文件,一般需要等几分钟)

如上所示,集群初始化成功,此时一定要注意看上面执行结果最后的那部分 *** 作提示,我已用标明了初始化成功后还需要执行的3个步骤

注意:如果init成功后发现参数需要调整,可以执行kubeadm reset,它的作用是尽最大努力恢复kubeadm init 或者 kubeadm join所做的更改。

To start using your cluster, you need to run the following as a regular user:

翻译:开始使用集群前,如果你是普通用户(非root),你需要执行以下的命令:

Alternatively, if you are the root user, you can run:

翻译:或者,如果你使用的是root,你可以执行以下命令:

(注意:export只是临时生效,意味着每次登录你都需要执行一次)

网络配置配的就是Pod的网络,我的网络插件选用calico

cidr就是ip地址范围,如果您使用 pod CIDR 19216800/16,请跳到下一步。

但本文中使用的pod CIDR是19210000/16,所以我需要取消对清单中的 CALICO_IPV4POOL_CIDR 变量的注释,并将其设置为与我选择的 pod CIDR 相同的值。(注意一定要注意好格式,注意对齐)

可根据需求自定义清单,一般不需要的就直接跳过这步

在所有的工作节点上执行join命令(复制之前初始化成功后返回的加入集群命令到所有的工作节点执行即可)

master上查看所有节点的状态

到这里集群已经创建完成

最后我再安装K8S的可视化界面kubernetes-dashboard,方便我们日常使用

①下载yaml文件

②修改yaml文件,新增type和nodePort,使服务能够被外部访问

③安装并查看运行情况

④新建用户

文件创建完成后保存并apply

⑤获取Token,用于界面登录

⑥登录dashboard

192168189128是我的master服务器ip,另外要注意必须使用>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13275921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-06
下一篇 2023-07-06

发表评论

登录后才能评论

评论列表(0条)

保存