Kubemetes基础概念

Posted ryhonour

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubemetes基础概念相关的知识,希望对你有一定的参考价值。

Kubemetes基础概念

1.1 K8s基础介绍

k8s是一个完备的分布式系统支撑平台,具有完备的集群管理能力。

技术图片

  • K8s service

    service(服务)是分布式集群架构的核心,一个server对象拥有如下关键特征

    • 拥有一个唯一指定的名字(如:mysql-server)
    • 拥有一个虚拟IP的端口号
    • 能够提供某种远程服务的能力
    • 被映射到了提供这种服务能力的一组容器应用上

1.2 K8s架构原理

  • kubernetes 架构

    • master 节点

      • api server :k8s网关,所有指令请求必须要经过api server
      • scheduler :调度器,使用调度算法,把请求资源调度某一个node节点
      • controller :控制器,维护k8s资源对象,比如故障检测、自动扩展、滚动更新。
      • etcd :存储资源对象
  • node 节点

    • docker :运行容器的基础环境,容器引擎。
      • kubelet :在每个node 节点都存在一份,在node节点上的资源指令由kubelet来执行。
      • kube-proxy :代理服务,负载均衡。
      • fluent :日志收集服务。
      • pod :是k8s管理的基本单位(最小单元),pod内部是容器。k8s不直接管理容器,而是管理pod。
  • 特点:

    • 一个master 对应一群 node 节点
    • master 节点不存储容器,只负责调度、网关、控制器、存储资源对象。
    • 容器是存储在 node 节点(容器是存储在pod内部的)
    • pod 内部可以有一个容器,或者是多个容器
    • kubelet负责本地的pod的维护
    • kube-proxy 负责负载均衡,在多个pod之间来做负载均衡

1.3 k8s核心组件原理

  • pod 的核心管理(封装一个或一组容器)

    • pod的结构是什么?
      • pod相当于一个容器,pod有独立的ip地址,也有自己的hostname,利用namespace进行资源隔离,独立沙箱环境。
      • pod内部封装的是容器,可以是一个或者多个容器(一组相关的容器)。
    • pod的网络
      • pod有自己独立的ip地址
      • pod内部容器之间的访问采用localhost访问
    • pod的用途?
      • 通常,在服务部署的时候,使用pod来管理一组相关的服务(一个pod中部署一个服务或一组有关系的服务)
    • 实现服务集群:
      • 只需要复制多份pod的副本即可。k8s如果继续扩容、缩容,只需要控制pod的数量即可。
    • pod 底层:
      • pod 内部容器创建之前,必须先创建pause容器。每个pod里运行着一个pause容器,其它容器则为业务容器,这些容器共享pause容器中的网络与Volume挂载卷,因此pod内部容器的通信和数据交换更加高效。
      • 服务容器之间访问使用localhost访问,相当于访问本地服务器一样,性能非常高
  • ReplicaSet 副本控制器(控制pod的数量)

    控制pod副本(服务集群)的数量,永远与预期设定的数量保持一致即可。当有pod服务宕机时,副本控制器会立马重新创建一个新的pod,永远保证副本与预期的一致。

    • 副本控制器:通过标签选择器(selector)--来维护一组相关的pod。每个pod可以指定一组相关的标签。
  • Deployment 资源部署对象(部署无状态服务)

    • 服务部署结构模型

      Deployment对象支持滚动跟新,通常和RplicaSet一起使用。

      技术图片

  • StatefuSet(部署有状态服务)

    • 状态服务的解释:

      • 有状态服务:
        • 有 实时 的数据需要存储。
        • 有状态服务集群中,把某一个服务抽离出去,一段时间后在加入机器网络,集群网络会无法使用。
      • 无状态服务:
        • 没有 实时 的数据需要存储。
        • 无状态服务集群中,把某一个服务抽离出去,一段时间后在加入机器网络,对集群服务没有任何影响。
    • 部署模型

      • StatefulSet保证pod重新建立后,hostname不会发生改变,pod就可以通过hostname来关联的数据。

1.4 K8s服务的注册于发现

  • pod在生产环境中的访问流程

    • pod如何对外提供服务访问?

      • pod如果想要对外提供服务的,必须绑定物理机的端口(在物理机上开启端口,让这个端口和pod的端口进行映射),这样可以通过物理机进行数据包的转发。

        技术图片

  • service如何实现负载均衡

    • 什么是service资源对象

      • POD IP :pod的ip地址
      • NODE IP :物理机的IP地址
      • cluster IP : 虚拟IP,是由kubernetes抽象出service对象,这个service对象就是一个VIP的资源对象。
    • 如何利用service来实现负载均衡

      技术图片

    • service VIP 原理:

      • service 和 pod 都是一个进程,service也不能对外网提供服务。
      • service 和 pod 之间可以直接进行通信,它们的通信属于局域网通信
      • 把请求交给service后,service使用(iptable,ipvs)做数据包的分发
      • service通过标签选择器与pod进行关联。

以上是关于Kubemetes基础概念的主要内容,如果未能解决你的问题,请参考以下文章

MLsys 基础概念汇总

基础概念OpenGLES(一)

c++ 基础概念

iOS中的OpenGL:基础概念

逻辑基础知识逻辑的含义

SpringCloud基础概念