概念
Kubernetes又称K8s,是用8代替名字中间的8个字符"ubernete"而成的缩写。Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。
特点
服务发现和负载均衡
Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
存储编排
Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
自动部署和回滚
你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态 更改为期望状态。例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
自动完成装箱计算
Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。 当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
自我修复
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的 运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
密钥与配置管理
Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。
架构
Master节点
- APIServer
- Controller-Manager
- Scheduler
Node节点
- Kubelet
- Proxy
存储中心
- Etcd
组件
APIserver
k8s的中心,各个组件信息交互都要通过它,也是k8s管理集群的入口。
Controller-Manager
集群的状态管理器,保证Pod或其他资源达到期望值,也是需要和APIServer进行通信,在需要的时候创建、更新或删除它所管理的资源。
Scheduler
k8s 集群的调度器,选择工作pod节点,预选 > 优选。
Kubelet
负责监听节点和pod状态的,(监听状态发送 Kebu-APIserver 信息推送给 Etcd)
Proxy
负责Pod之间的通信和负载均衡,将指定的流量分发到后端正确的机器上。
Etcd
键值数据库,用于保存k8s集群信息,网络信息,网络信息。
专业名词
资源
由于k8s内部,使用‘资源’来定义每一种逻辑感念(功能)故每种’资源’,都应该有自己的‘名称’。资源有api版本,元数据,定义清单,状态等配置信息。名称通常定义在‘资源’的‘元数据’信息里面。
Pod
Pod是K8s里能够被运行的最小逻辑单元。1个Pod里面可以运行多个容器,他们共享UTS+NET+IPC命名空间。可以把Pod理解成豌豆荚,而同一个Pod内的每一个容器就是一颗颗豌豆。一个Pod里面运行多个容器,又叫边车(SideCar)模式.
Pod控制器
Pod控制器是pod启动的一种模板,用来保证k8s里面启动的Pod应始终按照人们的预期运行(副本数,生命周期,健康状态检查…)
Namespace
随着项目增多,人员增加,集群规模的扩大,需要一种能够以隔离k8s内各种“资源”的方法,这个就是名称空间(Namespace)。不同的名称空间(Namespace)可以理解为K8s内部的虚拟集群组。不同名称空间(Namespace)的“资源”名称可以相同,相同名称空间(Namespace)内的同种“资源”,”名称”不能相同。合理的使用K8s的名称空间,使得集群管理员能够更好的对交付到K8s里的服务进行分类管理和浏览
Lable
标签是k8s的管理方式,便于分类管理资源对象。一个标签可以对应多个资源,一个资源也可以有多个标签,他们是多对多的关系。一个资源拥有多个标签,可以实现不同维度的管理。
Lable选择器
给资源打上标签后,可以使用标签选择器过滤指定的标签。
Service
在K8S的世界里,虽然每个pod都会被分配一个单独的ip地址,但是这个IP地址会随着Pod的销毁而消失。Service就是用来珏姐这个问题的核心概念。一个Service可以看作一组提供相同服务的Pod的对外访问接口。Service作用于那些通过标签选择器来定义的
Ingress
Ingress是K8S集群里工作在OSI网络参考模型下,第七层的应用,对外暴露的接口。Service只进行L4流量调度,表现形式是IP+port。Ingress则可以调度不同业务域。不同URL访问路径的业务流量