欢迎来到天天文库
浏览记录
ID:51569690
大小:9.42 MB
页数:23页
时间:2020-03-13
《kubernetes容器云平台实践-李志伟v1.0.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、李志伟2017年7月面临的问题:}基础设施故障率高,运维自动化水平低}系统架构不一致,维护复杂度高}计算资源利用率低}业务迁移或水平扩展困难。}服务总量繁多,管理复杂度高。}一个高效的服务编排平台}一个高可用的运维平台}一个高度的自动化运维平台}提高计算资源的利用率和服务的弹性扩展能力。}业务容器镜像一次构建,可运行在多种环境,配合CI/CD,可大幅提升研发效率。}消除本地依赖,迁移成本低,解决服务商锁定问题。}遵循Borg架构思想,规范网站系统架构设计。}实现运维自动化}搭建kubernetes集群}构建私有Docker镜像仓库(Harbor)}集群监控Heapster}CI/CD基础设
2、施(Jenkins)}分布式存储解决方案(Glusterfs)}Kubernetes1.5.2主程序}Docker1.10.3容器}Flannel0.7.0网络组件}Etcd3.1.3数据库}Kubernetes-DashboardUI}KubednsDNS组件}Registry容器私有镜像库}Heapster监控}GlusterFS3.7.9共享存储n容器镜像封装的基本原则nNameSpace的使用规范nservicename的命名规范n健康检查规范nImagetag配置规范n使用ConfigMap}尽可能地设计成无状态服务}尽可能消除不必要的运行环境依赖}需要持久化的数据写入到共享存储
3、}尽可能保持业务的单一性}控制输出到stdout和stderr的日志写入量。}配置与镜像内容分离}容器中使用k8s内部dns代替ip地址配置形式}日志采用集中化处理方案(EFK)}采用独立的容器处理定时任务}实现在一个集群内部同时运行开发、测试、预发、生产环境}软件组件在不同的运行环境之间不会产生命名冲突。}通过namespace实现资源隔离(ResourceQuota)。}v1.5版之前不能超过24个字符,v1.5版后最多63个字符。}需要满足正则regex[a-z]([-a-z0-9]*[a-z0-9])?的要求,意味着首字母必须是a-z的字母,末字符不能是-,其他部分可以是字母数字和
4、-符号。}命名方式:业务名-应用服务器类型-其他标识,例如book-mysql-m1、book-redis-n1、book-tomcat-n1、book-zk-n1健康检查是系统故障自动发现和自我恢复最重要的手段一、进程级健康检查}检验容器进程是否存活,进程级的健康检查都是默认启用的二、业务级健康检查:I.检查自身核心业务是否正常II.健康检查程序执行时间要小于健康检查周期III.健康检查程序消耗资源要合理控制,避免出现服务抖动}WEB服务:采用HTTPGET方式进行健康检查,需要实现一个“/healthz”URI,这个URI程序需要检查所有核心业务服务是否正常,健康检查程序还应该在异常情
5、况下输出每一个检查项的状态明细。}其他网络服务:可以采用探查容器的指定端口状态来判断容器健康状态。}非网络服务:在容器内部执行特定命令,根据退出码判断容器健康状态。HttpGetProbTCPSocketActionExecActionlivenessProbe:livenessProbe:livenessProbe:httpGet:initialDelaySeconds:15exec:path:/healthztimeoutSeconds:1command:port:8080tcpSocket:-catinitialDelaySeconds:15port:80-/tmp/healthti
6、meoutSeconds:1initialDelaySeconds:15timeoutSeconds:1范例1范例2范例3}部署容器镜像时避免使用:latesttag形式◦难以跟踪当前运行的images版本◦难以进行回滚操作◦imagePullPolicy为IfNotPresent时镜像不会更新。}每个容器images的tag应该用版本号来标识(如myimage:v1)配置应该与镜像内容分离以保持容器化应用程序的可移植性使用场景:}填充环境变量的值}设置容器内的命令行参数}填充卷的配置文件}采用Jenkins实现CI/CD}降低开发人员使用K8S的门槛}CI/CD提升研发效率}在docke
7、r中运行docker,实质上是将host的docker.sock挂载到容器中,在容器中创建的容器,其实是运行在host机器上。}容器镜像的/etc/localtime根据需要设置为对应的时区如:/usr/share/zoneinfo/Asia/Shanghai。}采用配置文件中的volume挂载宿主机对应的localtime文件方式或使用ConfigMap方式实现。}配置代码:volumes:volumeMounts:-
此文档下载收益归作者所有