前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >闲聊容器的标签

闲聊容器的标签

作者头像
SRE运维实践
发布2019-07-08 14:46:38
7290
发布2019-07-08 14:46:38
举报

序言

物以类聚,人以群分,朋友越来越少了,不知道是一种悲哀还是一种凄凉。

你会给自己打什么标签呢?毕竟咱的猪脑子装不下那么多事。

标签化

容器的每个部分都可以打标签,也就是我们经常谈到的label,例如容器container有标签,镜像image有标签,网络network有标签,存储卷volume有标签,最可恶的居然是dockerd也有标签。

为什么需要打标签?

在容器的使用中,打不打标签其实也无所谓,很多的调度算法是根据标签来的,例如k8s里面的pod,打上一个标签,从而指定pod的数量,从而实现流量的负载均衡;例如k8s里面的node,打上不同的标签,从而可以实现根据node的selector来实现定向调度。

在使用dockerfile编译镜像的时候,可以直接加入label,也可以多个,例如根据环境分类,根据版本分类,根据区域分类,根据架构分类。(镜像的标签)

在运行时也能直接加入label,从而可以将容器划分为各种环境的,例如生产环境为production。(容器的标签)

volume也是可以打上标签的。

网络也是可以打上标签的。

风言风语

世界上有两种事情不能嘲笑,一个是出身,一个是梦想,除非。。。你真忍不住。

打标签毫无意义,那为什么要瞎逼逼。因为。。。有更好玩的。

在看一眼运行时的状态:

你会看出什么?

容器最主要存在的目的就是提供服务,那么在镜像中就写上健康检查的一些东西,从而更容易使用容器,当你发现容器有问题,可以直接使用label来对服务进行健康检查。

容器的设计分为两方面,一个是服务的提供,涉及到健康检查,一个则是容器里面的服务,那么就必然存在一个问题,容器的日志怎么来清理。

如果在容器里面运行了两个服务,一个是nginx,一个是java程序,那么必然会涉及到两方面的清理日志,crond了解一下,nginx使用logrotate,而java使用自身的日志切割即可。

容器是有大小的,也就是无论是计算,存储,从而在进行设定的时候,需要对容器指定cpu和内存的大小(cpusets和memory),而对于存储,则可以分为两个部分来进行限制,一个是根目录的大小限制,根据projectid来限制,而对于其他的分区,则根据物理机的磁盘大小共享使用限制。

容器的监控怎么办,其实也是使用定时任务,写一个脚本来监控容器里面的服务,从而定时发送相关的数据到告警系统中,告警系统进行响应规则的定义,然后决定是否告警。

容器启动的时候,我们总是使用一个启动脚本,或者叫做entrypoint,emmm,最简单的方式莫过于一个tail -f,反正也是一直持续的在运行中,然后在中间拉起服务,例如首先拉起nginx,然后拉起java程序。

再谈谈容器的调度,容器是运行在物理机上的,为了实现容灾效果,从而必然需要将容器分散到docker的集群之中,根据什么来进行调度?这是个好问题。在虚拟机中存在将vm打散的概念,其实容器也是一样的,也需要打散,形神俱散。

在虚拟机中存在一个overcommit也就是超卖的概念,在容器中其实一样存在,一个56核心的cpu上能运行多少个容器?指定运行容器的core是哪些?超卖比例是多少,emmm,相当复杂,所以当出现cpu的load告警的时候,哗啦啦,一片容器全部告警,一粒老鼠屎,坏了一锅粥,想找出来,略难,告警聚合了解一下。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SRE运维实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档