zoukankan      html  css  js  c++  java
  • k8s概念

    k8s中大部分概念如node/pod等都可以看做资源对象,k8s其实是一个高度自动化的资源控制系统,通过跟踪比对etcd里的资源期望状态和当前环境里的
    实际资源状态差异来实现自动控制和自动纠错的高级功能。
    在Kubernetes中创建对象时,必须提供描述其所需Status的对象Spec,以及关于对象(如name)的一些基本信息。k8s对象示例必填字段:apiVersion 、kind 、metadata及对象Spec,spec是容器组的定义。顺便提下k8s的Events概念,它是一个事件的记录,记录了事件的最早产生时间、最后重现时间等众多信息。

    Kubernetes集群的两种类型资源
    Master节点:协调控制整个集群。
    Nodes节点:运行应用的工作节点。
    1. Master组件负责整个集群的管理和控制。基本上所有的控制命令都发给它,命令都是在master节点上运行的,他来负责整体的执行过程,一般独自占一台机器,如果宕机或不可用,那么对容器应用的控制将失效。
    2. kube-apiserver用于暴露Kubernetes API,k8s所有资源增删改查操作的唯一入口。
    3. etcd是Kubernetes提供默认的存储系统,保存所有集群数据
    4. kube-controller-manager资源对象的自动化控制中心
    5. kube-schedule 负责资源调度的进程

    节点(Node)组件
    提供Kubernetes运行时环境,以及维护Pod。可以在运行期间动态增加到k8s集群中,前提是这个节点已正确安装

    kubelet负责pod对应容器的创建、启停等任务,同时与master密切协作,实现集群管理的基本功能
    kube-proxy 实现k8s service的通信和负载均衡的重要组件
    一个Node可以是VM或物理机。每个Node都会运行pod的一些必要服务包括Docker、kubelet和kube-proxy,并由Master组件进行管理
    –Node Status节点的状态信息包含:Addresses
    Condition 描述所有Running节点的状态。被表示为一个JSON对象。
    Capacity
    Info
    –与 pods 和 services 不同,node不是由Kubernetes 系统创建,
    目前,有三个组件与Kubernetes节点接口进行交互:节点控制器(node controller)、kubelet和kubectl。
    –Node是Kubernetes REST API中的最高级别资源。
    label Selector
    15、使用label和label Selector可以给对象创建多组标签,label和label Selector共同构成了k8s系统中最核心的应用模型,使得被管理对象能够被精细的分组管理,同时实现了整个集群的高可用性。

    namespaces
    kubernetes最重要的对象Pod。
    Kubernetes REST API中的所有对象都用Name和UID来明确地标识。
    Name在一个对象中同一时间只能拥有单个Name,删除一个namespace会自动删除所有属于该namespace的资源。命令行操作NameSpace:

    kubectl create namespace new-namespace
    kubectl create -f ./my-namespace.yaml
    kubectl delete namespaces new-namespace
    kubectl get namespaces //列出当前群集中的namespace
    1
    2
    3
    4
    volume
    Kubernetes Volume具有明确的生命周期 - 与pod相同。而Docker的Volume只是磁盘中的一个目录,生命周期不受管理。
    Kubernetes支持Volume类型有:emptyDir、hostPath等,只要Node上的Pod一直运行,Volume就会一直存在。
    当Pod(不管任何原因)从Node上被删除时,emptyDir也同时会删除,存储的数据也将永久删除。
    在同一个pod中的多个容器能够共享pod级别的存储卷volume。

    Annotations
    Annotations就如标签一样,也是由key/value组成:
    –构建、发布的镜像信息,如时间戳,发行ID,git分支,PR编号,镜像hashes和注Registry地址。
    –一些日志记录、监视、分析或audit repositories。
    –一些工具信息:例如,名称、版本和构建信息。
    –用户或工具/系统来源信息,例如来自其他生态系统组件对象的URL。
    –负责人电话/座机,或一些信息目录。

    pod
    Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。
    一个Pod封装一个应用容器(也可以有多个容器),存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。
    Pod代表部署的一个单位:Kubernetes中单个应用的实例,它可能由单个容器或多个容器共享组成的资源。有点类似serverrole
    –Pod中运行一个容器。“one-container-per-Pod”模式是Kubernetes最常见的用法;
    在这种情况下,你可以将Pod视为单个封装的容器,但是Kubernetes是直接管理Pod而不是容器。
    –如果Pods中运行多个需要一起工作的容器。它们之间能够共享资源,在单个Pod中共同管理多个容器是一个相对高级的用法
    –每个Pod被分配一个独立的IP地址,Pod可以指定一组共享存储volumes。
    【注意点】重启Pod中的容器跟重启Pod不是一回事。Pod只提供容器的运行环境并保持容器的运行状态,重启容器不会造成Pod重启。
    kubernetes中,pod大部分场景下只是容器的载体而已,通常需要通过Deployment、RC等对象来完成一组pod的调度和自动控制功能。

    replicaSets
    官方建议使用Deployment来管理ReplicaSets,这意味着我们不需要操作ReplicaSet对象,而是使用Deployment管理 。
    ReplicaSet(RS)副本集是Replication Controller(RC)的升级版本,用来保证pod的高可用
    通过监控运行中的pod来保证集群中运行指定数量的pod副本,少于指定数目就会根据模板创建,多了就会杀死多余的pod副本。
    replication理解为复制品、副本
    rc其实是定义了一个期望的场景,包含三个部分:期待的副本数(replicas),用于筛选目标pod的label selector,以及副本数量小于预期数时用于创建新pod的模板

    deployment
    你只需要在 Deployment 中描述您想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。

  • 相关阅读:
    Mysql 解压安装
    线程进程池,协程,IO模型
    并发编程 线程
    并发编程 进程
    socket 套接字
    网络编程
    面向对象(反射,元类) 排序方法
    面向对象(多态,类方法,魔法方法)
    Day22 面向对象(继承封装)
    php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期 转
  • 原文地址:https://www.cnblogs.com/mybxy/p/10065039.html
Copyright © 2011-2022 走看看