如何清理Kubernetes集群以部署新应用?kubeadm集群新手问询
卸载旧应用、清理资源及部署新应用指南
一、卸载旧示例应用
首先明确:kubeadm reset是用来销毁整个Kubernetes集群的,绝对不要用它来卸载单个应用,你的问题表述没问题,只是找错了操作方向。
1. 定位并删除应用相关资源
Kubernetes中应用由Deployment、Service、Pod、ConfigMap等资源组成,优先通过以下方式清理:
- 如果你是用YAML配置文件部署的旧应用,直接用原文件删除所有关联资源:
kubectl delete -f your-old-app.yaml - 不知道配置文件的话,先查看集群内所有资源,找到旧应用的资源名称:
然后逐个删除对应的资源,比如删除Deployment和Service:# 查看所有命名空间的资源 kubectl get all --all-namespaces # 或者限定到旧应用所在的命名空间(比如default) kubectl get all -n defaultkubectl delete deployment <旧应用deployment名称> kubectl delete service <旧应用service名称> - 如果旧应用的所有资源都在单独的命名空间下,直接删除整个命名空间会更彻底(自动清理该空间下所有资源):
kubectl delete namespace <旧应用所在命名空间>
2. 清理残留的异常Pod
偶尔会出现处于Terminating状态无法自动删除的Pod,可强制清理:
# 先找到异常Pod kubectl get pods --all-namespaces | grep Terminating # 强制删除指定Pod kubectl delete pod <异常Pod名称> -n <命名空间> --force --grace-period=0
二、清理节点上的镜像(可选)
如果旧应用的Docker镜像不再需要,可在每个节点(主节点+工作节点)上执行清理:
# 查看本地所有镜像 docker images # 删除指定镜像(用镜像ID或名称:tag) docker rmi <image-id> # 清理所有未被任何容器使用的镜像(谨慎操作,避免误删其他有用镜像) docker image prune -a
三、部署新应用
以部署一个简单的Nginx应用为例,步骤如下:
- 创建Deployment(管理Pod副本):
kubectl create deployment nginx-demo --image=nginx:latest - 暴露Service(对外提供访问入口):
# NodePort类型适合本地集群访问,会分配一个30000-32767之间的端口 kubectl expose deployment nginx-demo --port=80 --type=NodePort - 验证应用状态:
# 查看Deployment状态 kubectl get deployments # 查看Pod运行状态 kubectl get pods # 查看Service信息(获取NodePort端口) kubectl get services - 访问应用:用任意集群节点的IP加上Service的NodePort端口即可访问(比如
http://192.168.xx.xx:30xxx)。
如果有自定义的应用配置,推荐编写YAML文件来部署,方便后续维护和修改。
内容的提问来源于stack exchange,提问作者gis_iguess
相关产品推荐
相关产品推荐

