k8s学习笔记之核心概念

作者: Java面试官 | 来源:发表于2017-06-25 21:36 被阅读559次

    一、背景介绍

    云计算三大类型:

    IaaS:即基础设施即服务

    PaaS:即平台即服务

    SaaS:即软件即服务

    docker容器技术的迅猛发展:

    一次构建,到处运行

    容器的快速轻量

    完整的生态环境

    二、什么是kubernates

    k8s是google开源的容器集群管理系统,在谷歌内部被称borg,在docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

    kubernates优势:

    容器编排

    轻量级

    开源

    弹性伸缩

    负载均衡

    三、k8s的核心概念

    集群:

    集群式一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了kubernetes平台,这里可以看到一个典型的kubernetes架构图


    image

    从上面可以看到如下组件,使用特别的图标表示service和label:
    pod
    container(容器)
    label(标签)
    replication controller(复制控制器)
    service(服务)
    node(节点)
    kubenates master(主节点)

    这里分别讲述一下各个组件的概念:

    1、pod

    运行于node节点上,。pod内包含的容器运行在同一宿主主机上,使用相同的网络命名空间、ip地址和端口、能够通过localhost进行通信,pod是k8s进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活,一个pod可以包含一个容器或者多个相关容器。

    2、Replication Controller

    Recplication Controller用来管理pod的副本,保证集群中存在置顶数量的pod副本,集群中副本的数量大于置顶数量,则会杀掉置顶数量之外的多余容器数量,反之则会启动少于置顶数量个数的容器,保证数量不变,replication controller是实现弹性伸缩、动态扩容和滚动升级的核心。如动态图所示:

    image

    3、service

    service定义了pod的逻辑集合和访问该集合的策略,是真实服务的抽象,service提供了一个统一的服务入口以及服务代理和发现机制,使用户不需要了解后台pod如何运行。

    如果pods是短暂的,那么重启时ip地址发生了变化,那么怎么才能从前端容器正确指向后台容器呢?

    service是定义一系列pod以及份这些pod的策略的一层抽象,service通过label找到Pod组,因为service是抽象的,所以在图标里通常看不到它的存在,这也就让这一概念更难以理解了。

    现在,假定有两个后台pod,并且定义后台service的名词为'back-service',labe选择器为(tier=back,app=mapp),back-service的service会完成如下两件重要的事情:

    • 会为service创建一个本地集群的dns入口,因此前端pod只需要dns查找主机名为'back-service',就能够解析出前端应用程序可用的ip地址。

    • 现在前端已经得到了后台服务的ip地址,但是它应该选择2个后台pod的哪一个呢?service在这两个后台pod之间提供透明的负载均衡,会将请求分发给其中的容易一个,通过每个node上运行的代理(kube-proxy)完成。如图:

    image

    4、label

    k8s中的容器api对象都是通过Label进行 ,label的实质是一系列的k/v键值对,label是replication controllerh和service运行的基础,二者通过label进行判别node上运行的pod。

    5、node

    node是k8s集群架构中运行pode的服务器节点,通常称为minion,node是k8s集群操作的单元,用来承载被分配的pod的运行,是pod运行的宿主机,每个节点都运行如下的k8s关键主键:

    • kubelet:是主节点代理
    • kube-proxy:service使用其将连接路由到Pod
    • docker或者rocket:k8s使用的容器技术来创建容器

    四、深入体验

    接下来可以继续深入的看看k8s官方文档,或者访问 https://kubernetes.io/docs/tutorials/kubernetes-basics/cluster-interactive/ 在这里边敲代码,加深体验。

    相关文章

      网友评论

        本文标题:k8s学习笔记之核心概念

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