De qué hablamos cuando hablamos de infraestructura inmutable

Introducción: después de adoptar el alojamiento, de repente te iluminas. Resulta que las cosas deberían ser tan simples. Años de exploración son como una semilla, que germina instantáneamente después de ver el grupo de nodos de alojamiento. Desde entonces, el mundo ha comenzado a difundir la tradición de los nuevos tres ejes: ¿esperar y ver si hay autocuración? Pod eliminar para ver? ¿Eliminar el nodo? Sin pretensiones y eficaz.

Autor: Chen Haibo (Boulder)

1.png

A medianoche sonó el teléfono y la línea era urgente. Te despiertas de mil llamadas, con los ojos somnolientos y apurados.

En un trance, finalmente descubrí lo que sucedió: una aplicación antigua se detuvo repentinamente, los mensajes se acumularon y el sistema se detuvo. Y eres como un trabajador de alcantarillado que destapa el inodoro, hace un milagro, reinicia la máquina y restablece el servicio. Vi que la acumulación de eventos en la cola de mensajes se desplomó y la advertencia desapareció.

Al día siguiente, ya no desea reproducir la campana de medianoche y decide realizar una reparación permanente en el sistema: agregue un script para reiniciar el servicio regularmente.

Las estrellas se han movido, han pasado muchos días, y ha agregado innumerables guiones en diferentes rincones, y no se ha despertado en medio de la noche durante mucho tiempo, e incluso puede disfrutar tranquilamente del té de la tarde. Sin embargo, hasta hoy.

Hoy, su departamento quiere reducir costos y aumentar la eficiencia. Para evitar convertirse en un costo de ser cortado, decide tomar la iniciativa de operar máquinas en línea: fusionar servicios y abolir máquinas. Aunque tiene una buena idea de qué aplicaciones se implementan en la máquina, ya no puede recordar qué andamiaje admite el funcionamiento de la aplicación.

Reconstruir el medio ambiente es muy difícil y estás empezando a perder el sueño de nuevo.

cambiando la infraestructura

El entorno en línea complejo, misterioso y mágico lleva la mitad de las leyendas urbanas, e incluso el entorno en línea de algunas empresas es un mito antiguo que debe transmitirse de boca en boca.

Aunque no he visto lluvias torrenciales en el desierto, he visto un entorno en el que nadie puede decir lo que hay allá arriba. No he visto el mar besar a un tiburón, pero he visto una máquina que se reinicia y no vuelve a levantarse.

Si puede decir qué aplicaciones se implementan en cualquier máquina y cómo son las dependencias entre los servicios en esa máquina, ha vencido al 80% de los jugadores. La causa raíz de esta situación es la infraestructura volátil.

  • Al agregar un servicio: "Encontraré una máquina para implementarlo"

  • Cuando hay un problema con un servicio: "Lo cambiaré en la máquina"

  • Cuando es necesario realizar un cambio en la configuración del sistema: "Ejecutaré un script y lo ejecutaré"

Aparentemente cambios de operación y mantenimiento rutinarios, documentados o no documentados, cada ambiente es tan único y exclusivo que junto con los cambios de personal, se han creado innumerables "secretos ancestrales".

¿Qué es la infraestructura inmutable?

Si bien los contenedores son ampliamente aceptados, la "inmutabilidad" se acepta gradualmente de manera sutil.

应用容器消亡之后,容器内的修改会随着容器一起不复存在,不要在容器内做修改就是最朴素的不可变理念。在程序启动阶段遇到问题,很少人还会把在容器内修修补补作为正经方案,而会回到最一开始的阶段,从容器构建阶段解决问题。
随之带来的就是大家对容器镜像无尽的信任感,容器突然出现问题?重建试试。换个机器跑不起来?肯定是机器的问题。

容器带来了什么

大家普遍认同 Docker 或者说容器引发了一场革命。但是为何说容器是一场革命,到底革了什么的命?

有一种说法是 Docker 简化了服务的管理,停启服务更加简单,但是事实上 systemd 或者 supervisor 等老牌服务管理、运维工具在这一点上不见得比 docker 难用多少。

我认为是镜像技术引爆了革命,一个不可临时修改的、固化的、自包含的交付物,真正的一次构建到处运行,一个可以快速铲掉和快速部署的实体,再也没有 「Works on my machine」,是如此的安心和可依赖。

也正是因为容器的重建是如此的快捷,使得我们有机会对「重启试试」发挥到极致,出问题了,重建容器看看?

你想尝试使用 Docker,但是你的业务如此复杂,上机器重建容器和直接上机器重启服务又有什么本质差别呢。

Pet vs Cattle

随之 Kubernetes 的到来,大规模的容器管理成为可能,而划定大规模容器的管理最佳实践也成为了热门议题。

2.png

如何饲养一只猫

如果你得到了一只猫,你会如何饲养它?我记得我在领回一只猫之后,花了很长的时间和脑细胞用来商定一个我和它都能接受的名字。

紧接着就是带着我的小猫去医院,制定疫苗计划,来保证我的小猫未来的健康。后面便是日复一日的铲屎和等着主子的眷顾。

小王子告诉我:正因为你为你的猫花费了时间,这才使你的猫如此重要。

经典的运维方式和猫的饲养是一样的,我们可以称之为宠物式运维。你会对机器和应用做详尽的规划,甚至为这个环境起一个名字,比如叫生产好了。

你也会对这个环境悉心照料,定期看看监控、做下升级保养。你为你的环境花费了时间,你的环境如此重要。

很难设想你的猫和你的环境突然间离你而去的场景,也许你会伤心的撕心裂肺和破产的撕心裂肺。

农场主入门

在获得了一只猫之后,你一不留神又获得了一家牧场。但你可能无法像养一只猫一样养几千头牛,因为几千个名字应该是很难记住的。

你可能也不会依次带着你的牛去医院打疫苗,何不直接批发疫苗统一接种呢。如果有小牛犊存在严重的缺陷,也许你会陪在它身边悉心照料,但更可能的是把它尽早的从流程中剔除,省的浪费更多的饲料。

从此你的生活便目无全牛,只要为牛群建立足够多的保障设施,某一头牛的状态对整体又有什么影响呢。

放牧式运维

当你已经为上千头牛建设了完善的饲养设施,你会惊奇的发现,即使再加 100 头牛,并不会增加太多的成本。而不像饲养猫,当你有两只猫的时候,最好能有 3 个猫砂盆,否则你将有机会体验到鸡飞狗跳。

你决心当一个牧牛人运维,再也不想给生产环境的主子们铲屎了。拥抱 Kubernetes,像放牧一样管理你的应用。

3.png

牧养一群 Pod

你把生产环境的主子们装进集装箱,通过容器镜像对部署方式进行标准化,谁也甭想做非标的操作,再使用 Pod 对应用进行部署,再也不去关心应用在哪个 Node 上启动,这一切自有牧场(Kubernetes)自行处理。

一个 Pod 异常了?没关系,删掉看看,下次起来又是一个全新的应用。丝毫不会影响到牧场的正常运转。

一切丝般顺滑,岁月静好。

午夜时分,电话响起,线上告急。你从千呼万钉中醒来,睡眼朦胧,手忙脚乱。

恍惚之间,终于梳理清楚发生了什么,原来是不知何处流量涌现,节点雪崩。而你就像一个下水道小工疏通马桶一般,大力出奇迹,扩容机器,恢复服务。pending Pod 消失不见,警告消除。

次日,你再也不想重现午夜凶铃,但陷入深思,身为牧场主的你,逐渐意识到一个灯下黑的问题。

你可以轻松的同质化对待每一头牛,但你无法同质化整个牧场。

牧养真正的基础设施

几番梳理,你找到了问题的关键:尽管可以放牧式管理 Pod,但是机器的运维却还是宠物式的。

你依然会悉心照料每个机器:提前规划、取一个名字、单独控制规格、挑选操作系统,甚至还有几台深得你爱,嘘寒问暖,日夜牵挂,拥有单独的内部昵称代号。

作为业界领先的牧场主,你决心改造自己的牧场,如果能像管理 Pod 一样管理 Node 是不是一个好主意?

如果 Node 异常直接删除 Node,等着弹出新的?还没想完,你后背有些发凉,你还没有像信任容器一样信任虚机,虽然你深知重启可解决 90% 的故障,而重装系统可以解决 99% 的故障。

思来想去,你依然想做些尝试,稍加思考,锁定痛点有二:

  1. 机器按需快速弹缩,同质管理
  2. OS 镜像化:快速、安全、不可变

驯服虚机

经过调研,你发现事情并不像原来设想的那样深不可测,主流云厂商早就提供了野生工具,你只需要稍加驯服,便可以为自己的牧场服务。

云厂商们很早便推出了弹性伸缩组,可以按照负载和期望维护虚拟机的数目。而阿里云也有自己的实现(ESS),可以无需人工干预的根据规则对 ECS 进行扩缩容。

你看到了希望,这不就是 Node 的 Deployment 吗?但是只是扩容虚拟机对你来说并没有什么价值,你深知需要的是牛圈,而不是木材,你需要对他们进行驯服。

这时,你转头看到了你的 Kubernetes 集群,灵感蹦出,为何要直面虚拟机呢,只要新扩容出的机器能被纳管到集群中不就解决了基本问题。

说干就干,通过 AutoScaling 定义了启动命令,开机后进行标准化安装和执行 kube join 动作。当机器开机不久,就可以出现在 Kubernetes 集群中。你感觉距离目标进了一步。

驯服 OS

很快,你又发现了一个新的问题,传统的 OS 启动和容器实在无法比拟,明明所有的依赖都在容器内部,而且所有的应用都已经在容器内运行,但你还是不得不为 OS 内置的、没人使用的服务买单,这些服务拖慢了启动速度,还引入了安全漏洞。

Además, siempre hay personas que no se dan cuenta de los beneficios de la gestión homogeneizada. De vez en cuando, alguien realiza algunas modificaciones desconocidas en la máquina, por lo que cada vez que desee liberar la máquina virtual, debe ir al grupo para grita para evitar encontrarte con algún bicho mágico. . Pidiendo problemas, sonríes irónicamente.

Planea domesticar el sistema operativo, adaptar el sistema operativo tradicional y limpiar todo excepto las dependencias del contenedor, lo que puede acelerar en gran medida la velocidad de inicio de la máquina. Además, es mejor agregar un aviso en algún lugar para advertir a todos que no escriban en la máquina para evitar la pérdida de archivos cuando se libere la máquina.

Un día, descubrió ContainerOS de Alibaba Cloud, un sistema operativo adaptado y optimizado para contenedores. No necesita cortarlo usted mismo, y ni siquiera necesita agregar un aviso, porque RootFS es de solo lectura, ni siquiera SSH. Estará activado por defecto, lo que elimina fundamentalmente las operaciones no estándar.

4.png

Lo ha probado. El sistema operativo optimizado para contenedores se inicia muy rápido. Después de hacer clic en él, aparece. Después de un minuto, puede programar el negocio. Trate a Node como administración de Pod y verá esperanza.

pastoreo controlado

Pero pronto se encuentra con un nuevo problema y es fácil crear una máquina. Su jefe le dice que hay una vulnerabilidad de seguridad CVE crítica en un lote de máquinas que tiene en la mano y que debe darse prisa para solucionarlo. , a excepción de los nodos de stock, ahora hay un agujero de seguridad con solo crear una nueva máquina.

Tiene la sensación inminente de que se dirige a aguas profundas.image.gif

5.png

Después de investigar un poco, escuchó que alguien propuso que un clúster se aloje como un piloto automático, y también vio el grupo de nodos alojados de Alibaba Cloud ACK. La expansión y contracción de los nodos, la auto-recuperación de las fallas de los nodos, el refuerzo de la seguridad y el alojamiento del sistema operativo lo afectarán. Te das cuenta de que debes resolver el problema desde la raíz: dejar de lado los Kubernetes creados por ti mismo y adoptar el alojamiento.

6.png

Después de abrazar el alojamiento, de repente te iluminas. Resultó que las cosas deberían ser tan simples. Años de exploración son como una semilla, que germina instantáneamente después de ver el grupo de nodos de alojamiento.

Desde entonces, el mundo ha comenzado a difundir la tradición de los nuevos tres ejes: ¿esperar y ver si hay autocuración? Pod eliminar para ver? ¿Eliminar el nodo? Sin pretensiones y eficaz.

Haga clic aquí para ver más detalles sobre las funciones del grupo de nodos administrados ~

Enlace original: click.aliyun.com/m/100034840…

Este artículo es contenido original de Alibaba Cloud y no se puede reproducir sin permiso.

Supongo que te gusta

Origin juejin.im/post/7117935936876314632
Recomendado
Clasificación