Kubernetes概述
- 官网: https://kubernetes.io
- GitHub : https://github.com/kubernetes/kubernetes
- 由来:谷歌的Borg系统,后经Go语言重写并捐献给CNCF基金会开源
- 含义:词根源于希腊语:舵手/飞行员, K8S→K12345678S
- 重要作用:开源的容器编排框架工具(生态极其丰富)
-
Kubernetes优势
自动装箱,水平扩展,自我修复
- 服务发现和负载均衡
- 自动发布(默认滚动发布模式)和回滚
- 集中化配置管理和密钥管理
- 存储编排
-
Pod
Pod是K8S里能够被运行的最小的逻辑单元(原子单元)
- 1个Pod里面可以运行多个容器,它们共享UTS+NET +IPC名称空间
UTS: 主机名
IPC: 进程间通信
NET: 网络访问,包括接口
- 可以把Pod理解成豌豆荚,而同- -Pod内的每个容器是一 颗颗豌豆
-
Pod控制器
Pod控制器是Pod启动的一-种模板,用来保证在K8S里启动的Pod
- 应始终按照人们的预期运行(副本数、生命周期、健康状态检查… )
- K8S内提供了众多的Pod控制器,常用的有以下几种:
Deployment
DaemonSet (每个节点起一份)
ReplicaSet (Deployment管 ReplicaSet,ReplicaSet管pod)
StatefulSet (管理有状态应用的)
Job
Cronjob
Name
- 由于K8S内部,使用“资源”来定义每一种逻辑概念(功能)故每种”资源”, 都应该有自己的”名称”
- “资源”有api版本( apiVersion )类别( kind )、元数据( metadata)、定义清单( spec)、状态( status )等配置信息
-
Namespace
随着项目增多、人员增加、集群规模的扩大,需要- -种能够隔离K8S内各种”资源”的方法,这就是名称空间
- 名称空间可以理解为K8S内部的虚拟集群组
- 不同名称空间内的”资源”名称可以相同,相同名称空间内的同种“资源”,”名称” 不能相同
- 合理的使用K8S的名称空间,使得集群管理员能够更好的对交付到K8S里的服务进行分类管理和浏览
- K8S里默认存在的名称空间有: default、 kube-system、 kube-public
-
Label
标签是k8s特色的管理方式,便于分类管理资源对象。
- 一个标签可以对应多个资源,-个资源也可以有多个标签,它们是多对多的关系。
- 一个资源拥有多个标签,可以实现不同维度的管理。
- 标签的组成: key=value(值不能多余64个字节字母数字开头 中间只能是 - _ .)
与标签类似的,还有一种“注解” ( annotations )
Label选择器
给资源打上标签后,可以使用标签选择器过滤指定的标签
- 标签选择器目前有两个:基于等值关系(等于、不等于)和基于集合关系(属于、不属于、存在)
- 许多资源支持内嵌标签选择器字段