彻底删除pod有两种方式,删除创建该pod的控制器,或者删除该pod所在的namespace

1、服务部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1、部署nginx
[root@master ~]# kubectl create deployment nginx --image=nginx:1.14-alpine

# 2、暴露端口
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort

# 3、查看服务状态
[root@master ~]# kubectl get pods,service
NAME READY STATUS RESTARTS AGE
pod/nginx-86c57db685-fdc2k 1/1 Running 0 18m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 82m
service/nginx NodePort 10.104.121.45 <none> 80:30073/TCP 17m

# 4、最后在电脑上访问下部署的nginx服务

2、创建namespace

1
2
# 创建一个命名空间 dev
kubectl create namespace dev

3、删除namespace

1
2
# 删除命名空间dev
kubectl delete ns dev

4、创建pod

1
2
# 在上面的namespace下创建并运行一个包含nginx容器的Pod
kubectl run pod --image=nginx -n dev

5、查看pod

1
2
# 查看在命名空间dev下的pod
kubectl get pod -n dev

6、删除pod

1
2
# pod-864f9875b9-pcw7x为pod的名称,-n dev指定在哪个命名空间,若不指定则默认是default命名空间
kubectl delete pod pod-864f9875b9-pcw7x -n dev

7、通过yaml文件创建namespace、pod

nginxpod.yaml内容:(注意:这里并不创建控制器)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apiVersion: v1
kind: Namespace
metadata:
name: dev

---

apiVersion: v1
kind: Pod
metadata:
name: nginxpod
namespace: dev
spec:
containers:
- name: nginx-containers
image: nginx:1.17.1

执行命令创建namespace、pod

1
2
3
4
kubectl create -f nginxpod.yaml
# 输出
# namespace/dev created # namespacem名称为dev
# pod/nginxpod created # pod名称为nginxpod

查看资源

1
2
3
4
5
6
[root@master ~]#  kubectl get -f nginxpod.yaml
NAME STATUS AGE
namespace/dev Active 18s

NAME READY STATUS RESTARTS AGE
pod/nginxpod 1/1 Running 0 17s

删除资源

1
2
3
4
kubectl delete -f nginxpod.yaml
# 输出
# namespace "dev" deleted
# pod "nginxpod" deleted

8、推荐方式

创建/更新资源 使用声明式对象配置 kubectl apply -f XXX.yaml

删除资源 使用命令式对象配置 kubectl delete -f XXX.yaml

查询资源 使用命令式对象管理 kubectl get(describe) 资源名称

9、创建控制器(Deployment)、pod

1
2
3
4
# 在命名空间dev下创建了控制器nginx1和pod(名称格式:nginx1-79d7bd676b-d82nx)
# 注意这里是Deployment控制器,所以使用的是deploy,其他类型的控制器的命令不同
# kubernetes版本高于1.2时,默认创建的是Deployment类型的控制器
kubectl run nginx1 --image=nginx:1.17.1 --port=80 --namespace dev

10、删除控制器(Deployment)

1
2
3
# 删除Deployment类型的控制器nginx1后,尤其创建的pod(nginx1-79d7bd676b-d82nx)也自动被删除了
# 注意这里是Deployment控制器,所以使用的是deploy,其他类型的控制器的命令不同
kubectl delete deploy nginx1 -n dev

11、获取pod的ip

1
2
3
[root@master ~]# kubectl get pods -n dev -o wide
NAME READY STATUS RESTARTS AGE IP NODE ...
nginx-5ff7956ff6-fg2db 1/1 Running 0 190s 10.244.1.23 node1 ...