
K8S命令:重启pod的方法
1.restart命令
大于1.15版本直接用
kubectl rollout restart deploy <name>
方式1:使用replace命令替换
可以使用replace结合force选项进行重启,前提是有之前启动时所使用的yaml文件
[root@host131 ~]# kubectl replace --force -f busybox-pod-test.yaml
pod "test-pod" deleted
pod/test-pod replaced
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 0/1 ContainerCreating 0 3s
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 1/1 Running 0 4s
从结果中可以看出,此种方式实际上替换(replace)的过程是先进行删除然后再次创建的过程
方式2:无yaml文件的replace方法
执行命令:kubectl get pod pod名称 -n 命名空间名称 -o yaml | kubectl replace --force -f -
没有yaml文件时可以使用-o yaml生成,然后再进行replace,执行示例日志如下所示:
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 0/1 Completed 0 5m15s
[root@host131 ~]# kubectl get pod test-pod -n default -o yaml | kubectl replace --force -f -
pod "test-pod" deleted
pod/test-pod replaced
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 1/1 Running 0 13s
方式3:重新创建
相当于上述replace命令的手工执行,可以根据pod生成yaml文件进行创建,先生成创建的yaml文件
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 0/1 Completed 0 3m13s
[root@host131 ~]# kubectl get pod test-pod -n default -o yaml >ttt.yml
[root@host131 ~]#
然后删除pod
[root@host131 ~]# kubectl delete pod test-pod
pod "test-pod" deleted
[root@host131 ~]# kubectl get pods
No resources found in default namespace.
然后重新创建pod
[root@host131 ~]# kubectl create -f ttt.yml
pod/test-pod created
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 1/1 Running 0 6s
[root@host131 ~]#
方式4:设定restartPolicy
前提是使用了Deployment或者直接是restartPolicy的设定不是Never,比如是Always,示例如下所示:
[root@host131 ~]# cat busybox-pod-test.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: busybox-container
image: busybox:latest
command: ["sleep", "15"]
restartPolicy: Always
实际使用的时候可以看出,由于此restartPolicy的作用,pod变为completed的时候会立即被重启
[root@host131 ~]# kubectl get pods
No resources found in default namespace.
[root@host131 ~]# kubectl create -f busybox-pod-test.yaml
pod/test-pod created
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 1/1 Running 0 7s
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 0/1 Completed 0 25s
[root@host131 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pod 1/1 Running 1 28s
方式5:直接删除Pod
前提:使用Deployment等方式的时候,相当于在pod之上又封了一层,所以此时直接删除pod,会有Deployment根据策略进行管控,一般直接删除即可,也可以调整replica来实现类似的效果。