k8s基本概念

目录

kubernetes架构

Master节点

API Server(kube-apiserver)

Scheduler(kube-scheduler)

Controller Manager(kube-controller-manager)

etcd

Node节点

kubelet

kube-proxy

Pod网络

典型的创建Pod流程

kubernetes基本概念

cluster

Master

Node

Pod

Controller


kubernetes架构

Master节点

master是kubernetes Cluster的大脑,运行着Daemon服务:kube-apiserver、kube-scheduler、kube-controller-manager、etcd和pod网络

API Server(kube-apiserver)

API Server提供HTTP/HTTPS RESTful API,是kubernetes Cluster的前端接口,各种客户端工具以及kubernetes其他组件可以通过它管理Cluster的各种资源

Scheduler(kube-scheduler)

Scheduler负责决定Pod放在那个Node上运行,Scheduler在调度时会充分考虑Cluster的拓扑结构,当前各个节点的负载,以及应用对高可用,性能,数据亲和性的需求

Controller Manager(kube-controller-manager)

Controller Manager负责管理Cluster各种资源,保证资源处于预期的状态

etcd

etcd负责保护Kubernetes Cluster 的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速地通知Kubernetes相关组件

Node节点

Node时Pod运行的地方,Kubernetes支持Docker,rkt等容器Runtime。Node上运行的Kubernetes组件有kubelet、kube-proxy和Pod网络

kubelet

kubelet时Node的agent,当Scheduler确定在某个Node上运行Pod后,会将Pod的配置信息发给Node节点的kubelet,它会根据配置信息创建并且运行容器,还会向master报告运行状态

kube-proxy

service代表了多个Pod,外界需要通过service访问Pod,service接收到请求会转发到kube-proxy服务,kube-proxy会自动实现负载均衡

Pod网络

Pod之间要能够相互的通信,必须部署Pod网络

典型的创建Pod流程

 

Pod部署的过程:

  1. kubectl会发送部署的请求到API Server

  2. API Server会通知Controller Manager要创建一个deployment资源

  3. Scheduler在执行调度任务,会将多个副本的Pod分发到Node节点上

  4. Node节点上的kubectl在各自的节点上创建并运行Pod

  • 应用的配置个当前的状态信息会保存到etcd中,当我们要查询当前运行的Pod时,API Server会从etcd中读取这些信息

  • 因为没有创建service,所以kube-proxy还没有参与进来

kubernetes基本概念

cluster

cluster是计算、存储和网络资源的集合,kubernetes利用这些资源运行各种基于容器的应用

Master

Master是Cluster的大脑,主要是负责调度,即决定将应用放在哪里运行

Node

Node职责是运行容器的应用,Node是Master来管理,Node负责监控并且汇报容器的状态,还根据master的要求来管理容器的生命周期

Pod

Pod是k8s的最小工作单元。每个pod包含一个或多个容器,pod中的容器会作为一个整体被master调度到一个node节点上运行,引入pod的两个目的:

  1. 可管理性:有的容器天生就是需要紧密联系,将多个容器放到一个pod中进行管理

  2. 通信个资源共享:pod中的所有容器使用同一个网络namespacce,就是相同的ip地址个port空间,可以用localhost通信

pods两种使用方式:

  • 运行单一容器

  • 运行多个容器

Controller

k8s通常不会直接创建Pod,是通过Controller来管理Pod,controller中定义了pod的部署个性,比如几个副本等。还有根据不同的业务场景,k8s提供了多种controller,包括deployment、replicaset、daemonset、statefuleset、job等

  • Deployment是最常用的Controller,它可以管理Pod的多个副本,并确保Pod按照期望的状态运行

  • ReplicaSet实现了Pod的多副本管理

  • DaemonSet用于每个Node最多只运行一个Pod副本的场景

  • StatefuleSet能够保证Pod的每个副本在整个生命周期中名称是不变的

  • Job用于运行结束就删除的应用,而其他的Controller中的Pod通常是长期持续运行的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值