k8s架构、基本概念

k8s总架构:

Master节点:

(默认不参加工作)

kubectl:k8s是命令端,用来发送客户端的操作指令

k8s的原生组件:(部署k8s比必不可少的组件)

API server:是k8s集群的前端接口,各种客户端工具以及k8s的其他组件可以通过它管理k8s集群的各种资源,它提供了HTTP/HTTPS RESTful API,即k8s API

Scheduler:负责决定将Pod放在哪个Node上运行,在调度时,会充分考虑集群内的拓扑结构,当前各个节点的负载情况,以及对高可用、性能、数据和亲和性需求

Controller Manager:负责管理集群的各种资源,保证资源处于预期的状态,它由多种Controller组成,包括Replication Controller、Endpoints Controller、Namespace Controller、Serviceaccounts Controller等等

扫描二维码关注公众号,回复: 8767465 查看本文章

Etcd:负责保存k8s集群的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速的通知k8s相关组件。第三方组件,意味着它有可替换方案,比如:Consul、zookeeper

Pod:k8s集群的最小组成单位,一个Pod内,可以运行一个或多个容器,大多数情况下,一个Pod内只有一个Container容器

Flannel:是k8s集群网络解决方案,可以保证Pod的跨主机通信。第三方解决方案,也有替换方案

Node节点:

kubelet:它是Node的agent(代理),当Scheduler确定某个Node上运行Pod之后,会将Pod的具体配置信息发送给该节点的kubelet,kubelet会根据这些信息创建和运行容器,并向Master报告运行状态

kube-proxy:负责将访问service的TCP/UDP数据流转发到后端容器,如果有多个副本,kube-pory会实现负载均衡

运行一个例子:

//创建一个deployment资源对象。Pod控制器

[root@master ~]# kubectl  run  test-web  --image=httpd  --replicas=2

分析各个组件的作用以及架构流程:

  1. kubectl发送部署请求到API server
  2. API server通知Controller Manager创建一个Deployment资源
  3. Scheduler执行调度任务,将两个副本Pod分发到node01和node02上
  4. node1和node02上的kubelet在各个节点上创建并运行Pod

补充:

  1. 应用的配置和当前的状态信息报错在etcd中,执行kubectl get pod时API server会从etc中读取这

些数据

  1. flannel会为每个Pod分配一个IP,但此时没有创建Service资源,目前kube-pory还没有参与进来

发布了35 篇原创文章 · 获赞 22 · 访问量 2573

猜你喜欢

转载自blog.csdn.net/weixin_45636702/article/details/104060979
今日推荐