经常有人在群里问,运维人员需不需要学开发?需不需要学 PYTHON ?PYTHON 和 SHELL 有什么区别?天天问这种好水的问题,真是实在受不了。今日就来帮大家扫扫盲,各位新手们看这一篇文章就够了。
现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能,不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试、优化开发人开发的程序, 开发人员有的时候很少关注性能的问题,这些问题就得运维人员来做,一个业务上线了,导致 CPU 使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢?然后就交给开发人员处理了,这样咋体现你的价值?
另外,对于大一点的公司来说服务器都上几百上千甚至数万台,这种情况下怎样做自动化运维?用 SHELL 写脚本 FOR 循环?呵呵,歇了吧!SHELL 也就适合简单的系统管理工作。到复杂的自动化任务还得要用专门的开发语言。你可能会说自动化管理有专门的开源软件\监控也有,直接拿来用下就好了。但是现有的开源软件如 puppet\saltstack\zabbix\nagio 多为通用的软件,不可能完全适用你公司的所有需求。当你需要做定制、做二次开发的时候,你怎么办?找开发部门?开发部门不懂运维的实际业务逻辑,写出来的东西太烂不能用,这活最后还是得交给运维开发人员来做。
其次,不会运维开发,你就不能自己写运维平台\复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑,如果是这样,那就请不要抱怨你的工资低,你的工作不受重视了。
而且现在的运维已经不只是要求会 Python 就可以了,还要求你会 docker 甚至是 k8s 。多面试,你就会发现没有用过 k8s 的公司和正在用 k8s 的公司,它们都问了共同的问题:k8s 的好处在哪里?总结一下有以下几点
1、故障迁移:当某一个 node 节点关机或挂掉后,node 节点上的服务会自动转移到另一个 node 节点上,这个过程所有服务不中断。这是 docker 或普通云主机是不能做到的。
2、资源调度:当 node 节点上的 cpu、内存不够用的时候,可以扩充 node 节点,新建的 pod 就会被 kube-schedule 调度到新扩充的 node 节点上。
3、资源隔离:创建开发、运维、测试三个命名空间,切换上下文后,开发人员就只能看到开发命名空间的所有 pod,看不到运维命名空间的 pod,这样就不会造成影响,互不干扰。传统的主机或只有 docker 环境中,登录进去就会看到所有的服务或者容器。
4、因为采用 docker 容器,进程之间互不影响,
5、安全:不同角色有不同的权限,查看 pod、删除 pod 等操作;RBAC 认证增加了 k8s 的安全
51Reboot 这次呢就为大家带来了关于自动化运维的分享《k8s 的应用发布探索》,时间宝贵我们绝不吹水。主要涉及以下内容:
- 常见容器发布方式
- k8s 发布流程概述
- k8s 发布接口调用一些小例子
文档目录如下: