我是007 发表于 2018-9-15 13:35:16

Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)

  上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点。
  Node 是 Pod 运行的地方,Kubernetes 支持 Docker、rkt 等容器 Runtime。 Node上运行的 Kubernetes 组件有 kubelet、kube-proxy 和 Pod 网络(例如 flannel)。
http://images2017.cnblogs.com/blog/775365/201801/775365-20180118073411959-299225303.png
  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/UPD 数据流转发到后端的容器。如果有多个副本,kube-proxy 会实现负载均衡。
  Pod 网络
  Pod 要能够相互通信,Kubernetes Cluster 必须部署 Pod 网络,flannel 是其中一个可选方案。
完整的架构图
  结合实验环境,我们得到了如下的架构图:
http://images2017.cnblogs.com/blog/775365/201801/775365-20180118073500709-1127648200.png
  你可能会问:为什么 k8s-master 上也有 kubelet 和 kube-proxy 呢?
  这是因为 Master 上也可以运行应用,即 Master 同时也是一个 Node。
  几乎所有的 Kubernetes 组件本身也运行在 Pod 里,执行如下命令:
kubectl get pod --all-namespaces -o widehttp://images2017.cnblogs.com/blog/775365/201801/775365-20180118073535974-1574165081.png
  Kubernetes 的系统组件都被放到 kube-system namespace 中。这里有一个 kube-dns 组件,它为 Cluster 提供 DNS 服务,我们后面会讨论。kube-dns是在执行 kubeadm init 时(第 ⑤ 步)作为附加组件安装的。
  kubelet 是唯一没有以容器形式运行的 Kubernetes 组件,它在 Ubuntu 中通过 Systemd 运行。
http://images2017.cnblogs.com/blog/775365/201801/775365-20180118073601943-1602842958.png
  为了帮助大家更好地理解 Kubernetes 架构,下节我们将部署一个应用来展示各个组件是如何协作的。
  http://www.cnblogs.com/Users/wanglei/%E7%99%BE%E5%BA%A6%E4%BA%91%E5%90%8C%E6%AD%A5%E7%9B%98/%E5%AE%B9%E5%99%A8/images/480.png?v=1510821977521书籍:
  1.《每天5分钟玩转Docker容器技术》
  https://item.jd.com/16936307278.html
  2.《每天5分钟玩转OpenStack》
  https://item.jd.com/12086376.html
https://image.ipaiban.com/upload-ueditor-image-20171205-1512465642434079417.png


页: [1]
查看完整版本: Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)