一切福田,不離方寸,從心而覓,感無不通。

centos7.9部署k8s的几种方式

目录

一、常见的k8s部署方式

1、使用kubeadm工具部署

kubeadm 是 Kubernetes 官方推荐的简化部署工具,能够快速初始化 Master 节点并加入 Worker 节点,自动化了很多设置过程。它还支持集群的升级和维护操作。这种方式相比手动部署更简便,但需要满足一定的硬件和软件环境要求。

2、基于二进制文件的部署方式

这种方式需要手动下载和安装 k8s 组件,包括 kube-apiserverkube-controller-managerkube-schedulerkubeletkube-proxy 等组件,并手动配置参数和启动命令。适合需要自定义配置和精细控制的场景,但也需要花费更多的时间和精力进行维护和升级。

3、云服务提供商的托管 Kubernetes 服务

众多云服务提供商如 Amazon EKSMicrosoft AKSGoogle GKE 等提供了托管 Kubernetes 服务。通过这些服务,用户可以快速创建和管理 Kubernetes 集群,无需关心底层基础设施的维护,同时还能享受到云平台的自动扩展、监控和安全服务等高级功能。

4、使用容器镜像部署或自动化部署工具

包括但不限于使用容器镜像部署 Kubernetes 组件,或是利用自动化部署工具如 AnsibleTerraformKubesprayRancher 等。这些方法通过预配置的模板或剧本自动化集群的安装和配置过程,适用于追求部署效率和标准化的场景。例如,Kubespray 是一个使用 Ansible 来部署 Kubernetes 集群的工具,支持多种云平台和本地环境。

本文将从使用kubeadm工具部署、二进制文件部署、容器镜像部署三种方式部署k8s

二、使用kubeadm工具部署

1、硬件准备(虚拟主机)

角色 主机名 ip地址
master k8s-master 192.168.112.10
node k8s-node1 192.168.112.20
node k8s-node2 192.168.112.30

CentOS Linux release 7.9.2009 (Core)

至少2核CPU、3GB以上内存

使用命令hostnamectl set-hostname临时修改主机名

2、环境准备

2.1、所有机器关闭防火墙

2.2、所有机器关闭selinux

2.3、所有机器关闭swap

2.4、所有机器上添加主机名与ip的对应关系

2.5、将所有主机上桥接的ipv4流量传递到iptables链

2.6、时间同步

3、为所有节点安装docker

3.1、配置镜像下载加速器

4、集群部署

4.1、为所有节点修改从库,安装kubeadm、kubelet、kubectl

4.2、部署master节点

记得保存好这段命令是用于将一个工作节点(worker node)加入到已存在的 Kubernetes 集群中的过程。

4.3.1、遇到报错

4.3.2、解决办法

4.4、按照指令执行

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

4.5、查看master节点kubelet.service状态

4.6、查看节点状态

由于网络插件还没有部署,还没有准备就绪 NotReady

5、安装网络插件

Flannel是K8s中的一个网络插件,它负责实现容器在集群中的网络通信。

官方文档

6、添加node节点

6.1、k8s集群中Node节点报错"The connection to the server localhost:8080 was refused – did you specify the right host or port?"

6.2、解决方案

6.2.1、将Master节点上的"/etc/kubernetes/admin.conf"拷贝到Node上"/etc/kubernetes/"

Master节点上操作

6.2.2、在从节点上设置环境变量

Node节点操作

至此kubeadm工具部署k8s集群完成

三、基于二进制文件部署

1、硬件准备(虚拟机)

角色 主机名 ip地址 组件
master k8s-master1 192.168.112.10 kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,docker,etcd
node k8s-node1 192.168.112.20 kubelet,kube-proxy,docker,etcd
node k8s-node2 192.168.112.30 kubelet,kube-proxy,docker,etcd

CentOS Linux release 7.9.2009 (Core)

至少2核CPU、3GB以上内存

使用命令hostnamectl set-hostname临时修改主机名

2、环境准备

2.1、所有机器关闭防火墙

2.2、所有机器关闭selinux

2.3、所有机器关闭swap

2.4、所有机器上添加主机名与ip的对应关系

2.5、将所有主机上桥接的ipv4流量传递到iptables链

2.6、时间同步

3、部署etcd集群

3.1、etcd简介

etcd是CoreOS开发的一个分布式Key-Value存储系统,内部采用 raft 协议作为一致性算法,用于可靠、快速地保存关键数据,并提供访问、共享配置和服务发现。通过分布式锁、leader选举和写屏障(write barriers),来实现可靠的分布式协作。Kubernetes使用ETCD存储所有集群数据,包括Pods、服务、服务发现等。

etcd 服务作为 Kubernetes 集群的主数据库,在安装 Kubernetes 各服务之前需要首先安装和启动。

3.2、对应节点规划

节点名称 ip地址
etcd-1 192.168.112.10
etcd-2 192.168.112.20
etcd-3 192.168.112.30

etcd可以与k8s节点复用,也可以部署在k8s机器外

只要apiserver可以连接到即可

3.3、cfssl证书生成工具准备

3.3.1、创建存放cfssl工具的目录

cfssl 是一个开源的证书管理工具,使用 json 文件生成证书。

master节点执行

3.3.2、下载cfssl工具

3.3.3、给cfssl相关工具赋可执行权限,并复制到对应目录下

3.4、自签证书颁发机构(CA)

3.4.1、创建工作目录

master节点执行

3.4.2、生成自签证书CA配置

1、ca-config.json # 可以定义多个profiles,分别指定不同的过期时间、使用场景等参数,后续在签名证书时使用某个profile参数配置服务证书的有效期。

2、signing # 表示该证书可用于签名其它证书,生成的ca.pem证书中CA=TRUE。

3、server auth # 表示client可以用该CA对server提供的证书进行验证。

4、client auth # 表示 server 可以用该CA对client提供的证书进行验证。

3.4.3、自签CA证书签名请求文件

3.4.4、生成自签CA证书和私钥

3.4.5、验证CA证书ca.pem

ca证书的有效期是5年

3.4.6、验证有效期

验证网站

3.5、使用自签CA签发etcd https证书

3.5.1、创建证书申请文件

3.5.2、生成证书

3.5.3、查看当前生成的一些相关证书

3.6、下载etcd二进制文件

3.7、部署etcd集群

master节点操作

3.7.1、创建工作目录并解压二进制文件

3.7.2、创建etcd配置文件

ETCD_NAME:节点名称,集群中唯一

ETCD_DATA_DIR:数据目录

ETCD_LISTEN_PEER_URLS:集群通讯监听地址

ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址

ETCD_INITIAL_CLUSTER:集群节点地址

ETCD_INITIALCLUSTER_TOKEN:集群Token

ETCD_INITIALCLUSTER_STATE:加入集群的状态,new是新集群,existing表示加入已有集群

3.8、systemd管理etcd

3.9、三个机器做ssh免密

3.10、将master节点生成的文件拷贝到node1和node2上

3.10.1、查看master节点的树形结构

3.10.2、查看etcd服务是否存在

以上两个命令在所有节点都操作验证一下

3.11、修改node1和node2节点的etcd.conf配置文件

node1

node2

3.12、启动etcd并设置开机自启

etcd需要多个节点同时启动,单个启动会卡住。下面每个命令在三台服务器上同时执行。

3.13、检查etcd集群状态

执行etcdctl cluster-health,验证etcd是否正确启动

master节点执行

3.13.1、报错解决

主要还是查看etcd日志,针对性排查

4、所有节点安装Docker

4.1、下载并解压二进制包

4.2、配置镜像加速

4.3、配置docker.service

4.4、启动docker并设置开机自启

5、部署master节点

5.1、生成kube-apiserver

5.1.1、自签证书(CA)

5.1.2、自签CA证书签名请求文件

5.1.3、生成证书

5.1.4、查看生成的证书文件

5.1.5、创建证书申请文件

5.1.6、生成证书

5.1.7、查看证书生成的文件

5.2、下载并解压二进制包

master节点操作

5.3、复制kube-apiserver、kube-controller-manager 和 kube-scheduler 到 /opt/kubernetes/bin 目录

5.4、检查复制情况

5.5、部署kube-apiserver

5.5.1、创建配置文件

master节点操作

5.5.2、拷贝刚才生成的证书

5.2.3、创建配置文件的token文件

token也可自行生成替换:

5.2.4、systemd管理apiserver

5.2.5、启动kube-apiserver并设置开机启动

6、部署kube-controller-manager

6.1、创建配置文件

master节点操作

6.2、生成kubeconfig文件

6.3、创建证书请求文件

6.4、生成kube-controller-manager证书

6.5、查看生成的证书文件

6.6、生成kubeconfig文件

6.7、systemd管理controller-manager

6.7.1、查看kube-controller-manager.service服务是否添加成功

6.8、启动kube-controller-manager并设置开机自启

6.8.1、报错invalid configuration: no configuration has been provided, try setting KUBERNETES_MASTER environment variable

6.8.2、解决方案

暂时写到这,有空再解决

from:https://www.cnblogs.com/misakivv/p/18246548#tid-M46Fzk
参考:https://blog.csdn.net/weixin_52315708/article/details/140894347