Kubernetes入门介绍【与云原生的故事】
1、Kubernetes介绍
Kubernetes(也称为“k8s”或“kube”)是主流的开源容器编排平台,您可以利用它大规模地部署和管理容器化应用软件系统,方便地对容器进行调度和编排。Kubernetes拥有一个庞大且快速增长的生态系统,其服务、支持和工具广泛可用。
对应用开发者而言,可以把Kubernetes看成一个集群操作系统。Kubernetes提供服务发现、伸缩、负载均衡、自愈甚至选举等功能,让开发者从基础设施相关配置等解脱出来。
2、Kubernetes 特点
- 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
- 可扩展: 模块化, 插件化, 可挂载, 可组合
- 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
3、Kubernetes主要功能
3.1、自我修复
在节点故障时重新启动失败的容器,替换和重新部署容器,保证预期的副本数量;杀死健康检测失败的容器,并且在未准备好之前不会处理客户端请求,确保业务 Online。
3.2、弹性伸缩
使用命令、UI 或基于 CPU 使用情况自动快速扩容和缩容应用程序实例,确保应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成为运行服务。
3.3、自动部署和回滚
Kubernetes 采用滚动更新策略更新应用,一次更新一个 Pod,而非同时删除所有 Pod,如果更新过程中出现问题,Kubernetes 将回滚更改,升级保证业务不受影响。
3.4、存储编排
挂载外部存储系统,无论是来自本地存储、公有云,还是网络存储都作为集群资源的一部分使用,极大提高存储使用灵活。
3.5、服务发现和负载均衡
Kubernetes 为多个容器提供一个统一访问入口(内部 IP 和一个 DNS 名称),并且负载均衡关联到所有容器,使得用户无需考虑容器 IP 变动的问题。集群内应用可以通过 DNS 名称访问另一个应用,方便微服务之间通信。
3.6、机密和配置管理
管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。
3.7、资源监控
Node 节点组件集成 cAdvisor 资源收集工具,可通过 Heapster 汇总整个集群节点资源数据,然后存储到 InfluxDB 时序数据库,再有 Grafana 展示,可以快速实现对集群资源监控,满足基本监控需求。
3.8、提供认证和授权
支持属性访问控制(ABAC)、角色访问控制(RBAC)认证授权策略,控制用户是否有权限使用 Kubernetes API 做某些事情,精细化权限分配额。
4、Kubernetes相关组件
4.1、Pod
Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器(container)、存储资源(volume)、一个独立的网络IP以及管理控制容器运行方式的策略选项。
4.2、Deployment
Deployment是对Pod的服务化封装。一个Deployment可以包含一个或多个Pod,每个Pod的角色相同,所以系统会自动为Deployment的多个Pod分发请求。
4.3、StatefulSet
StatefulSet是用来管理有状态应用的对象。和Deployment相同的是,StatefulSet管理了基于相同容器定义的一组Pod。但和Deployment不同的是,StatefulSet为它们的每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的,但是不能相互替换,无论怎么调度,每个Pod都有一个永久不变的ID。
4.4、Job
Job是用来控制批处理型任务的对象。批处理业务与长期伺服业务(Deployment)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出(Pod自动删除)。
4.5、CronJob
CronJob是基于时间控制的Job,类似于Linux系统的crontab,在指定的时间周期运行指定的任务。
4.6、DaemonSet
DaemonSet是这样一种对象(守护进程),它在集群的每个节点上运行一个Pod,且保证只有一个Pod,这非常适合一些系统层面的应用,例如日志收集、资源监控等,这类应用需要每个节点都运行,且不需要太多实例,一个比较好的例子就是Kubernetes的kube-proxy。
4.7、Service
Service是用来解决Pod访问问题的。Service有一个固定IP地址,Service将访问流量转发给Pod,而且Service可以给这些Pod做负载均衡。
4.8、Ingress
Service是基于四层TCP和UDP协议转发的,Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分。
4.9、ConfigMap
ConfigMap是一种用于存储应用所需配置信息的资源类型,用于保存配置数据的键值对。通过ConfigMap可以方便的做到配置解耦,使得不同环境有不同的配置。
4.10、Secret
Secret是一种加密存储的资源对象,您可以将认证信息、证书、私钥等保存在Secret中,而不需要把这些敏感数据暴露到镜像或者Pod定义中,从而更加安全和灵活。
4.11、PersistentVolume(PV)
PV指持久化数据存储卷,主要定义的是一个持久化存储在宿主机上的目录,比如一个NFS的挂载目录。
4.12、PersistentVolumeClaim(PVC)
Kubernetes提供PVC专门用于持久化存储的申请,PVC可以让您无需关心底层存储资源如何创建、释放等动作,而只需要申明您需要何种类型的存储资源、多大的存储空间。
【与云原生的故事】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/345260
- 点赞
- 收藏
- 关注作者
评论(0)