当前位置: 首页 > news >正文

遂宁网站seo成都谷歌seo

遂宁网站seo,成都谷歌seo,北京网站开发价格,网站的管理跟新维护有哪些背景 1.28.2 版本 k8s 中的一台 worker 节点内存异常,需要关机换内存,正好可以测试一下 pod 的迁移。 发现 deployment 管理的 pod 是能够重新创建飘到其他节点上的,但是 statefulset 管理的 pod 一直处于 Terminating 状态无法迁移&#…
背景

1.28.2 版本 k8s 中的一台 worker 节点内存异常,需要关机换内存,正好可以测试一下 pod 的迁移。

发现

deployment 管理的 pod 是能够重新创建飘到其他节点上的,但是 statefulset 管理的 pod 一直处于 Terminating 状态无法迁移,pod 就一直无法提供服务。官方文档中解释如下:

当某节点关闭但 kubelet 的节点关闭管理器未检测到这一事件时, 在那个已关闭节点上、属于 StatefulSet 的 Pod 将停滞于终止状态,并且不能移动到新的运行节点上。 这是因为已关闭节点上的 kubelet 已不存在,亦无法删除 Pod, 因此 StatefulSet 无法创建同名的新 Pod。 如果 Pod 使用了卷,则 VolumeAttachments 不会从原来的已关闭节点上删除, 因此这些 Pod 所使用的卷也无法挂接到新的运行节点上。 所以,那些以 StatefulSet 形式运行的应用无法正常工作。 如果原来的已关闭节点被恢复,kubelet 将删除 Pod,新的 Pod 将被在不同的运行节点上创建。 如果原来的已关闭节点没有被恢复,那些在已关闭节点上的 Pod 将永远滞留在终止状态

解决办法

官方提供的解决办法是给该节点添加一个 NoExecute 的污点。尝试发现并不行,而且 node 长期处于 NotReady,node control 会给该节点自动添加 NOExecute 的污点。

有尝试过升级 k8s 版本到 1.31.1,发现也并不行。

后续搜索发现可以强制删除节点上的 pod,原理是强制删除不需要等待该节点上的 kubelet 的响应。

kubectl delete pod "pod_name" -n "namespace" --grace-period=0 --force

我们可以创建 deployment 来定时查找长期处于 Terminating 状态的 pod,或者说是 cronJob。

编写查询并删除 pod 的脚本 configmap:

apiVersion: v1
kind: ConfigMap
metadata:name: delete-terminating-pods-scriptnamespace: ops  
data:delete_terminating_pods.sh: |#!/bin/bashtemp_file="/tmp/terminating_pods.txt"> "$temp_file"while true; dokubectl get pod -A | grep Terminating | awk '{print $1,$2}' > "$temp_file"sleep 60kubectl get pod -A | grep Terminating | awk '{print $1,$2}'| while read namespace pod_name; doif grep -q "$namespace $pod_name" "$temp_file"; then  #避免删除优雅退出的 podkubectl delete pod "$pod_name" -n "$namespace" --grace-period=0 --forcefidone> "$temp_file"sleep 60done

创建一个 ServiceAccount 并给予权限

apiVersion: v1
kind: ServiceAccount
metadata:name: delete-terminating-pods-sanamespace: ops
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: pod-deleter
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "list", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: delete-terminating-pods-crb
subjects:
- kind: ServiceAccountname: delete-terminating-pods-sanamespace: ops
roleRef:kind: ClusterRolename: pod-deleterapiGroup: rbac.authorization.k8s.io

编写一个 deployment,kubectl 的版本与自己集群版本相同即可

apiVersion: apps/v1
kind: Deployment
metadata:name: kubectlnamespace: ops
spec:replicas: 1selector:matchLabels:app: kubectltemplate:metadata:labels:app: kubectlspec:serviceAccountName: delete-terminating-pods-sacontainers:- name: kubectl-containerimage: bitnami/kubectl:1.31.1command: ["/bin/bash", "/scripts/delete_terminating_pods.sh"]volumeMounts:- name: script-volumemountPath: /scriptsvolumes:- name: script-volumeconfigMap:name: delete-terminating-pods-script

到此就可以自动发现并删除 节点意外情况 sts 管理的 pod 了,有更好的办法评论区可以留言。

http://www.hrbkazy.com/news/46195.html

相关文章:

  • 英文网站 字体大小最火网站排名
  • 网站排名消失网络服务合同
  • 计算机关于网站开发的证书百度网络推广怎么做
  • 微信网站后台营销推广计划怎么写
  • 中国万网怎么自己做网站网络推广公司是干什么
  • ubc网站谁做的流程优化
  • 网站开发合同履约网站宣传推广策划
  • 哪个网站做长图免费转高清seo线下培训机构
  • 网站建设报价模板下载海外推广
  • 政府类门户网站cms怎么去做网络推广
  • 做微商卖产品在哪个网站销量能好点程序员培训机构排名
  • 12306网站做的好还是百度做的好黑帽seo是作弊手法
  • 桃城网站建设公司广告宣传方式有哪些
  • 做网站快速排名优化网站排名软件
  • 宝鸡网站制作北京最新疫情最新消息
  • 微网站免费模板网络推广的主要内容
  • 湘潭做网站凡科建站官网
  • 如何模仿网站模板网站优化网络推广seo
  • 陕西省西咸新区开发建设管理委员会官方网站dz论坛如何seo
  • 网站验证码原理网站登录入口
  • 上海网站建设公司地址公众号推广
  • 业务网站制作成都移动seo
  • 三个字公司名字大全必过长春seo
  • 广州商城网站建设湖南网络推广排名
  • 做俄语网站建设重庆做seo外包的
  • wordpress成品网站yunbuluo百度关键词推广方案
  • 洛阳做网站公司电话今天最新的新闻头条新闻
  • 在线营销单页网站制作东莞产品网络推广
  • 什么网站可以做论坛app网站推广文章
  • 免费看电视的网站有哪些淘宝关键词排名优化