zoukankan      html  css  js  c++  java
  • k8s pod如何重启

    在使用 docker 的过程中,我们可以使用docker restart {container_id}来重启容器,但是在 kubernetes 中并没有重启命令(没有 kubectl restart {podname}),有时候我们的 Pod 出现 Bug意外终止,导致我们需要重启 Pod ,却没有一个很好的方式,特别是没有 yaml 文件的情况下,所以我总结了以下几种重启 Pod 的方式。

    一、有yaml文件的重启方式

    在有 yaml 文件的情况下可以直接使用 kubectl replace --force -f xxx.yaml 来强制替换Pod 的 API 对象,从而达到重启的目的。如下:

    [root@k8s-master ~]# kubectl replace --force -f deployment-ngx.yaml 
    deployment.apps "deployment-ngx" deleted
    deployment.apps/deployment-ngx replaced
    [root@k8s-master ~]# kubectl get pods -o wide
    NAME                              READY   STATUS              RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
    deployment-ngx-5f4d48bb95-7dhmf   0/1     Terminating         0          14m   <none>           k8s-node1   <none>           <none>
    deployment-ngx-5f4d48bb95-k5k8l   0/1     Terminating         0          16m   <none>           k8s-node2   <none>           <none>
    deployment-ngx-5f4d48bb95-nqbpf   0/1     Terminating         0          16m   10.244.169.136   k8s-node2   <none>           <none>
    deployment-ngx-8ff559dc9-mtjlw    0/1     ContainerCreating   0          5s    <none>           k8s-node1   <none>           <none>
    deployment-ngx-8ff559dc9-z64q5    0/1     ContainerCreating   0          5s    <none>           k8s-node2   <none>           <none>
    ngx                               1/1     Running             0          21h   10.244.36.69     k8s-node1   <none>           <none>
    test                              1/1     Running             0          22h   10.244.36.68     k8s-node1   <none>           <none>
    test-nginx                        1/1     Running             0          21h   10.244.169.131   k8s-node2   <none>           <none>
    

      

    二、没有yaml文件的重启方式

    使用scale命令

    没有 yaml 文件,但是使用的是 Deployment 对象。可以使用以下方式重启

    [root@k8s-master ~]# kubectl scale deployment deployment-ngx --replicas=0
    deployment.apps/deployment-ngx scaled
    [root@k8s-master ~]# kubectl get pods -o wide
    NAME                             READY   STATUS        RESTARTS   AGE    IP               NODE        NOMINATED NODE   READINESS GATES
    deployment-ngx-8ff559dc9-mtjlw   0/1     Terminating   0          108s   <none>           k8s-node1   <none>           <none>
    deployment-ngx-8ff559dc9-z64q5   0/1     Terminating   0          108s   <none>           k8s-node2   <none>           <none>
    ngx                              1/1     Running       0          21h    10.244.36.69     k8s-node1   <none>           <none>
    test                             1/1     Running       0          22h    10.244.36.68     k8s-node1   <none>           <none>
    test-nginx                       1/1     Running       0          21h    10.244.169.131   k8s-node2   <none>           <none>
    

      

    由于 Deployment 对象并不是直接操控的 Pod 对象,而是操控的 ReplicaSet 对象,而 ReplicaSet 对象就是由副本的数目的定义和Pod 模板组成的。所以这条命令分别是将ReplicaSet 的数量 scale 到 0,然后又 scale 到 1,那么 Pod 也就重启了。

    直接删除Pod进行重启

    同样没有 yaml 文件,但是使用的是 Deployment 对象。查看deploy文件的重启策略,如果配置了重启策略。可以尝试删除重启:

     使用命令

    kubectl delete pod {podname} -n {namespace}
    

      

    这个方法就很简单粗暴了,直接把 Pod 删除,因为 Kubernetes 是声明式 API,所以删掉了之后,Pod API 对象就与预期的不一致了,所以会自动重新创建 Pod 保持与预期一致,但是如果ReplicaSet 管理的 Pod 对象很多的话,那么要一个个手动删除,会很麻烦,所以可以使用

    kubectl delete replicaset {rs_name} -n {namespace}
    

      

    命令来删除 ReplicaSet

    使用“-o yaml”参数导出Pod模板并重建Pod【推荐】

    没有 yaml 文件,直接使用的 Pod 对象。

    使用命令

    kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -
    

      

    在这种情况下,由于没有 yaml 文件,且启动的是 Pod 对象,那么是无法直接删除或者 scale 到 0 的,但可以通过上面这条命令重启。这条命令的意思是 get 当前运行的 pod 的 yaml声明,并管道重定向输出到 kubectl replace命令的标准输入,从而达到重启的目的。

    原文:https://blog.csdn.net/weixin_44666068/article/details/102808609

  • 相关阅读:
    Allegro PCB Design GXL (legacy) 使用slide无法将走线推挤到焊盘的原因
    OrCAD Capture CIS 16.6 导出BOM
    Altium Designer (17.0) 打印输出指定的层
    Allegro PCB Design GXL (legacy) 将指定的层导出为DXF
    Allegro PCB Design GXL (legacy) 设置十字大光标
    Allegro PCB Design GXL (legacy) 手动更改元器件引脚的网络
    magento产品导入时需要注意的事项
    magento url rewrite
    验证台湾同胞身份证信息
    IE8对css文件的限制
  • 原文地址:https://www.cnblogs.com/sucretan2010/p/14763851.html
Copyright © 2011-2022 走看看