美文网首页
kubernets部署说明

kubernets部署说明

作者: 麟之趾a | 来源:发表于2020-07-20 22:56 被阅读0次

    对象式编程语言

    以数据为中心,代码服务于数据
    数据: 对象
    代码: 方法
    我们首先会写class类,定义一类事务的属性和方法,给属性赋值,就是实例化一个对象。这些对象支持类中的方法,就称为对象式编程语言。
    方法限制了一类操作事务上的接口

    k8s api

    restful风格的api
    REST是秒针状态转移,它相当于对象式编程语言,它把这个秒针可操作的事务称之为类别。在REST API中,不是称之为类别,而是称之为resource(资源),定义了只支持哪些方法的一类事务。我们给这些事务,赋值。就能创建出object对象。
    resource---> object
    对象式编程语言,可以使用语言自己定义方法。而k8s api是在http 和https上做的。所以支持以下方法
    method: GET,PUT,POST,PATCH... 等http协议中的方法

    k8s的核心任务

    k8s本身是个cluster,容器编排系统。k8s运行在一组物理节点上,并提供公共接口,使用户对pod进行增删改查。
    Pod里面就是容器,容器里面跑的是程序。由Pod Controller,使用Deployment 控制器来监控Pod,当pod运行失败,重新起一个新的pod,它的IP就会改变。客户端访问原先的IP就会访问不到。为此k8s,基于服务注册和发现功能实现
    k8s用户访问服务,是基于service。由于Pod的IP变动,因此每建立一个Pod,如果这个Pod提供服务,我们应该在这个Pod之前提供service,用户访问这个service,service反代给pod,而且可以反代多个Pod。
    service也有IP,称为serviceIP或clusterIP
    Pod的IP,称为pod-IP
    此时service拥有反代和调度功能(pod 有多个), service如何识别相同服务的pod。k8s使用label来给每一个pod进行标识。
    label: <key>:<value>
    因此service只关联具有相同标签的pod,由label selector(标签选择器来完成)。pod的IP可能会变,但创建出的新pod,都会关联上标签。
    service就是使用iptables和ipvs规则来进行调度
    service也可能会被使用者删掉,因此它的IP也会改变,用户依然访问不到服务。因此使用DNS,service向DNS注册一个A记录,因此用户访问service名称,当此service被重建会依然向DNS注册一个相同名字的A记录,用户访问名字即可

    k8s的 三个IP

    node-ip: 出现在物理网卡上
    pod-ip: 出现在虚拟网卡上
    service-ip:只出现在iptables和ipvs规则和DNS解析记录中

    例:一个mnt

    n的client:远程客户端
    t的client: nginx
    m的client: t上的程序


    image.png

    即k8s上运行一个nmt架构,需要创建3个service和3个controller

    kubernets Network

    image.png

    假设node01上的pod为client,node02上的pod为server端,node01 pod通过service访问node02 pod,service拿到node02的pod的IP,返回给node01的pod。node01 的pod,拿到IP直接与ndoe02的pod进行通信。
    此过程中,service就是充当个DNS服务,拿到server 端的pod IP,返回给client pod。这个DNS解析的不是主机名,而是cluser ip。

    相关文章

      网友评论

          本文标题:kubernets部署说明

          本文链接:https://www.haomeiwen.com/subject/gwmykktx.html