容器化之后,以Docker为例,可以通过CLI(Command Line Interface,命令行界面)来管理容器的生命周期,比如将容器提交到新镜像上、上传镜像到注册中心、终止运行中的容器、资源调度和部署、配置管理、资源分配、根据负载扩展或移除容器、流量路由、监控报警、滚动更新等。
CLI虽然可以满足单个主机上管理容器的需求,但是面对集群、跨主机的容器管理就显得无所适从了。同时,大部分工作都需要人工操作,重复、低效且容易出错,容器编排工具的出现消除了部署和扩展应用过程中的很多手动操作,提供了一个管理容器生命周期和可扩展微服务架构的框架。随着企业的使用和社区的活跃,Kubernetes目前已经是企业实践的主流编排工具。
当使用容器编排工具时,需要使用YAML或JSON文件来描述应用程序的配置。配置文件会告知配置管理工具在哪里下载容器镜像、如何设置网络、如何保存日志等。容器编排工具同时会定义很多新的概念,如Node、Pod、Service、Deployment、Kubelet等以方便对容器进行操作。
使用容器编排主要有以下几方便的有点:
- 高效的资源管理
通过标准化的YAML、配置中心、自定义CRD、可视化后台工具,可以屏蔽很多关于容器、编排本身的概念,大大降低用户的认知成本,降低容器管理的复杂性,从单机到大规模集群管理、从命令行维护到标准化配置、从白盒到黑盒、从无法度量到可视化控制,编排工具大大减轻了应用运维人员的工作量。
- 自动化程度高
编排工具提供自动部署、自动重启、自动复制、自动扩缩容等能力,使容器和微服务有更好的灵活性。
- 高可用性
以Kubernetes为例,一个成熟的集群通常有3个主节点,如果跨IDC可能需要更多的主节点来保证整个集群的高可用。同时对于微服务所在的Pod,一旦发现心跳异常,通过Deployment的限制可以快速弹起,保障固定实例正常运行,不会出现传统环境下挂了一台服务器几个月不知道的情况。
- 大规模运维
对于微服务实例节点比较少的环境,不用编排工具也可控,当开发或运维人员面临的是成百上千,甚至上万的微服务实例时,如果没有编排工具的管理,极有可能造成实例节点的漏发或误发。若开发人员手动操作失误,导致有1台服务器漏发,结果一部分线上流量流入旧版本服务,最后错误率飙升。这种问题往往定位起来非常麻烦。
- 安全
编排工具提供了安全插件,通过RBAC(Role Based Access Control,基于角色的访问控制)限制不同的角色拥有不同的权限,对于企业的合规、安全生产有更好的支持。
标签:容器,运维,实例,编排,优点,工具,节点 From: https://blog.51cto.com/key3feng/5881448