k8s学习
无聊正在学习k8s,笔记一点点记录
组件介绍:
APIServer 所有服务统一访问的入口 类似微服务的网关
ControllerManager 维持副本期望数
Scheduler 负责接收任务,并选择合适的节点进行任务分配
ETCD 键值对数据库 负责存储K8s集群重要的信息,并进行持久化
Kubelet 直接跟容器引擎交互实现容器生命周期的管理
Kube-proxy 负责写入规则到IPTABLES、IPVS(负载均衡)实现服务的映射访问
Pod k8s的最小调度单位
Pod创建后,会生成一个pause ,其内部所有容器(docker)共享网络栈、数据卷,所以端口不能冲突
ReplicationController 用于确保容器副本数始终保持用户定义的副本数,如果有容器异常退出,会创建新的pod来代替,并回收掉异常的pod
最新k8s用Replicaset取代k8s,并且建议用Deployment自动管理replicaset,这样无需担心不兼容问题(比如回滚更新等)
HPA(Horizontal Pod Autosacling)会观察系统资源的利用率自动添加或者删除Pod,从而来满足用户期望值,实现水平扩展
StatefulSet 为了解决有状态服务问题,Docker一般是解决无状态服务的,但一些有状态服务(其实Docker也能做- -,只是不太好),类似mysql,mangodb这种需要实时更新的,需要StatefulSet进行解决
可以解决:1.稳定的持久化存储,保持一致性
2.稳定网络标识
3.有序化部署,区分启动顺序
DeamonSet 确保全部或一些Node节点运行一个(有且仅有一个)Pod副本,当有新的Node节点加入后,也会为他们新增一个Pod,当Node被移除后,也会把这个节点移除。类似批量管理一个任务集
Job 负责批处理任务,他保证批处理任务的一个或者多个pod成功结束,比如处理数据库备份等,相比于直接运行脚本,Job的好处是脚本运行失败会再次运行,或者配置运行次数等。
Service 可以把相同标签的Pod进行绑定 用于Pod副本的路由跳转