• k8s入门知识介绍01


    [K8S中文社区](http://docs.kubernetes.org.cn/

    1 四组基本概念

    1. Pod/Pod控制器
    2. Name/Namespace
    3. Lable/Label选择器
    4. Service/Ingress

    1.1 PODPOD控制器

    kubernetes 的pod控制器

    1. Pod
      k8s里能够被运行的最小逻辑单元
      1个POD里面可以运行多个容器(SideCar 边车模式)
      POD中的容器共享 UTS/NAT/IPC 名称空间
      POD和容器颗粒理解为豌豆荚和豌豆
    2. Pod控制器
      Pod控制器是Pod启动的一种模板
      用来保证在K8S里启动的Pod始终按预期运行
      包括副本数生命周期健康检查等
    3. 常用的Pod控制器:

    度器名称

    用途简述

    Deployment

    用于管理无状态应用,支持滚动更新和回滚

    DaemonSet

    确保集群中的每一个节点上只运行一个特定的pod副本

    ReplicaSet

    确保pod副本数量符合用户期望的数量状态

    StatefulSet

    管理有状态应用

    Job

    有状态,一次性任务

    Cronjob(定时任务)

    有状态,周期性任务

    1.2 Name/Namespace

    1. Name
      K8S使用'资源'来定义每一种逻辑概念(功能)
      每种'资源'都应该有自己的'名称'
      '名称'通常定义在'资源'的元数据(metadata)信息中

    资源的配置信息包括

      • API版本(apiVersion)
      • 类别(kind)
      • 元数据(metadata)
      • 定义清单(spec)
      • 状态(status)
    1. Namespace
      名称空间用于隔离K8S内各种资源,类似K8S内部的虚拟分组
      同一个名称空间中,相同资源的名称不能相同
      默认的名称空间为default,kube-system,kube-public
      查询特定资源,要带上相应的名称空间

    1.3 Lable/Label选择器

    1. Lable
      标签的作用是便于分类管理资源对象
      标签与资源之间是多对多的关系
      给一个资源多个标签,可以实现不同维度的管理
    2. Lable选择器
      可以使用标签选择器过滤指定的标签
      标签选择器有基于等值关系(等于,不等于)和基于集合关系(属于,存在)的两种
      许多资源都支持内嵌标签选择器字段:matchLables或matchExpressions

    1.4 Service/Ingress

    1. Service(重点)
      POD会分配IP地址,但IP会随着POD销毁而消失
      多个同类型POD,IP或端口必然不同,但却相同的服务
      Service用来提供相同服务POD的对外访问接口
      Service通过标签选择器来确定作用于哪些POD
      Service只能提供L4层的调度,即:IP+端口
    2. Ingress(重点)
      Igress也是用来暴露POD的对外访问接口
      Igress提供L7层的调度,即http/https
      Igress可以调度不同业务域,不同URL路径的流量

    2 核心组件与核心附件

    1. 核心组件
      配置存储中心
      • etcd服务

    主控节点(master)

      • kube-apiserver服务
      • kube-controller-manager服务
      • kube-scheduler服务

    运算节点(node)

      • kube-kubelet服务
      • kube-proxy服务
    1. CLI客户端
      kubectl命令行工具
    2. 核心附件
      CNI网络插件(flannel/calico)
      服务发现插件(coredns)
      服务暴露插件(traefik)
      GUI管理插件(daahboard)

    2.1 核心组件功能

    1. 配置存储中心-etcd
      etcd是一个非关系型数据库,作用类似于zookeeper注册中心
      用于各种服务的注册和数据缓存
    2. kube-apiserver(master)
      提供季军管理的REST API接口,包括鉴权、数据校验、集群状态变更
      负责其他模块之间的数据交互,承担通信枢纽的功能
      和etcd通信,是资源配额控制的入口
      提供玩备的集群控制机制
    3. kube-controller-manager
      由一系列控制器组成,通过apiserver监控整个集群的状态,确保集群处于预期的工作状态
      是管理所有控制器的控制器
    4. kube-scheduler
      主要是接收调度POD到合适的node节点上
      通过apiserver,从etcd中获取资源信息进行调度
      只负责调度工作,启动工作是node节点上的kubelet负责
      调度策略:预算策略(predict)、优选策略(priorities)
    5. kube-kubelet
      定时从apiserver获取节点上POD的期望状态(如副本数量、网络类型、存储空间、容器类型等)然后调用容器平台接口达到这个状态
      提供POD节点具体使用的网络
      定时汇报当前节点状态给apiserver,以供调度
      复制镜像和容器的创建和清理工作
    6. kube-proxy
      是K8S在每个节点上运行网络的代理,service资源的载体
      不直接为POD节点提供网络,而是提供POD间的集群网络
      建立了POD网络和集群网络的关系(clusterIp->podIp)
      负责建立、删除、更新调度规则
      与apiserver通信,以更新自己和获取其他kube-proxy的的调度规则
      常用的调度模式:Iptables(不推荐)、Ipvs(推荐)

    2.2 K8S的三条网络

    视频教程中用到的图片

      1. 节点网络
        实际网络,就是宿主机网络
        建议地址段:10.11.0.0/24
        建议通过不同的IP端,区分不同的业务、机房或数据中心
      2. Pod 网络
        实际网络,容器运行的网络
        建议172.7.207.0/24 ,并建议POD网段与节点IP绑定
        如: 节点IP为10.11.0.207,则POD网络为172.7.207.0/24
      3. service网络
        虚拟网络,也叫集群网络(cluster server),用于内部集群间通信
        构建于POD网络之上, 主要是解决服务发现和负载均衡
        通过kube-proxy连接POD网络和service网络
        建议地址段为:192.168.0.0/16

    3 K8S流程图

    说明:

    主控节点和node节点只是逻辑上的概念,物理上可以部署在一起

  • 相关阅读:
    使用net start mysql的时候出现服务名无效的原因及解决办法
    Appium的安装
    cpu
    单例模式
    Java中Synchronized的用法(简单介绍)
    java随机数Reandom(简单介绍)
    多线程面试题
    线程和进程有什么区别(简单介绍)
    java多线程(简单介绍)
    servlet三种方式实现servlet接口
  • 原文地址:https://www.cnblogs.com/reblue520/p/14006873.html
Copyright © 2020-2023  润新知