• 云原生k8s的声明式哲学


          拨云见日之后,先回顾一下云原生的真面目,这个就像k8s的地图,有了它就不会在这个森林里迷路。

    k8s 架构图

           把k8s看作一篇优秀的作品,我们得先领会其中心思想。如此,方可不至于,花了时间,看了热闹,而不得其神韵。 声明式的设计哲学就是k8s的中心思想。k8s是声明式的,你只需关注(what)应该发生什么,而不需要担心(how)怎样发生。what永远比how高一个层级,可惜我们常常迷失在how的浩瀚大海里......
     

    声明式哲学

           习惯了敲各种命令,用各种胶水脚本结合五花八门的工具,或者用把屠龙刀ansible, 勉强战得魂飞魄散,才能把一套系统搭起来,烧香拜佛,提心吊胆着上线。 

            凭什么k8s就可以如此优雅地如小李飞刀一招制敌呢?个人认为这个背后的功力就在于k8s的声明式哲学。声明式的系统设计,就是k8s的灵魂。

            你不需要告诉k8s怎么做,你需要告诉的k8s的是,你期望系统保持在什么状态,告诉他几把飞刀飞到哪即可。永远别关心,这把刀是怎么飞的,中间要穿越或躲避哪一些障碍,通通不需要。k8s会告诉你,就那么简单!

             k8s又是如何贯彻和强制执行这种霸王哲学呢?k8s提供的就是软件部署和运行服务,既然是软件世界的服务,很显然最强的手法就是拿捏住API, k8s的API就是声明式而非命令式(The Kubernetes API is declarative rather than imperative). 

              声明式的API对于系统的自愈, 自治和应用升级更新都至关重要。 这个跟以前传统的命令式的手动操作或者需要组织调度的复杂流程(jenkins/spinnaker/ansible等)完全不一样。这种理念跟当前业界流行的不可改基础设施(immutable insfrastructure)也是高度吻合的。

    声明式哲学的落地

              除了那一堆api, 对应资源的kubectl apply -f 神奇的yaml文件,就是我们熟悉的restful api接口。如果只是restful风格的api, 那足以描述或抽象神奇世界的各种纷纷扰扰的关系吗?

              别担心,k8s还有面向对象世界里最朴素的一个思想,一切皆对象。如下图,类名是Pod, 

    metadata是类的相关属性,spec是类的构造函数,这里的构造函数不仅仅说明它依赖的资源和条件,更重要的是它说明了创建对象要达到的目标。有了它,我们就拥有了跟k8s之间一份可靠的契约。你可以相信自己的十八般武艺,但有了这份契约,k8s可以让你值得信赖。

     

    Reference

    Concepts | Kubernetes

    Why Kubernetes will sustain the next 50 years

    Kubernetes Design and Development Explained - The New Stack

    design-proposals-archive/declarative-application-management.md at main · kubernetes/design-proposals-archive · GitHub

  • 相关阅读:
    C++基础——函数重载
    初学Matlab第二天
    JavaScript简单倒计时
    【线性代数】P2 行列式的性质
    Linux查找文件(文件夹)
    机器人编程怎么入门?
    自学成为android framework高手需要准备哪些装备-千里马车载车机系统开发学习
    墨云科技 web漏洞研究岗一面复盘
    网页js实现的各种3D树形结构模型
    面试题 16.20. T9键盘-力扣双百代码
  • 原文地址:https://blog.csdn.net/fertiland/article/details/127839238