k8s的安装部署与节点的添加和删除

k8s简介

Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

通过Kubernetes你可以:

快速部署应用
快速扩展应用
无缝对接新的应用功能
节省资源,优化硬件资源的使用

k8s的特点

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化, 插件化, 可挂载, 可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

k8s总体架构

K8s集群由两节点组成:Master和Node。在Master上运行etcd,Api Server,Controller Manager和Scheduler四个组件。后三个组件构成了K8s的总控中心,负责对集群中所有资源进行管控和调度.在每个node上运行kubectl,proxy和docker daemon三个组件,负责对节点上的Pod的生命周期进行管理,以及实现服务代理的功能。另外所有节点上都可以运行kubectl命令行工具。

API Server作为集群的核心,负责集群各功能模块之间的通信。集群内的功能模块通过Api Server将信息存入到etcd,其他模块通过Api Server读取这些信息,从而实现模块之间的信息交互。Node节点上的Kubelet每隔一个时间周期,通过Api Server报告自身状态,Api Server接收到这些信息后,将节点信息保存到etcd中。Controller Manager中 的node controller通过Api server定期读取这些节点状态信息,并做响应处理。Scheduler监听到某个Pod创建的信息后,检索所有符合该pod要求的节点列表,并将pod绑定到节点列表中最符合要求的节点上。如果scheduler监听到某个Pod被删除,则调用api server删除该Pod资源对象。kubelet监听pod信息,如果监听到pod对象被删除,则删除本节点上的相应的pod实例,如果监听到修改Pod信息,则会相应地修改本节点的Pod实例。

k8s的组成

Kubernetes主要由以下几个核心组件组成:

etcd保存了整个集群的状态;
apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
kubelet负责本Node节点上的Pod的创建、修改、监控、删除等生命周期管理,同时Kubelet定时“上报”本Node的状态信息到Api Server里;
Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;

环境规划

首先呢,我们需要进行机器的准备,准备三台虚拟机进行操作,一台为master,两台为node节点

进行初始化环境(master与node同时进行)
1)关闭防火墙
在这里插入图片描述

2)关闭selinux
在这里插入图片描述

3)如需要关闭swap,(由于服务器本来配置就低,这里就不关闭swap,在后面部署过程中忽略swap报错即可)
在这里插入图片描述

4)时间同步
在这里插入图片描述

5)host绑定
k8s的安装部署与节点的添加和删除_第1张图片

docker安装(master节点和所有node节点都需要执行)

1)配置docker的yum仓库(这里使用阿里云仓库)
在这里插入图片描述

2)安装docker
在这里插入图片描述

3)修改docker cgroup driver为systemd
根据文档CRI installation中的内容,对于使用systemd作为init system的Linux的发行版,使用systemd作为docker的cgroup driver可以确保服务器节点在资源紧张的情况更加稳定,因此这里修改各个节点上docker的cgroup driver为systemd。
k8s的安装部署与节点的添加和删除_第2张图片

4)启动docker

k8s的安装部署与节点的添加和删除_第3张图片

安装kubeadm(master节点和所有node节点都需要执行)

1)配置kubenetes的yum仓库(这里使用阿里云仓库)
k8s的安装部署与节点的添加和删除_第4张图片

2)安装kubelat、kubectl、kubeadm
k8s的安装部署与节点的添加和删除_第5张图片

3)将kubelet加入开机启动,这里刚安装完成不能直接启动。(因为目前还没有集群还没有建立)
在这里插入图片描述

初始化Master(只在master节点执行)

通过kubeadm --help帮助手册,可以看到可以通过kubeadm init初始化一个master节点,然后再通过kubeadm join将一个node节点加入到集群中。
1)配置忽略swap报错在这里插入图片描述

2)初始化master
k8s的安装部署与节点的添加和删除_第6张图片

3)按照上面初始化成功提示创建配置文件
k8s的安装部署与节点的添加和删除_第7张图片

4)添加flannel网络组件

k8s的安装部署与节点的添加和删除_第8张图片

加入Node节点(分别在node1和node2节点中执行)

1)配置忽略swap报错

k8s的安装部署与节点的添加和删除_第9张图片

2)加入node1节点
k8s的安装部署与节点的添加和删除_第10张图片

3)加入node2节点

k8s的安装部署与节点的添加和删除_第11张图片

检查集群状态

1)在master节点输入命令检查集群状态,返回如下结果则集群状态正常
k8s的安装部署与节点的添加和删除_第12张图片
重点查看STATUS内容为Ready时,则说明集群状态正常
2)查看集群客户端和服务端程序版本信息
k8s的安装部署与节点的添加和删除_第13张图片

3)查看集群信息
k8s的安装部署与节点的添加和删除_第14张图片

4)查看每个节点下载的镜像
在这里插入图片描述

节点删除

有时节点出现故障,需要删除节点,方法如下
1)在master节点上执行
在这里插入图片描述

2)在需要移除的节点上执行
在这里插入图片描述

希望以上的内容可以帮助到有需要的人,之后也会不断更新一些运维知识,尽请期待!!!

你可能感兴趣的:(运维,k8s,linux)