kubernetes整体架构及应用部署

183 篇文章 0 订阅
14 篇文章 0 订阅

 

kubernetes cluster由master和node组成,节点上运行着若干kubernetes服务。

(1).master节点:

master节点是Kubernetes Cluster的大脑,运行着daemon服务:kube-apiserver,kube-scheduler,kube-controller-manager,etcd和pod网络(例如calico)

 

API Server(kube-apiserver)

API Server提供http/https resful api,即kubernetes api,api server是kubernetes cluster的前端接口,各种客户端工具(cli或者ui)

以及kubernetes其他组件可以通过它管理cluster的各种资源。

 

scheduler(kube-scheduler)

scheduler负责决定将pod放在哪个node上运行,scheduler在调度时会充分考虑cluster的拓扑结构,当前各个节点的负载,以及应用对高可用,性能,数据亲和性的需求。

 

controller manager(kube-controller-manager)

controller manager负责管理cluster各类资源,保证资源处于预期的状态,controller manager 由多种 controller组成,包括replication controller,endpoints controller,namespace controller, service accounts controller等

不同的controller管理不同的资源,例如replication controller管理deplayment,statefulset,daemonset的生命周期,namespace controller管理namespace资源

 

etcd

etcd负责保存kubernetes cluster的配置信息和各种资源的状态信息。当数据变化时,etcd会快速的通知kubernetes相关组件

 

pod网络

pod要能够相互通讯,kubernetes cluster必须部署pod网络,flaneel,calico是其中的可选方案。

 

(2).node

node是pod运行的地方,kubernetes支持docker,rkt等容器runtime。node上运行的kubernetes组件有kubelet,kubelet-proxy和pod网络(例如calico,flannel)

kubelet

kubelet是node的agent,当scheduler确定在某个node上运行pod后,会将pod的具体配置信息(image,volume等)发送给节点kubelet,kubelet根据这些信息创建和运行容器,并向master报告运行状态。

 

kube-proxy

service在逻辑上代表了后端的多个pod,外界通过service访问pod。service接收到的请求是如何转发到pod的呢?这就是kube-proxy要完成的工作?

每个node都会运行kube-proxy服务,它负责将访问service的tcp/udp数据流转发到后端容器,如果有多个副本,kube-proxy会实现负载均衡

 

pod网络

pod能够互相通讯,kubernetes cluster必须部署pod网络。

架构图如下:

 

 

(3).实例部署

部署应用说明各个组件之间如何协作。

执行命令:

kubectl run httpd-app --image=httpd --replicas=2

 

等待一段时间,应用部署完成。

 

Kubernetes 部署了 deployment httpd-app,有两个副本 Pod,分别运行在 k8s-node1 和 k8s-node2。

详细讨论整个部署过程。

 

① kubectl 发送部署请求到 API Server。

② API Server 通知 Controller Manager 创建一个 deployment 资源。

③ Scheduler 执行调度任务,将两个副本 Pod 分发到 k8s-node1 和 k8s-node2。

④ k8s-node1 和 k8s-node2 上的 kubectl 在各自的节点上创建并运行 Pod。

补充两点:

    1. 应用的配置和当前状态信息保存在 etcd 中,执行 kubectl get pod 时 API Server 会从 etcd 中读取这些数据。

    2. flannel 会为每个 Pod 都分配 IP。因为没有创建 service,目前 kube-proxy 还没参与进来。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值