Kubernetes 通常不会直接创建 Pod,而是通过 Controller 来管理 Pod 的。为了满足不同的业务场景,Kubernetes 提供了多种 Controller,包括 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等。
下面我先介绍下其中最常用的 Deployment。Kubernetes 支持两种创建资源的方式:命令和配置文件。本文先使用前者。
一、运行 Deployment(使用命令方式)
1,开始运行
执行下面命令将部署包含两个副本的 Deployment,名字叫 nginx-deployment,容器的 image 为 nginx:1.7.9。
1 | kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2 |
2,查看运行状态
(1)执行如下命令可以以查看 nginx-deployment 的状态,这里显示两个副本正常运行。
1 | kubectl get deployment |
(2)执行如下命令可以查看 nginx-deployment 的详细信息。
1 | kubectl describe deployment nginx-deployment |
由于 Deployment 是通过 ReplicaSet 来管理 Pod,可以看到这里创建了一名为 nginx-deployment-578fb949d8 的 ReplicaSet。
(3)执行如下命令可以显示当前所有的 ReplicaSet,其中 nginx-deployment-578fb949d8 的两个副本已经就绪:
1 | kubectl get replicaset |
(4)执行如下命令可以查看 nginx-deployment-578fb949d8 的详细信息。
1 | kubectl describe replicaset nginx-deployment-578fb949d8 |
可以看到此 ReplicaSet 是由 nginx-deployment 创建,并且其创建了两个副本 Pod。
(5)执行如下命令显示当前所有的 Pod,可以看到目前两个副本 Pod 都处于 Running 状态:
1 | kubectl get pod |
(6)执行如下命令可以查看 nginx-deployment-578fb949d8-nbn8b 这个 Pod 的详细信息。
1 | kubectl describe pod nginx-deployment-578fb949d8-nbn8b |
其中 Controlled By 指明此 Pod 是由 nginx-deployment-578fb949d8 这个 ReplicaSet 创建。而 Events 中 记录了 Pod 的启动过程。如果操作失败(比如 image 不存在),也能在这里查看到原因。
3,执行过程总结
上面样例我们部署了包含两个副本的 Deployment,整个执行流程如下:
用户通过 kubectl 创建 Deployment。
Deployment 创建 ReplicaSet。
ReplicaSet 创建两个 Pod。
从上图也可以看出,对象的命名方式是:子对象的名字 = 父对象名字 + 随机字符串或数字。
原文链接:https://www.hangge.com/blog/cache/detail_2429.html