kubernetes核心概念

kubernetes是Google在2014年开源的一个容器集群管理系统,kubernetes简称K8S。
kubernetes是用于容器化应用程序的部署,扩展和管理,目标是让部署容器化应用简单高效.

官网:http://www.kubernetes.io

官方文档

https://kubernetes.io/zh/docs/home/ 

 

 

创建一个pod的工作流程

 

master上的动作:首先提交一个创建资源json数据到apiserver里,apiserver收到请求,先将数据写到etcd的数据库,然后scheduler有个watch的机制,会实时监听apiserver接口,看有没有新的资源需要我进行调度的。一些后台的任务,比如一个应用,副本三个,也就是三个容器。也是由控制器controller-manager获取apiserver中,我负责的相关资源,判断到底有没有新的资源需要我调整的。

 

 

 

node上操作:当通过调度到指定的节点,kubelect获取实时watch监控apiserver数据,看看有没有分配到我这个节点的pod,有的话通过调用dockerapi,去创建具体的Cantainer(容器),然后通过kube-proxy代理访问这一批容器。

 

 

kubernetes/

├── master: 管理节点

│   ├── apiserver     整个系统对外得接口,集群的统一入口,各组件协调者,以RESTfulAPI提供接口服务,所有对象资源的增删改查和监听操作都交给APIserver处理再提交给Etcd存储.              

│   ├── controller-manager     管理控制器。 处理集群中常规后台任务,一个资源对应一个控制器.

│   ├── etcd             分布式键值数据库。用于保存集群状态数据,比如Pod、service等对象信息.

│   ├── kube-proxy  实现service得通信与负载均衡机制得组件

│   └── scheduler         调度器,对集群内部得资源进行调度. 根据调度算法为新创建的pod选择一个node节点,可以任意部署,可以部署在同一个节点,也可以部署在不同的节点上.

├── node : 计算节点(多个)

│   ├── docker        容器

│   ├── kubelet       启动pod和容器.  kubelet是master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个pod转换成一组容器.

│   └── kube-proxy      集群中每个节点得网络代理。  在node节点上实现pod网络代理,维护网络规则和四层负载均衡工作.

└── registry  :镜像仓库

Pod:

  • 最小部署单元
  • 一组容器得集合
  • 一个pod中得容器共享网络命名空间
  • pod是短暂得

controllers

  • Deployment: 无状态应用部署
  • StatefulSet:   有状态应用部署
  • DaemonSet:   确保所有Node运行同一个Pod
  • job:   一次性任务
  • Cronjob: 定时任务

Service

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

 Label:  标签:附加到某个资源上,用于关联对象,查询和筛选

 Namespaces命名空间。将对象逻辑上隔离

官方提供的三种部署方式

minikube
Minikube是一个工具,可以在本地快速运行一个单点kubernetes,仅用于尝试kubernetes或日常开发的用户使用.

部署地址:https://kubernetes.io/doce/setup/minikube/

kubeadm

kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署kubernetes集群.

部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/

二进制

推荐,从官方下载发行版的二进制包,手动部署每个组件,组成kubernetes集群.

下载地址:https://github.com/kubernetes/kubernetes/

 

posted @ 2020-10-29 20:01  翟超  阅读(118)  评论(0)    收藏  举报