为了帮助大家更好地理解 Kubernetes 架构,我们部署一个应用来演示各个组件之间是如何协作的。
执行命令
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iN1ETOyczN5ATMtMDN0QTMzUzNwEjMxADOxAjMtUjNzUzN38CXxADOxAjMvwVN2MTN3czLcd2bsJ2Lc12bj5ycn9Gbi52YucTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
等待一段时间,应用部署完成。
Kubernetes 部署了 deployment <code>httpd-app</code>,有两个副本 Pod,分别运行在 <code>k8s-node1</code> 和 <code>k8s-node2</code>。
详细讨论整个部署过程。
① kubectl 发送部署请求到 API Server。
② API Server 通知 Controller Manager 创建一个 deployment 资源。
③ Scheduler 执行调度任务,将两个副本 Pod 分发到 k8s-node1 和 k8s-node2。
④ k8s-node1 和 k8s-node2 上的 kubectl 在各自的节点上创建并运行 Pod。
补充两点:
应用的配置和当前状态信息保存在 etcd 中,执行 <code>kubectl get pod</code> 时 API Server 会从 etcd 中读取这些数据。
flannel 会为每个 Pod 都分配 IP。因为没有创建 service,目前 kube-proxy 还没参与进来。
Kubernetes 架构就讨论到这里。从下节开始,我们将通过实践深入学习 Kubernetes 的各种特性。作为容器编排引擎,最重要也是最基本的功能当然是运行容器化应用。下节见。
书籍:
1.《每天5分钟玩转Docker容器技术》
<a href="https://item.jd.com/16936307278.html" target="_blank">https://item.jd.com/16936307278.html</a>
2.《每天5分钟玩转OpenStack》
<a href="https://item.jd.com/12086376.html" target="_blank">https://item.jd.com/12086376.html</a>
本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/2063499