zoukankan      html  css  js  c++  java
  • centos7下kubernetes(4.kubernetes组件)

    Kubenetes cluster 由master和node组成

    Master是kubenetes的大脑。运行着以下进程:kube-apiserver、kube-scheduler、kube-controller-manager、etcd 和 Pod 网络(例如 flannel)。

    API Server(kube-apiserver)

    API Server 提供 HTTP/HTTPS RESTful API,即 Kubernetes API。API Server 是 Kubernetes Cluster 的前端接口,各种客户端工具(CLI或UI)以及kubenetes其他组件可以通过管理 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、serviceaccounts controller 等。不同的controller管理不同的资源。

    ETcd

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

    Pod网络

    Pod之间相互通信的网络,我们在部署的时候选择了flannel,还有其他选项可选

    node

    node是运行pod的地方,Kubernetes 支持 Docker、rkt 等容器 Runtime。 Node上运行的 Kubernetes 组件有 kubelet、kube-proxy 和 Pod 网络(例如 flannel)。

    kubelet:

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

    kube-proxy

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

    pod网络

    负责集群中的pod进行通信,例如我们部署的flannel

    几乎所有的 Kubernetes 组件本身也运行在 Pod 里

     kubectl get pod --all-namespaces -o wide

    这些pod默认的运行在kube-system的namespaces中

    kube-dns组件,它为cluster提供DNS服务。在执行集群初始化的时候作为组件安装。

    kubelet是唯一没有以容器形式运行的kubenetes的组件,在系统中以systemd服务的形式运行。

     

     kubernetes各组件的联系

    通过运行应用进行解析

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

    kubectl get deployment

    kubectl get pod  -o wide

    kubernetes部署了deployment httpd-app,有两个副本,分别运行在两个node上

      

    执行过程:

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

    2.API Server通知Controller manager创建一个deployment

    3.Scheduler执行调度任务,将两个副本pod分发到两个node上

    4.两个node分别执行创建并运行pod

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

       flannel会为每个POD都分配IP。

  • 相关阅读:
    Now Task
    数据库的死锁及解决
    Java小对象的解决之道——对象池(Object Pool)的设计与应用
    Java中的对象池技术
    npm install时报错 npm ERR!Windows_NT 6.1.7601
    Angular 入门学习
    React 之 Hello world
    react webpack.config.js 入门学习
    React/React Native 的ES5 ES6写法对照表
    ES5和ES6中对于继承的实现方法
  • 原文地址:https://www.cnblogs.com/lkun/p/9584183.html
Copyright © 2011-2022 走看看