第一章 k8s入门
k8s是什么
功能上:容器编排引擎的事实标准。《每天五分钟玩转kubernetes》
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.《https://kubernetes.io/》
架构上:它是一个全新的基于容器技术的分布式架构领先方案。《k8s权威指南》
一些概念:
几乎所有的资源对象都可以通过kubectl命令进行增删改查等操作并将其保存在etcd存储中进行永久化存储
集群中的角色:
Node:工作负载节点,kubelet:负责容器的创建 和Master的交互;kube-proxy:实现service的通信和负载均衡机制的组件;docker:docker引擎
Master:控制节点;高可用方案建议用3个节点;部署的进程:kube-api-server,集群控制入口;controller-manager,控制中心;Schedule 调度;当然还运行一个etcd
Service:Node IP/Cluster IP/Pod IP
Pod:pod包含一个叫pause的根容器,然后还有其他的业务容器;一来可以通过pause容器来查看整个容器组的状态;二来多个业务容器共享Pause容器的ip和其挂载的volume,简化了同一个容器间的通信问题和文件共享问题。
Pod分类:静态pod和动态pod
Label:kv键值对,Label可以附加到各种资源对象上 实现多维度的资源分组管理功能 之后我们可以通过Label Selector查询和筛选拥有某些Label的资源对象。比如ReplicaSet、service都是通过Label Selector来筛选的
。版本标签:" release ”:” stable”,”release”:”canary”...
。环境标签:” env让onment”:” dev ”,吨nv 让onment”:’}
。架构标签:”tier ”:frontend”,”tier”:”backend”,”tier”:"middleware”
。分区标签:"partition”:”customerA”,”partition”:”customerB
Endpoint:Pod的IP+容器的端口 代表Pod中一个服务进程的对外通信地址
Pod中的Event:事件的记录;可以通过kubectl describe pod xxxx来查看描述信息,从而定位原因
RC/RS:replication controller /replica set。我们很少使用RS 主要被deployment这个高层次的资源对象使用 从而形成一套Pod的创建 删除 更新的编排机制。当我们使用deployment时候,无需关心他是如何创建rs的,这一切都是自动发生的。旧版本是rc,新版本是rs和deployment,来编排容器。
Rc、rs作用:实现pod的自动创建和副本数量的控制 rc里包括完整的pod定义模板 可以实现pod的扩容和缩容等功能 也可以实现pod的滚动更新
Deployment:和RC相比较 最重要的区别是可以随时知道Pod的创建进度
Pod的管理对象:RC/RS/deployment/ DaemonSet/StatefulSet/Job
HPA:Horizontal Pod Autoscaler
StatefulSet:
为什么要用k8s?
l 轻装上阵的开发系统,以前要多人协作一起开发。现在是架构师专注服务组件的提炼,开发工程师进行业务的研发,在加一个运维就可以了。
l 拥抱微服务架构。内嵌的负载均衡器
l 随时可以迁移到公有云。
l 强大的横向扩容能力