简介:
容器编排:自动化容器的部署,管理,扩展,联网。
k8s--容器编排工具;
架构:
master
apiserver:前端控制层,被设计为水平扩展的架构,通过部署更多实例承载更多服务
controller:用于查询和调度程序,通过策略数量保证有正确数量的容器集在运行。
controller manager:多个控制器功能的结合。
etcd:键值数据库,k8s的后端存储,用于存储配置数据,可以部署于master节点,也可自行部署。
scheduler:调度器,根据特定的调度算法和调度策略,将pod调度到合适的节点上去
node
kubelet:与控制平面通信的应用,用来保证pod的运行,接受master的指令,负责管理pod。
kube-proxy:网络代理和负载均衡器。负责处理集群内部或外部的网络通信,靠操作包里的流量过滤层或自身进行端口转发。同时可以在多个pod和service之间实现负载均衡。
container-runtime:
核心概念:
pod:最小工作单元,每个pod包含一个或者多个相关容器,被当作一个整体进行调度。
引入目的:pod内所有的容器使用相同的网络namespace和共享存储。pod内容器拥有相同IP地址和Port空间,容器间直接使用localhost通信。当挂载volume到pod,即可实现将volume挂载到pod中的每个容器。【网络存储共享,但cpu/内存不是。可以单独】
controller: 通过其实现工作负载的管理,横向扩展。分四类工作负载。
label:为资源分类,具体形式是key-value得标记对,可以在创建资源得时候设置。
namespace:对一组资源和对象的抽象整合。实现多租户划分。默认有四个default,kube-public,kube-system,kube-node-lease.
service:定义了一个pod逻辑集合和访问他们得策略。定义了外界访问一组特定pod的方式。service有自己的IP和端口,service为pod提供了负载均衡。
volume:用来端粒k8s存储,声明在pod中的容器可以访问的文件目录。可以被挂载在Pod中一个或多个容器的指定路径下,支持多种后端存储。
编排和管理
kubectl是k8s的命令行工具,用于管理集群,并进行容器化应用的安装部署。
支持以下对象的管理方式:
通过kubectl内置的驱动命令,语法:kubectl [command] [type] [name] [flags];
使用kubectl apply 创建指定目录中配置文件所定义的所有对象,文件是yaml或者json。
如果是yaml。内容分为四部分:
typeMeta:对象类型的元信息,声明对象使用哪个版本的API版本,哪个类型的对象;
objectMeta:对象的辕信息,包括对象名称,使用的标签等;
spec:对象的期望状态,比如对象使用什么镜像,有多少个副本;
status:对象的实际状态,只能在对象创建后看到,创建对象时无需指定。