zoukankan      html  css  js  c++  java
  • 八、Kubernetes 架构(下)

    八、Kubernetes 架构(下)

    ​ 上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点。

    (一)node

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

    (1)kubelet

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

    (2)kube-proxy

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

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

    (3) Pod 网络

    Pod 要能够相互通信,Kubernetes Cluster 必须部署 Pod 网络,flannel 是其中一个可选方案。

    (二)架构图

    ​ 你可能会问:为什么 k8s-master 上也有 kubelet 和 kube-proxy 呢?

    ​ 这是因为 Master 上也可以运行应用,即 Master 同时也是一个 Node。几乎所有的 Kubernetes 组件本身也运行在 Pod 里,执行如下命令:

    root@k8s-master:~# kubectl get pod --all-namespaces -o wide
    NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE    IP           NODE          NOMINATED NODE   READINESS GATES
    kube-system   coredns-6d56c8448f-9grxk             1/1     Running   0          104m   10.244.0.3   k8s-master    <none>           <none>
    kube-system   coredns-6d56c8448f-mrx55             1/1     Running   0          104m   10.244.0.2   k8s-master    <none>           <none>
    kube-system   etcd-k8s-master                      1/1     Running   0          105m   10.0.0.41    k8s-master    <none>           <none>
    kube-system   kube-apiserver-k8s-master            1/1     Running   0          105m   10.0.0.41    k8s-master    <none>           <none>
    kube-system   kube-controller-manager-k8s-master   1/1     Running   0          105m   10.0.0.41    k8s-master    <none>           <none>
    kube-system   kube-flannel-ds-cqwqv                1/1     Running   0          99m    10.0.0.41    k8s-master    <none>           <none>
    kube-system   kube-flannel-ds-nh2qg                1/1     Running   0          89m    10.0.0.43    k8s-node-02   <none>           <none>
    kube-system   kube-flannel-ds-wbrs6                1/1     Running   0          88m    10.0.0.42    k8s-node-01   <none>           <none>
    kube-system   kube-proxy-45prh                     1/1     Running   0          104m   10.0.0.41    k8s-master    <none>           <none>
    kube-system   kube-proxy-g2c4x                     1/1     Running   0          89m    10.0.0.43    k8s-node-02   <none>           <none>
    kube-system   kube-proxy-jwvg5                     1/1     Running   0          88m    10.0.0.42    k8s-node-01   <none>           <none>
    kube-system   kube-scheduler-k8s-master            1/1     Running   0          105m   10.0.0.41    k8s-master    <none>           <none>
    root@k8s-master:~# 
    
    

    ​ Kubernetes 的系统组件都被放到  kube-system namespace中。这里有一个 kube-dns 组件,它为 Cluster 提供 DNS 服务,我们后面会讨论。kube-dns是在执行 kubeadm init 时(第 ⑤ 步)作为附加组件安装的。

    ​ kubelet 是唯一没有以容器形式运行的 Kubernetes 组件,它在 Ubuntu 中通过 Systemd 运行。

    root@k8s-master:~# systemctl status kubelet.service 
    ● kubelet.service - kubelet: The Kubernetes Node Agent
       Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
      Drop-In: /etc/systemd/system/kubelet.service.d
               └─10-kubeadm.conf
       Active: active (running) since Sun 2020-11-01 11:22:37 UTC; 1h 52min ago
         Docs: https://kubernetes.io/docs/home/
     Main PID: 78026 (kubelet)
        Tasks: 16 (limit: 4632)
       CGroup: /system.slice/kubelet.service
        
    
    

    ​ 为了帮助大家更好地理解 Kubernetes 架构,下节我们将部署一个应用来展示各个组件是如何协作的。

  • 相关阅读:
    hdu 3786 寻找直系亲属
    about the plan
    2013 ACM/ICPC Asia Regional Online —— Warmup1 1005 Balls Rearrangement
    poj 1833 给poj跪了 字典排序
    20170630总结
    20170701总结
    20170628总结
    20170629总结
    20170626总结
    20170627总结
  • 原文地址:https://www.cnblogs.com/cuiyongchao007/p/14323060.html
Copyright © 2011-2022 走看看