如何在Kubernetes中创建部署

时间:2019-04-29 03:17:12  来源:igfitidea点击:

部署表示一组相同的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上的删除操作。