kubernetes简介
参考资料:https://yq.aliyun.com/articles/639830
kubernetes正确的发音是[kubə’netis],读音:库伯耐踢死,官方原文是:K8s is an abbreviation derived by replacing the 8 letters “ubernete” with 8kubernetes缩写为k8s,意思就是k后面跳过8个字母后到s,就变成了k8s,Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。
k8s目标
Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的workflows 和更高级的自动化任务。
k8s功能
Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。 Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。简单的说Kubernetes可以:自动化容器的部署和复制随时扩展或收缩容器规模将容器组织成组,并且提供容器间的负载均衡很容易地升级应用程序容器的新版本提供容器弹性,如果容器失效就替换它,等等...实际上,使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群
k8s核心组件
Kubernetes主要由以下几个核心组件组成:etcd保存了整个集群的状态;apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
来源于网络:https://www.processon.com/view/5a7d478be4b024b99bf76bfa
k8s Pod简单介绍
Pod概念Pod在K8S系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、调度、管理的最小的部署单元。比如一个或一组容器。Pod运行在一个我们称之为节点Node的环境中,可以是私/公有云的虚拟机或者物理机上,通常在一个节点上运行几百个Pod;其次,每个Pod里运行着一个特殊的被称之为Pause的容器,其他容器则为业务容器,这些业务容器共享Pause容器的网络栈和Volume挂载卷,因此他们之间的通讯和数据交换更为高效。在设计时我们可以充分利用这一特征将一组密切相关的服务进程放入同一个Pod中。特点:1.实现同一个pod中封装的几个需要紧密耦合互相协作的容器进行资源共享如:网络和存储 2.一个pod中可以运行一个容器或多个容器,k8s管理的是Pod而不是直接管理容器。 3.同一个pod中的容器会自动分配到同一个node节点上。同一个pod里面的容器,共享的资源及环境总是被同时调用。 4.pod不会自愈,有问题会被干掉在起一个。pod下容器重启,不代表pod会重启。
Service和Pod的关联
容器提供了强大的隔离功能,所以有必要把为Service提供服务的这组进程放入到容器中隔离。(如:利用docker容器运行Nginx服)Kubernetes设计了Pod对象,将每个服务进程包装到相应的Pod中,使其成为Pod中运行的一个容器Container。为了建立Service 和Pod间的关联关系,k8s首先给每个Pod填上了一个标签Label,给运行MySQL的Pod贴上name=mysql标签,给运行mongodb的Pod贴上name=mongodb标签,然后给相应的服务定义标签选择器Label Selector,(每一种服务由1组或多组Pod组成)比如MySQL Service的标签选择器的选择条件为name=mysql,意为该Service 要作用于所有包含name=mysql Label的Pod上。这样就巧妙的解决了Service和Pod关联问题
Kubernetes RC介绍
Replication Controller简写RC。作用:确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行定义一个RC文件包括以下3个关键点(1) 目标Pod的定义(2) 目标Pod需要运行的副本数量(Replicas)(3) 要监控的目标Pod的标签(Label)在创建好RC系统自动创建好Pod后,kubernetes会通过RC中定义的Label筛选出对应的Pod实力并实时监控其状态和数量,如果实例数量少于定义的副本数量Replicas,则会用RC中定义的Pod模板来创建一个新的Pod,然后将此Pod调度到合适的Node上运行,直到Pod实例的数量达到预定目标。这个过程完全是自动化的,无需人干预。只要修改RC中的副本数量即可。
Kubernetes Master介绍
Kubernetes 里的Master指的是集群控制节点,每个Kubernetes集群里需要有一个Master节点来负责整个集群的管理和控制,基本上Kubernetes所有的控制命令都发给它,它负责具体的执行过程,我们后面执行的所有命令基本上都是在Master节点上运行的。如果Master宕机或不可用,那么集群内容器的管理都将失效Master节点上运行着以下一组关键进程:Kubernetes API Server (kube-apiserver):提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程Kubernetes Controller Manager (kube-controller-manager):Kubernetes里所有的资源对象的自动化控制中心Kubernetes Scheduler (kube-scheduler):负责资源调度(Pod调度)的进程;另外在Master节点上还需要启动一个etcd服务,因为Kubernetes里的所有资源对象的数据全部是保存在etcd中
Kubernetes Node介绍
除了Master,集群中其他机器被成为Node节点,Node是物理或者虚拟机器,作为Kubernetes worker,通常称为Minion每个Node都会被Master分配一些工作负载Docker容器,当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上去。每个Node节点上都运行着以下关键进程。kubelet:负责Pod对应容器的创建、停止等任务,同时与Master节点密切协作,实现集群管理的基本功能kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件。Docker Engine(Docker):Docker引擎,负责本机的容器创建和管理工作。Nodde节点(上图橘色方框)。每个节点都运行如下Kubernetes
Kubernetes 中Master与Node工作内容
在集群管理方面,Kubernets将集群中的机器划分为一个Master节点和一群工作节点(Node),其中,在Master节点上运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了整个集群的资源管理、Pod调度、弹性收缩、安全控制、系统监控和纠错等管理功能,并且都是全自动完成的。Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod。Node上运行着Kubernetes的kubelet、kube-proxy服务进程,这些服务进程负责Pod创建、启动、监控、重启、销毁、以及实现软件模式的负载均衡
菜鸟哈哈翻译器:
kubernetes 音标:[kubə’netis],读:库伯耐踢死 scheduler 音标:['ʃedju:lə(r)],读:斯盖(朱哦)勒儿,译:调度程序Controller 音标:[kənˈtrəʊlə(r)],读: 坑戳乐儿,译:管理者,控制器Container 音标:[kənˈteɪnə(r)],读:肯[特诶(连读)]呢(发四声),译:容器engine 音标:[ˈendʒɪn],读: 安~贞,译: 引擎cluster 音标:['klʌstə],读:克拉斯特儿,译:集群pause 音标:[pɔ:z],译:延长,暂停Replication 译: 复制selector 译: 选择器