第一章 Kubernetes进阶之Kubernetes简介
Kubernets是什么
- Kubernets是Google在2014年开源的一个容器集群管理系统,简称k8s
- K8s用于容器化应用程序部署,扩展和管理
- K8s提供了容器编排,资源编排,弹性伸缩,部署管理,服务发现等一系列功能
- K8s的目标是让容器部署更加简单高效
Kubernets的特性
- 自我修复
- 弹性伸缩
- 自动部署和回滚
- 服务发现和负载均衡
- 机密和配置管理
- 存储编排
- 批处理
Kunernetes集群架构与组件
Master 组件:
kube-apiserver :
Kubernetes API 集群的统一入口,各组件的协调者,以RESTful API提供接口方式,所有的对象资源的
增删改查和监听操作都交给APIServer处理后再提交给etcd数据库做持久化存储
Kube-controller-manager
处理集群中常规后台任务,一个资源对应一个控制器,而controllerManager就是负责处理这些控制器的
kube-scheduler
根据调度算法为新创建的pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上
etcd
分布式键值存储系统,用于保存集群状态数据,比如Pod,Service等对象信息
Node组件:
kubelet:
kubelet 是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器,Pod挂载数据卷,下载secret,获取容器和节点状态等工作,kubelet 将每个Pod转换成一组容器
kube-proxy:
在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。实现让Pod节点(一个或者多个容器)对外提供服务
docker或rocket
容器引擎,运行容器
Kubernetes的核心概念
Pod
- 最小部署单元
- 一个容器的集合
- 一个Pod中容器共享网络命名空间
- Pod是短暂的
Controllers
- ReplicaSet:确保预期的Pod副本数量
- Deployment:无状态应用部署
- StatefulSet:有状态应用部署
- DeamonSet:确保所有Node运行同一个Pod
- Job:一次性任务
- Cronjob:定时任务
更高级层次对象,部署和管理Pod
Service
- 防止Pod失联
- 定义一组Pod访问策略
Label
标签,附加到某个资源上,用于关联对象,查询和筛选
Namespace
命名空间,将对象逻辑隔离
Annotations
注释