如何删除Kubernetes部署

时间:2020-03-05 15:31:08  来源:igfitidea点击:

kubernetes部署运行了应用程序的多个副本,并自动替换任何失败或者未反应的实例。

当我们练习Kubernetes时,我们通常需要删除Kubernetes部署。

由于kubectl删除Deployments命令,删除部署很容易:

kubectl delete deployment deployment_name

使用步骤来获取部署名称,将更多详细讨论它。
我还将向我们展示另一种删除Kubernetes部署的方法。

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

虽然通常会完成选项卡,但我们将更好地使用要删除的部署的名称。

Hyman@theitroad:~# kubectl get deployments
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           4m22s

有一次部署名称后,只需使用它:

kubectl delete deployments my-dep

它应该显示一个输出,告诉我们部署已删除:

Hyman@theitroad:~/pod-create# kubectl delete deployments my-dep
deployment.apps "my-dep" deleted

我们可以通过检查可用部署来验证它:

Hyman@theitroad:~/pod-create# kubectl get deployments
No resources found in default namespace.
You Jan also use deploy or deployments (with an s) instead of deployment in the kubectl delete deployment command. It's all the same.

从特定名称空间删除Kubernetes部署

"kubectl删除部署"命令删除"默认"命名空间中存在的部署,除非我们提供不同的命名空间。

什么是Kubernetes中的名称空间?

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

例如,我们可以具有单独的命名空间来隔离工作负载以进行生产,暂存和开发环境。

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

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

Hyman@theitroad:~# 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

我们还可以列出所有命名空间的所有部署:

Hyman@theitroad:~# 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 deployment命令:

Hyman@theitroad:~# kubectl delete deployments --namespace=webapps webapps-dep
deployment.apps "webapps-dep" deleted

如我们所见,"WebApps-Dep"已被删除。

Hyman@theitroad:~# 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部署:

Hyman@theitroad:~/pod-create# kubectl delete deployment my-dep my-dep-2 --namespace=default

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

我们还可以使用Yaml配置文件删除与其关联的资源。

Hyman@theitroad:~/pod-create# kubectl delete -f deployment-definition.yml
deployment.apps "my-dep" deleted

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

使用Deployment-definition.yml文件创建新部署:

Hyman@theitroad:~# 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文件创建部署:

Hyman@theitroad:~/pod-create# kubectl apply -f deployment-definition.yml
deployment.apps/my-dep created

我们现在可以看到部署:

Hyman@theitroad:~# kubectl get deployments --all-namespaces
NAMESPACE     NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
default       my-dep                    2/2     2            2           1m13s

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

Hyman@theitroad:~/pod-create# kubectl delete -f deployment-definition.yml
deployment.apps "my-dep" deleted

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

Hyman@theitroad:~/pod-create# kubectl get deployments
No resources found in default namespace.