Kubernetes
Kubernetes是一个开源平台,具有可移植性和可扩展性,用于管理容器化的工作负载和服务,简化了声明式配置和自动化。
集群(Cluster)
集群指容器运行所需要的云资源组合,关联了若干服务器节点、负载均衡、专有网络等云资源。
节点(Node)
每一个节点对应一台服务器,用于部署和管理容器。节点上运行着Agent代理程序(kubelet),用于管理节点上运行的容器实例。集群中的节点数量可以伸缩。
节点池(NodePool)
节点池是集群中全都具有相同配置的一组节点,节点池可以包含一个或多个节点。
管理节点(Master Node)
管理节点是Kubernetes集群的管理者,运行着的服务包括kube-apiserver、kube-scheduler、kube-controller-manager、etcd组件,和容器网络相关的组件。
工作节点(Worker Node)
工作节点是Kubernetes集群中承担工作负载的节点,可以是虚拟机也可以是物理机。工作节点承担实际的Pod调度以及与管理节点的通信等。一个工作节点上的服务包括Docker运行时环境、kubelet、Kube-Proxy以及其它一些可选的组件。
专有网络VPC
虚拟私有云是通过逻辑方式进行网络隔离,提供安全、隔离的网络环境。您可以在VPC中定义与传统网络无差别的虚拟网络,同时提供弹性IP、安全组等高级网络服务。
安全组
安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。安全组是一个逻辑上的分组,由同一地域内具有相同安全保护需求并相互信任的实例组成。
容器组(Pod)
Pod是Kubernetes部署应用或服务的最小的基本单位。一个Pod封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。
容器(Container)
一个通过 Docker 镜像创建的运行实例,一个节点可运行多个容器。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。
工作负载(Workload)
工作负载是在Kubernetes上运行的应用程序。工作负载包括以下几种类型:
类型 | 描述 |
无状态工作负载(Deployment) | 即Kubernetes中的“Deployment”,无状态工作负载支持弹性伸缩与滚动升级,适用于实例完全独立、功能相同的场景,如:Nginx、Wordpress等。 |
有状态工作负载(StatefulSet) | 即Kubernetes中的“StatefulSet”,有状态工作负载支持实例有序部署和删除,支持持久化存储,适用于实例间存在互访的场景,如etcd、mysql-HA等。 |
守护进程集(DaemonSet) | 即Kubernetes中的“DaemonSet”,守护进程集确保全部(或者某些)节点都运行一个Pod实例,支持实例动态添加到新节点,适用于实例在每个节点上都需要运行的场景,如ceph、fluentd、Prometheus Node Exporter等。 |
任务(Job) | 即Kubernetes中的“Job”,普通任务是一次性运行的短任务,部署完成后即可执行。使用场景为在创建工作负载前,执行普通任务,将镜像上传至镜像仓库。 |
定时任务(CronJob) | 即Kubernetes中的“CronJob”,定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。 |
镜像(Image)
容器镜像是容器应用打包的标准格式,封装了应用程序及其所有软件依赖的二进制数据。在部署容器化应用时可以指定镜像,镜像可以来自于Docker Hub,容器镜像服务,或者用户的私有镜像仓库。
镜像仓库(Image Registry)
容器镜像仓库是一种存储库,用于存储Kubernetes和基于容器应用开发的容器镜像。
命名空间(Namespace)
命名空间为Kubernetes集群提供虚拟的隔离作用。Kubernetes集群初始有3个命名空间,分别是默认命名空间default、系统命名空间kube-system和kube-public,除此以外,管理员可以创建新的命名空间以满足需求。
服务(Service)
Service是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法,每一个服务后面都有很多对应的容器来提供支持,通过Kube-Proxy的ports和服务selector决定服务请求传递给后端的容器,对外表现为一个单一访问接口。
路由(Ingress)
Ingress是为进入集群的请求提供路由规则的集合,可以给service提供集群外部访问的URL、负载均衡、SSL终止、HTTP路由等。
配置项(ConfigMap)
ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。ConfigMap跟Secret很类似,但它可以更方便地处理不包含敏感信息的字符串。
保密字典(Secret)
保密字典用于存储在Kubernetes集群中使用一些敏感的配置,例如密码、证书等信息。
存储卷 PV(PersistentVolume )
表示具体类型的存储类型的卷。作用是将存储商的相关定义都保存到PV中。
存储声明 PVC(PersistentVolumeClaim)
PVC是Kubernetes中一种抽象的存储卷类型,旨在将底层的存储细节隐藏起来。只需要简单的定义就可以使用底层存储。
存储类 SC(StorageClass)
定义了创建PV的模板。当PVC没法匹配到相应的PV的时候,会通过SC的模板,创建一个PV,并且通过SC定义,触发关联的Provisioner执行创建底层存储的动作,从而实现动态创建PV。
弹性伸缩(HPA)
Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能。Kubernetes集群可以通过Replication Controller的scale机制完成服务的扩容或缩容,实现具有伸缩性的服务。
标签(Label)
Labels的实质是附着在资源对象上的一系列Key/Value键值对,用于指定对用户有意义的对象的属性,标签对内核系统是没有直接意义的。标签可以在创建一个对象的时候直接赋予,也可以在后期随时修改,每一个对象可以拥有多个标签,但Key值必须唯一。
污点(Taints)
污点和节点亲和性相反,它使节点能够排斥一类特定的Pod。
容忍(Tolerations)
应用于Pod上,允许(但并不要求)Pod调度到带有与之匹配的污点的节点上。
节点亲和性(nodeAffinity)
节点亲和性指通过Worker节点的Label标签控制Pod部署在特定的节点上。
应用亲和性(podAffinity)
指定工作负载部署在相同节点。通过应用亲和性调度,将其部署到同一节点中,容器间通信就近路由,减少网络消耗。
应用反亲和性(podAntiAffinity)
指定工作负载部署在不同节点。同个工作负载的多个实例反亲和部署,减少宕机影响;互相干扰的应用反亲和部署,避免干扰,以提高服务本身的稳定性。