当前位置:首页 » 云服务器 » 如何重启pod对应的服务器

如何重启pod对应的服务器

发布时间: 2023-05-12 06:31:51

① Pod生命周期和重启策略

Pod的 重启策略(RestartPolicy )应用于 Pod内!!! 所有容器 ,并且 仅在Pod所处的Node!!! 上由 kubelet 进行 判断大伏和重启 操作。

某个容器!!! 异常退裂仿并出或者健康检查(详见下节)失败时,kubelet将根据 RestartPolicy的设置 来进行相应的操作。

Pod的重启策略包括Always、OnFailure和Never,默认值为Always。

kubelet 重启失效容器 时间间隔 sync-frequency 乘以 2n 来计算,例如1、2、4、8倍等, 最长延时5min ,并且在成功重启后肆迹的10min后重置该时间。

Pod的重启策略与控制方式息息相关,当前 可用于管理Pod的控制器 包括 ReplicationController Job DaemonSet 直接通过kubelet 管理( 静态Pod )。

每种控制器 对Pod的 重启策略要求!!! 如下。

② K8S强制重启Pod并检查pod是否正常运行

记录两个k8s操作场景:

一. 重启pod (网上方法有很多种庆皮)
当没有yaml文件时

二. 对于pod运行的健康检查(一般都是写在脚本中做健康检查机誉尺差制)
第一种:
判断是否为Running状态

第二种:
判断执行状态

上面的困尘命令成功会输出:deployment "health-cloud-yxtx" successfully rolled out

③ kubectl重启某个pod或者强制停掉

由于项目起了多个节点,其中一个挂掉了,想要不用yaml。只重谨模启挂祥汪缓掉的这个,可用命令:
kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f -

同样的一个pod需要停掉执陵销行命令
kubectl get deployment -n NAMESPACE
kubectl delete deployment DEPLOYNAME -n NAMESPACE

④ Pod 中容器重启流程

测试的时候,通常需孙伍键要将 Pod 中的 container 频繁地杀死,重启。在这个过程中,Pod 的状态经常会出现 CrashLoopBackOff ,而且 container 重启的时间越来越长。

为了避免 container 频繁地 restart,k8s 对 container restart 过程做了限制,使用 back-off 的方法,官方文档中的说法是:

Failed containers that are restarted by Kubelet, are restarted with an exponential back-off delay, the delay is in multiples of sync-frequency 0, 1x, 2x, 4x, 8x … capped at 5 minutes and is reset after 10 minutes of successful execution.

这里先直接给出结论:

4 . 在步骤 3 中计算 backoff 的过程中,还会去检查当前橘陵时间距离上一次 container 退出时的间隔,如果大于 2 * MaxContainerBackOff = 10 minutes ,那么会将这个 container 对应的 backoff 重置为初始值 10s

通过源码发现, kubernetes/pkg/kubelet/kubelet.go 文件中有两个常量:

使用这两个变量构造了一则巧个 BackOff 对象,这个是 kubelet 的属性,对该 node 上所有 pod 都适用

BackOff 结构如下

然后在 SyncPod 方法中使用这个对象

SyncPod 具体做的事有:

同样在这个文件中,有一个关键的函数

其中 backOff.Next 函数定义如下

⑤ kubernetes 重启的几种方法

kubernetes 重启的几种方法

方法1
kubectl scale deployment XXXX --replicas=0 -n {namespace}
kubectl scale deployment XXXX --replicas=1 -n {namespace}

方判伍法2
kubectl delete pod {podname} -n {namespace}

方法旁棚3
kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -

方法4
Kubernetes 1.15开始才有运冲则

kubectl rollout restart {your_deployment_name}

⑥ k8s启动Pod遇到CrashLoopBackOff的解决方法

一贺游虚直正常运的k8s,集群节点没问题,但启动pod出现异常
等待中: CrashLoopBackOff

3.查看此pod日志

错误原因在这里 经查elasticsearch运行要求:
vm.max_map_count内核参数必需大于262114,确认系统调过 $sysctl -w vm.max_map_count=262144
这里注意的问题是 上述属于临时性调整,主机重启后又恢复到默认状态
记久性修改 vi /etc/sysconfig 加入:

保存/etc/sysctl.conf,重新启动服务器以应用更改,或执行:sysctl -p以应用更改而不重新启动.他们将在重新启动时永久保持.
重启pod 进入控制台 查询状态 恢复

4.总结 出现故障可能很多种 但要学查看日志 排查具体原因及应禅燃用所在磨码

⑦ 重启pod的三种方法

1.Rolling Restart
kubectl rollout restart deployment [deployment_name]
2.Using Environment Variables
kubectl set env deployment [deployment_name] DEPLOY_DATE="$(date)"

3: Scaling the Number of Replicas

kubectl scale deployment [deployment_name] --replicas=0
kubectl scale deployment [deployment_name] --replicas=1

⑧ 搭建预发环境

1. 首先要有一个ZOC7

2.按下图操作新建一个连接

host 内的配置如下

login内的配置如下,账号:aiyong 密码:yYbLgYB184

3. 点击connect 连接到预发慧档差地址

连接成功会出现下面这个界面

4. 在命令行输入

ssh 172.17.0.76

然后输入密码

hMsJjJY76

跳转到了一个新地址

5. 在命令行输入

kubectl get pod -n prepublish

能看到运行在机器上的所有pod镜像

我们的预发环境就是在对前皮应镜像内

6. 进入镜像

kubectl exec -it pod名字 bash -n prepublish

7.  例如我现在进入了 pre-aiyong-item-legacy-mitem-master-deployment-6db8d58847-4vrpp 这个镜像,输入命令ll可以看到该路径下所有文件,进入www/app/controllers 即对应我们项蠢裤目下的 contollers,修改本地的文件然后用    rz -y  命令上传该文件即可。

8.nginx配置路径

9.日志路径

/var/log/nginx

10. 重启pod

删除pod即可重启

kubectl delete pod pre-aiyong-item-legacy-mitem-master-deployment-6db8d58847-94p4p -nprepublish

热点内容
手机加密软件java 发布:2025-05-17 07:00:24 浏览:441
网页如何连接密码器 发布:2025-05-17 06:54:49 浏览:840
1压缩软件 发布:2025-05-17 06:53:11 浏览:305
ftp空格目录 发布:2025-05-17 06:50:51 浏览:476
上传的程序 发布:2025-05-17 06:50:49 浏览:693
linux查看安装路径 发布:2025-05-17 06:49:21 浏览:634
服务器404代表什么 发布:2025-05-17 06:39:51 浏览:559
我的世界龙蛋服务器 发布:2025-05-17 06:20:06 浏览:912
安卓系统软件怎么不更新 发布:2025-05-17 06:19:15 浏览:817
安卓夏日传说存档放哪个文件 发布:2025-05-17 06:12:44 浏览:606