• Kubernetes 深入理解kubernetes(一)


    云计算传统分类


    云本身本身是为了适应一种计算抽象的一类的需求

    最早期的云基本上就是iass层,所谓iass层就是用来管理基础架构层,提供一个一个的操作系统,业务只需要部署在这一个一个的操作系统上面就行了,当然这些是虚拟机了。这会带来什么问题呢?应用是面向操作系统的,本身隔离着非常非常多的东西的,比如一个高可用应用如何部署到不同节点上面去呢?这些都得应用层面上去关心,如果只给我操作系统,那么每家公司都要去解决相应的问题。

    后面就逐渐的中间层面是不是可以抽象化,将操作系统的管理,中间件的管理,运行时的管理,我帮你将整个平台搭建起来,上面只需要跑你的应用就行了。这就是pass就是在iass之上做改进。

    在后面就是能不能以软件为中心,以应用为中心,提供一个软件,然后你只需要使用这个软件就好了,这就是sass,提供一些软件供你直接使用。

     

    Kubernetes生态系统


    kubernetes打破了iass sass pass,边界就没有那么清晰了,因为Kubernetes基于这些标准的api,来描述所有的代管对象,这些对象向下探就是基础架构,向上探就是应用抽象。

     它是通过统一的api将所有层面的对象统一纳管起来,之所以说模糊,是因为它向下是iass,可以将整个iass接入进来,它中间就有强大的pass,有了pass之后有是面向应用的,所以它本身又可以提供sass服务。

    Kubernetes设计理念


     

    对于应用本身支持了有状态副本集和无状态副本集,用来确保应用的高可用。

    k8s自身也是高可用的,平面组件在搭建的时候可以部署为高可用。

     

     

     

    分层架构


     

     

    kubernetes向下实现了几个接口抽象,一个叫cri runtime抽象,下面可以接入docker containerd,还可以接crio,向下更多的是说对plugin的支持,和灵活性的选择,使得kubernetes可以运行在不同的环境里面。

     

     

    API设计原则


     

     

     

     

     

    Kubernetes如何通过对象组合完成业务描述


     通过一个deployment创建一次业务部署这样的对象,deployment control会去建replicaset,replicaset会去建pod,pod会被调度器产生绑定关系,这是业务部署描述的部分,还有涉及的对象就是业务要发布的时候,我要去定义一个service,service创建之后kube-proxy会为它配置各种负载均衡的配置以及dns会为它配置域名服务,要将服务发布出去我要去定义一个service对象,service又可以通过ingress一个流量入口来发布到整个集群数据面API网关里面。

    所以通过各种对象的组合来完成整个业务部署的描述。

     

     

     

    架构设计原则


    这里再强调一下,只有api server能够访问etcd,其他服务只能通过apiserver来访问集群。

    我们鼓励事件监听,而不是轮询,etcd和apiserver都能够支持事件通知,大家就不需要轮询的来查了,轮询的查就把etcd和apiserver拉死了,为什么需要监听,因为你需要保持长连接,所有对象的变更是很频繁的,这些对象的变更让etcd和apiserver主动的下发,而不是轮询的一遍一遍查。

     

     

    引导(Bootstrapping)原则


    能不能使用kubernetes管理kubernetes控制平面,这叫做self-hosting,通过kubernetes组件把kubernetes一些基础组件,也就是整个kubernetes拉起来,这也就是kubeadm方式去加载集群,它通过kubelet以静态pod的方式加载整个集群,这就是self-hosting。

    能不能使用二进制的方式去搭建集群呢,可以,在你初期学kubernetes的时候应该去理解每个服务如何的配置,这是非常好的方式,但是在生产集群集群里面不建议这么做,既然kubernetes自身可以保证应用的高可用,那我们就可以使用kubernetes来管理kubernetes平面自身,kubernets on kubernets是一个非常好的方式。

  • 相关阅读:
    有哪些靠谱的程序员兼职平台?
    中国纺织数码喷印机行业深度调研与发展趋势预测研究报告
    Vue.js+Node.js全栈开发教程:Vue.js插值
    leetcode刷题(第四十五天)70. 爬楼梯 (进阶); 322. 零钱兑换 ; 279.完全平方数
    gradle7.0 打包插件发布到本地maven仓库
    Golang 递归获取目录下所有文件
    matlab做神经网络的步骤,matlab建立神经网络模型
    【web前端期末大作业】HTML+CSS宠物狗静态网页设计
    启山智软/商城源码
    读书笔记:Java8 Streams用法总结大全 之 Stream中的常见操作
  • 原文地址:https://blog.csdn.net/qq_34556414/article/details/125456613