Skip to content
This repository has been archived by the owner on Jan 13, 2023. It is now read-only.

Latest commit

 

History

History
79 lines (79 loc) · 4.05 KB

concept.md

File metadata and controls

79 lines (79 loc) · 4.05 KB

1. k8s架构组件

kubernetes是一个用于自动部署、扩展和管理容器化应用程序的开源系统

 

1.1 k8s的基本架构

 

和一些分布式存储和分布式数据库集群类似,在k8s集群中,也存在着master节点和node节点

其中master节点主要负责pod调度、服务注册、服务发现等一系列管理相关的工作

node节点主要是部署pod,提供服务

 

在master节点中,有以下重要组件:

  • kube-apiserver
  • kube-controller-manager
  • kub-scheduler
  • etcd

在node节点中,有以下重要组件:

  • kubelet
  • kube-proxy
  • docker/rocket

 

1.2 master节点组件功能介绍

(1)kube-apiserver

  kubernetes API,集群的统一入口,各组件的协调者,以RESTful API提供接口服务

  所有对象资源的增删改查和监听操作都交给APIserver处理后提交给ETCD存储

(2)kube-controller-manager

  处理集群中常规后台任务,一个资源对应一个控制器,而controller-manager就是管理这些控制器的

(3)kube-scheduler

  根据调度苏算法为新创建的pod选择一个node节点部署

(4)etcd

  一个golang开发的分布式key-value数据库,主要负责存储集群的状态数据、

  etcd可以和多master组成一个etcd集群,也可以从master节点分离单独部署,只要保证APIserver可以访问etcd就可以

  当然由于rpc的不可靠性,etcd大多数情况下是部署在master节点上

 

1.3 node节点组件功能介绍

(1)kubelet

  kubelet是master节点在node节点上的代理agent,管理本机容器的生命周期,比如创建容器、pod挂载数据卷、下载secret、获取容器和节点的状态等

  kubelet将每个pod转换成一组容器进行部署

(2)kube-proxy

  在node节点上实现pod网络代理,维护网络规划和四层负载均衡工作

(3)docker/rocket

  底层容器引擎,运行和部署容器

 

2. k8s核心概念

2.1 Pod

  • 最小的部署单元
  • 多个容器的集合
  • pod内容器共享网络和数据
  • pod的生命周期短暂

 

2.2 Controller

  • Deployment:部署无状态应用,比如一些web服务
  • StatefulSet:部署有状态应用,比如mysql集群
  • DaemonSet:守护进程,确保所有node都运行某个pod,比如一些监控和日志收集服务
  • Job:一次性任务
  • Cronjob:定时任务,比如定时清理持久化文件等

 

2.3 Service

  • 防止pod失联
  • 定义一组pod的访问策略

 

2. k8s学习资源

最重要的学习资源就是k8s的官方文档:Kubernetes 文档 | Kubernetes

官方文档提供了很多部署案例和一些概念的深入讲解

 

阿里云的公开课:阿里巴巴云原生技术实践公开课-阿里云开发者社区 (aliyun.com)

CNCF x Alibaba 云原生技术公开课 - 云原生教程 - 阿里云全球培训中心 (aliyun.com)

 

另外就是k8s的源码学习,详见github,同时可以参考张磊的深入剖析k8s、郑东旭的k8s源码剖析