原地址:【k8s】1、介绍_hancoder的博客-CSDN博客
k8s本质上是一组服务器集群。
实现功能:
1.弹性伸缩:可以根据需要自动的扩展或者减少容器
2.负载均衡:如果一个服务起了多个容器,可以自动的进行负载均衡
3.服务发现:可以自动发现服务所依赖的其他服务
4.版本回退:发现新版本有问题,可以回退到之前的版本
5.自我修复:如果一个容器崩溃,可以秒启动另一个容器
6.存储编排:根据容器自身需要自动创建存储卷
k8s是主从结构,master节点是集群的控制平面,负责管理集群,node节点是集群的数据平面,负责为容器提供运行环境。
master分为 ApiServer 、Scheduler、controllerManager、etcd
node分为kubelet、kubeProxy、docker
ApiServer是所有流量的入口,负责用户输入的命令,提供认证、授权、API注册、发现等
Scheduler负责资源的调度,按照相应的调度策略,将pod调度到相应的node上
controllerManager负责集群状态的维护,包括程序的部署安排、故障检测、自动扩展、滚动更新等
etcd是存储数据
kubelet负责管理容器生命周期,通过控制docker来创建更新销毁容器
kubeproxy负责集群内部服务的调度
docker负责操作容器
部署nginx的流程:
kubernetes启动之后,master和node的信息都会存储在etcd中,一旦nginx发送安装请求,master的apiserver会调用scheduler确定将nginx安装到哪个node上,scheduler是通过去etcd上查询node信息并通过一定的算法来确定node的安装位置,并通知apiserver。
apiserver再调用Controllermanager去调度node节点安装nginx。
kubelet接收到指令之后,会通知docker,由docker来创建一个pod来存放nginx的容器镜像。如果外部需要访问nginx就要通过kubeproxy对pod产生访问的代理。
名词解释
namespace:命名空间,用来隔离pod;
pod:k8s管理的最小单位,用来封装容器,一个pod可能会有多个容器;
deployment:一种pod控制器,用来操作pod,当pod被删除,deployment不删除时,pod会自动启动;
label:标签
service:作为pod的对外接口,(pod的ip会变化),由一组相同提供服务的pod组成?
deployment和service通过labelselector(标签选择器来选择pod)