1 认识kubernetes
1.1 什么是kubernetes
Kubernetes 是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的使用范围广泛。
1.1.1 为什么需要kubernetes
应用部署三个阶段
1.1.2 k8s的特点
- 自我修复
- 弹性伸缩
- 自动部署和回滚
- 服务发现和负载均衡
- 机密和配置管理
- 存储编排
- 批处理
1.2 企业级容器调度平台
1.2.1 Apache Mesos
基本概念
优势
1.2.2 Docker Swarm
基本概念
优势
1.2.3 Google kubernetes
基本概念
优势
2 集群架构与组件
2.1 相关组件
2.1.1 控制面板组件(Master)
- etcd
- kube-apiserver
- kube-controller-manager
- cloud-controller-manager
- kube-scheduler
2.1.2 节点组件
- kubelet
- kube-proxy
- container runtime
2.1.3 附加组件
- kube-dns
- Ingress Controller
- Prometheus
- Dashboard
- Federation
- es
2.2 分层架构
- 生态系统层
- 接口层
- 管理层
- 应用层
- 核心层
3 核心概念与专业术语
3.1 服务的分类
3.1.1 无状态
代表应用:nginx,apache
优点:对客户端透明,无依赖关系,可以高效实现扩容、迁移
缺点:不能存储数据,需要额外的数据服务支撑
3.1.2 有状态
代表应用:mysql、redis
优点:可以独立存储数据,实现数据管理
缺点:集群环境下需要实现主从、数据同步、备份、水平扩容复杂
3.2 资源和对象
3.2.1 资源的分类
元数据级
- Horizontal Pod Autoscaler(HPA)
- PodTemplate
- LimitRange
集群级
- Namespace
- Node
- ClusterRole
- ClusterRoleBinding
命名空间级
-
工作负载型
1. pod
2. pod副本(replicas)
3. pod控制器(部署)-
适用无状态服务
ReplicationController(RC)
ReplicaSet(RS)
Deployment
特点:创建ReplicaSet / pod 滚动升级/回滚 平滑扩容和缩容 暂停和恢复Deployment
-
适用有状态服务
statefulSet
特点:
稳定的持久化存储 稳定的网络标志 有序部署,有序扩展 有序收缩,有序删除
组成:
Headless Service : DNS管理 VolumeClaim Template:用户创建持久化卷的模板
注意事项:
1.k8s v1.5版本以上才支持 2.所有pod的Volume必须使用PersistentVolume或者是管理员事先创建好 3.为了保证数据安全,删除StatefulSet时不会删除Volume 4.StatefulSet需要一个Headless Server来定义DNS domain,需要在StatefulSet之前创建好
-
守护进程
DaemonSet
-
任务/定时任务
Job
CronJob
-
-
服务发现
service
ingress
-
存储
volume
CSI
-
特殊类型配置
ConfigMapSecret
DownwardAPI
-
其他
Role
RoleBinding
3.2.2 资源清单
额外参数