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)关闭防火墙
k8s的安装部署与节点的添加和删除

2)关闭selinux
k8s的安装部署与节点的添加和删除

3)如需要关闭swap,(由于服务器本来配置就低,这里就不关闭swap,在后面部署过程中忽略swap报错即可)
k8s的安装部署与节点的添加和删除

4)时间同步
k8s的安装部署与节点的添加和删除

5)host绑定
k8s的安装部署与节点的添加和删除

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

1)配置docker的yum仓库(这里使用阿里云仓库)
k8s的安装部署与节点的添加和删除

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

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

4)启动docker

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

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

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

2)安装kubelat、kubectl、kubeadm
k8s的安装部署与节点的添加和删除

3)将kubelet加入开机启动,这里刚安装完成不能直接启动。(因为目前还没有集群还没有建立)
k8s的安装部署与节点的添加和删除

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

通过kubeadm --help帮助手册,可以看到可以通过kubeadm init初始化一个master节点,然后再通过kubeadm join将一个node节点加入到集群中。
1)配置忽略swap报错k8s的安装部署与节点的添加和删除

2)初始化master
k8s的安装部署与节点的添加和删除

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

4)添加flannel网络组件

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

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

1)配置忽略swap报错

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

2)加入node1节点
k8s的安装部署与节点的添加和删除

3)加入node2节点

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

检查集群状态

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

3)查看集群信息
k8s的安装部署与节点的添加和删除

4)查看每个节点下载的镜像
k8s的安装部署与节点的添加和删除

节点删除

有时节点出现故障,需要删除节点,方法如下
1)在master节点上执行
k8s的安装部署与节点的添加和删除

2)在需要移除的节点上执行
k8s的安装部署与节点的添加和删除

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