如何删除 Kubernetes 部署 [Quick K8s Tips]

Kubernetes 部署运行应用程序的多个副本,并自动替换任何失败或无响应的实例。

在练习 Kubernetes 时,您经常需要删除 Kubernetes 部署。

借助 kubectl delete deployments 命令,删除部署很容易:

kubectl delete deployment deployment_name

我将通过获取部署名称的步骤更详细地讨论它。 我还将向您展示另一种在 Kubernetes 中删除部署的方法。

使用 kubectl delete deployment 命令删除 Kubernetes 部署

虽然它通常会完成选项卡,但最好使用要删除的部署的名称。

[email protected]:~# kubectl get deployments
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           4m22s

获得部署名称后,只需像这样使用它:

kubectl delete deployments my-dep

它应该显示一个输出,告诉您您的部署已被删除:

[email protected]:~/pod-create# kubectl delete deployments my-dep
deployment.apps "my-dep" deleted

您可以通过检查可用的部署来验证它:

[email protected]:~/pod-create# kubectl get deployments
No resources found in default namespace.

您也可以在 kubectl delete deployment 命令。 全部都是一样。

从特定命名空间中删除 Kubernetes 部署

kubectl delete deployments 命令删除存在于“默认”命名空间中的部署,除非您提供不同的命名空间。

Kubernetes 中的命名空间是什么?

命名空间旨在用于有许多用户分布在多个团队或项目中的环境。 它就像 Kubernetes 集群中的一个单独的虚拟集群。

为了 example,您可以使用单独的命名空间来隔离生产、暂存和开发环境的工作负载。

列出所有可用的命名空间及其部署

要查看所有命名空间,请使用以下命令:

[email protected]:~# kubectl get namespaces
NAME              STATUS   AGE
default           Active   46d
kube-node-lease   Active   46d
kube-public       Active   46d
kube-system       Active   46d
webapps           Active   22d

您还可以列出所有命名空间中的所有部署:

[email protected]:~# kubectl get deployments --all-namespaces
NAMESPACE     NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
default       my-dep2                   2/2     2            2           3h29m
kube-system   calico-kube-controllers   1/1     1            1           46d
kube-system   coredns                   2/2     2            2           46d
webapps       webapps-dep               2/2     2            2           5h19m

当您拥有命名空间和部署名称时,您可以将其指定给 kubectl delete 部署命令:

[email protected]:~# kubectl delete deployments --namespace=webapps webapps-dep
deployment.apps "webapps-dep" deleted

如你看到的, webapps-dep 已被删除。

[email protected]:~# kubectl get deployments --all-namespaces
NAMESPACE     NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
default       my-dep2                   2/2     2            2           3h29m
kube-system   calico-kube-controllers   1/1     1            1           46d
kube-system   coredns                   2/2     2            2           46d

删除多个部署

您可以通过提供如下名称来删除多个 Kubernetes 部署:

[email protected]:~/pod-create# kubectl delete deployment my-dep my-dep-2 --namespace=default

使用其 YAML 配置文件删除 Kubernetes 部署

您也可以使用 YAML 配置文件来删除与其关联的资源。

[email protected]:~/pod-create# kubectl delete -f deployment-definition.yml
deployment.apps "my-dep" deleted

让我一步一步地向你展示。

使用 deployment-definition.yml 文件创建一个新部署:

[email protected]:~# cat pod-create/deployment-definition.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-dep
  labels:
    app: webapp
  namespace: default

spec:
  template:
    metadata:
      name: my-dep-pods
      labels:
        app: webapp
        tier: front-end
    spec:
      containers:
        - name: httpd
          image: httpd
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 80
  replicas: 2
  selector:
    matchLabels:
      tier: front-end

使用上述 YAML 文件创建部署:

[email protected]:~/pod-create# kubectl apply -f deployment-definition.yml
deployment.apps/my-dep created

您现在可以看到部署:

[email protected]:~# kubectl get deployments --all-namespaces
NAMESPACE     NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
default       my-dep                    2/2     2            2           1m13s

现在,如果您出于删除目的引用相同的 YAML 文件,它将删除与该文件关联的资源(此处为部署)。

[email protected]:~/pod-create# kubectl delete -f deployment-definition.yml
deployment.apps "my-dep" deleted

您可以通过列出所有部署来验证它:

[email protected]:~/pod-create# kubectl get deployments
No resources found in default namespace.

希望你喜欢这个快速的 K8s 技巧。 我们将介绍更多 Kubernetes 教程。 订阅更多学习资料。