• 《Kubernetes权威指南第2版》学习(四)kubernetes基本概念和术语


    1: etcd是干什么的:

      键-值存储仓库,用来配置共享和服务发现。

      k8s把Node, pod,replication controller, Services看做是资源对象,这些资源对象可以通过K8s提供的kubectl工具进行增、删、改、查等操作将其保存在etcd中持久化存储。K8s相当于一个自动化的资源控制系统,通过跟踪对比etcd库里保存的‘资源期望状态’和“实际资源状态”的差异来实现自动控制和自动纠错的高级功能

    2:Master:

      k8s的集群控制节点,K8s所有控制命令都发给它,它负责具体的执行过程,它一般单独运行在服务器上,是集群的首脑(是否会出现单点故障?

            上面运行的关键进程:

        A: Kubernetes API Server(Kube-apiserver):  提供HTTP  Rest接口的关键服务进程,是K8s里所 有资源的增、删、改、查等操作的唯一入口,也是集群控制入口进程。

             B:Kubernetes Controlle manager(Kube-controller-manager), Kubernetes里所有资源对象的自动化中心,资源对象的 大总管。

       C: Kubernetes Scheduler(kube-scheduler), 负责资源调度(Pod调度)。

       D: etcd Server进程: 资源兑现更多数据保存在etcd中。

    3:Node(nodes之间可以看做是多个备份

       除了Master, 其他机器(物理机或虚拟机)称为Node节点。

      Node节点是K8s集群中的负载节点,每个Node都会被Master分配一些工作负载(Docker容器)。当某个Node宕机,其上的工作负载会被转到其他节点上。

      Node节点上都运行以下一组关键进程:

      A:kubelet: 负责Pod对应容器的创建、启动暂停等任务,同时与Master节点密切协作,实现集群管理的基本功能。

      B: kube-proxy:  实现K8s service的通信与负载均衡机制的重要组件

      C: Docker Engin(docker): Docker引擎,负责本机的容器创建和管理。

      Node节点可以在运行期间动态增加到K8s集群,默认情况下kubele会向Master注册自己,

    一旦Node被纳入集群管理范围,kubelet进程会定时向Master节点汇报自身情况。比如,OS,Docker版本,CPU和内存情况。这样master可以获知每个node资源使用情况,并实现高效的负载均衡。

      查看nodes:

        # kubectl get nodes

      查看nodes详细信息:

             # kubectl describe node kubernetes-minionl

       Node基本信息: 名称、标签、创建时间。

       Node当前运行状态: 磁盘是否满了,

             Node的主机地址和主机名。

       Node上资源总量、可分配资源量:

        主机系统信息

         当前正在运行的Pod列表概要信息。

    4 Pod    

      Pod是K8s的最重要也是最基本的概念。每个Pod有一个特殊的被称为“根容器”的Pause容器和若干个业务容器。

      为什么K8s会设计Pod概念并且有这样特殊的组成结构?

      A: Pause作为Pod根容器,以他的状态代表整个容器组的状态。

      B:Pod里多个业务容器共享Pause容器的IP,共享Pause容器挂载的Volume.

      

      K8S里的所有资源都是可以用yaml和json定义的,Pod的定义如下:

     

    Kind: Pod: 表明是一个POd;

    Metadata.name:  Pod的名字;

    Spec:   定义Pod中包含的容器组。

    此外还有环境变量。

    #kubectl describe pod XXX

    诊断问题的命令。

    一下可以定义CPU、memory等的配置和限额。

     4 Label标签

       Label是Key=value键值对。

       Label可以附加到各种资源上,例如Node, Pod, Service, RC等。

      Label + Label selector共同构成K8S中最核心的应用模型,使得被管理对象精确的分组管理。

    5 Replication Controller(RC)

      声明某种Pod的副本数量在任意时刻都符合预期值。

      

            当我们定义了一个RC并提交到K8s集群后,Master节点上的Controller Manager组件得到通知,定期巡检Pod的副本你数量,保证和预期的一样多。通过RC,K8s实现用户应用集群的高可用性。

            通过下面命令来实现Pod的动态缩放:

      # kubectl scale rc redis-slave --replicas = 3

    滚动升级(Rolling Update):  K8S很容易实现这种滚动升级。

    6 Service(服务)

      K8S里每个service其实就是一个“微服务”,

      

      service定义了一个服务的访问入口地址,前端应用通过这个入口地址访问其背后的由Pod组成的集群实例。Service与其后端的Pod集群通过Label Selector实现“无缝对接”。

      

           客户端如何访问后端服务?

       一般的作坊式部署一个负载均衡器,为这组Pod开启一个对外的服务端口如8000,并且将这些Pod的Endpoint列表加入8000端口的转发列表,负载均衡器通过一定的算法实现转发。

      K8s的做法与上述类似:运行在每个Node上的kube-proxy进程其实就是一个智能的软件负载均衡器,负责把对Service的

    请求转发到后端的某个Pod实例上。

       

    创建service:

      # kubectl create -f tomcat-server.yaml

      

      

      

  • 相关阅读:
    转:马云邮件全文
    XIFF资料1
    代码还是请一个字母一个字母敲(如果您只想混口饭吃就不要读了本文只面向想成为hacker的程序员)
    一个本来很有希望的项目噶然而止,脑子一下子空了
    转:进京感受一个技术人职业发展心得
    java中定义接口
    两个大数相乘(纯C实现)
    [ios学习入门1]hello,word!
    两台电脑通信的连接过程
    谁说引用不可改变
  • 原文地址:https://www.cnblogs.com/liufei1983/p/9069863.html
Copyright © 2020-2023  润新知