什么是K8S
K8S(kubernetes)简称K8s,是基于容器实现的资源自动化管理平台,分布式系统支撑平台,Google开源的容器集群管理系统。
K8S能干什么
可以为容器化的应用提供部署运行,资源调度,服务发现,动态伸缩等功能
为什么要用K8S
能够节约约30%的开发成本,降低系统后期的运维难度和运维成本,人员精力会更集中到业务本身
管理员创建Deployment资源,通过kubectl向k8s集群发送一个请求,这个请求会发送到Api-server这个地方,会把相关数据存储到ETCD里(ETCD是分布式存储,将k8s所有管理的对象进行数据的存储)。比如Deployment想要控制他所关联的Pod副本数量时,就会需要一个控制数量的控制器来完成(即上图的Controller部分),这个控制器可以监控Pod中的数量(他也是通过Api-Server来得到集群中Pod的数量),那么如何选择适合的Pod所在的那一台机器(Node)的呢,这时候Scheduler就是负责去调度的–即它会自动帮我们选择拿一台机器适合运行管理员规定的Pod。
Node会有很多台,可以理解为执行器,Node里面兴许会有很多Pod,Pod里面兴许会有很多Container(容器),Node上也会有很多的模块,主要是维护Node的功能保持正常(比如Pod生成,关闭,网络构建,存储相关等),Pod生命周期的生成,销毁都是由Kubelet组件来负责完成。Kubelet在每个Node上都会有,他会保持与Api-Server的通信(接收Pod生成还是销毁的命令)。Kube-proxy是负责Pod网络管理的组件(通过网络规则对流量进行转发处理),举个例子:网络上某个用户的访问流量经过LB(LoadBalance)找到了适合他的Node节点,接下来IPTables或者IPVS会寻找对应的网络规则找到适合服务用户请求流量的Pod。Storage Plugin是存储插件(比如使用NAS,HADOOP),方便Pod去存储的插件。Network Plugin是网络插件,通过插件模式方便Pod使用合适的网络模式。
Master可以部署成多副本高可用的模式。
什么是Pod
最简单的说法就是将多个容器打包起来一起运行,这个整体就是 Pod。
pod:是K8S的最小调度单元,pod提供了容器的运行环境,定义了容器执行的模式。
什么是Volume
称为存储持久化是Pod可访问的文件或目录。
支持多种方式(ConfigMap、Secret、Downward、Projected Volume等)
什么是Deployment
用来管理Pod部署的副本的控制器(比如对Pod发布的停止,后续Pod版本的滚动更新和回退)
原理大致:利用ReplicaSet对间接管理Pod
什么是Service
主要提供一个服务,把Pod中的应用变成服务,对外提供服务
什么是Namespace
集群内资源隔离,(比如集群内有很多用户,管理员想不同用户之间不干扰彼此)就考虑用这个机制。
什么是Yaml文件
专门用来写k8s集群配置的文件