如何在Kubernetes中创建部署
部署表示一组相同的pod。部署运行应用程序的多个副本。它会自动替换任何失败的实例。它有助于确保应用程序的一个或多个实例始终处于运行状态。部署由Kubernetes部署控制器管理。部署使用Pod模板,其中包含Pod的规范。
Kubernetes部署是Kubernetes中的一个资源对象,它为应用程序提供声明性更新。
在本文中,我们将学习如何在Kubernetes中创建部署并对其执行操作。
准备工作
Kubernetes集群至少有一个工作节点。
创建一个部署 (Deployment)
创建一个文件并在其中添加以下部署定义。
$ vim my-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: labels: app: httpd-frontend name: httpd-frontend spec: replicas: 1 selector: matchLabels: app: httpd-frontend template: metadata: labels: app: httpd-frontend spec: containers: - image: httpd:2.4-alpine name: httpd
在本例中:
将创建名为httpd-frontend的部署,由
metadata:name
字段指定。部署将创建Pod的1个副本,由
replicas
字段指定。Pod模板或
spec:template
字段表示其Pod的标签为app:httpd frontend
。Pod模板的
specification或template:spec
字段表示Pods运行一个容器httpd,它运行版本2.4-alpine的httpd:image。
使用以下命令创建一个部署
$ kubectl create -f my-deployment.yaml
创建展开后,可以使用以下命令获取其详细信息。
$ kubectl get deployment | grep httpd-frontend
部署创建了一个副本集,要列出它,请使用以下命令。
$ kubectl get replicaset | grep httpd-frontend
可以使用以下命令列出由副本集创建的pod,该命令将列出与指定名称匹配的pod。
$ kubectl get pods | grep httpd-frontend
现在,我们可以通过删除pod来测试pod的自动创建。
要删除现有的pod,请使用以下命令。
$ kubectl get pods | grep httpd-frontend
$ kubectl delete pod httpd-frontend-74fd6fd8cd-8nj2s
$ kubectl get pods | grep httpd-frontend
我们可以看到pod是在删除现有pod之后创建的。
现在,即使复制集被删除,部署也会创建它。
要进行测试,请使用以下命令删除副本集。
$ kubectl get replicaset | grep httpd-frontend
$ kubectl delete replicaset httpd-frontend-74fd6fd8cd
$ kubectl get replicaset | grep httpd-frontend
我们可以看到即使在删除复制集之后,它仍然被创建了。
要查看更多关于pod的信息,可以在命令中使用“-o wide”,如下所示。
$ kubectl get pods | grep httpd-frontend`
$ kubectl get pods -o wide | grep httpd-frontend`
为了获得pod的完整信息,可以使用以下命令对其进行描述。
$ kubectl describe pod httpd-frontend`
现在,如果不再需要使用deployment部署应用程序,可以通过删除deployment来删除它。
使用以下命令删除deployment。
$ kubectl get deployment | grep httpd-frontend`
$ kubectl delete deployment httpd-frontend`
$ kubectl get deployment | grep httpd-frontend`
我们可以看到在删除部署之后并没有创建它。但是,如果删除在部署过程中创建的pod或replicset,那么它们就会被创建。
总结
在本文中,我们学习了创建部署deployment,并尝试了Pod、replicase和deployment上的删除操作。