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

顺德网站建设信息模板网站建站公司

顺德网站建设信息,模板网站建站公司,余姚网站建设公司,搭建一个微信小程序要多少钱背景 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.hkea.cn/news/707082/

相关文章:

  • 东营新闻网今日头条常州网站seo
  • 东莞全网合一网站黄页引流推广网站软件免费
  • wordpress的数据库在那里百度seo如何快速排名
  • wordpress手机客服代码免费seo快速排名工具
  • web网站开发作品关键词歌词图片
  • 汕头行业网站seo培训公司
  • 网站背景图片优化关键词歌曲免费听
  • 郑州做网站哪家专业我要发布信息
  • 西安做网站优化的公司石家庄seo按天扣费
  • 2022年西安封城通知自动app优化下载
  • 无锡做网站哪家公司好一个公司可以做几个百度推广
  • 专题网站建设工作关键词林俊杰无损下载
  • adobe 网站开发软件软文写作兼职
  • 英文网站建设 淮安免费培训网站
  • 隔离需要多少钱湖南网站seo找行者seo
  • wordpress简单企业站seo怎么刷排名
  • 网站建设与运维泉州全网推广
  • 网站建站哪个公司好一点营销咨询服务
  • 值得玩的网页游戏北京seo营销培训
  • 中国建设银行网站分期通百度推广登录平台网址
  • 公司内部网站源码新闻软文推广案例
  • vf建设银行网站谷歌seo排名
  • 如何申请商业服务器武汉seo工厂
  • 祥云平台英文网站微博指数查询入口
  • 公司网站建设准备资料今日重大财经新闻
  • 发布网站后备案免费网站建站页面
  • 浙江建设职业技术学院迎新网站做一个网站要多少钱
  • axure做网站好不好手机百度问一问
  • 开发微信小程序的流程广州seo优化电话
  • 小企业网站建设和管理全能搜