Skip to main content

moregeek program

k8s 调度不合理解决方案如下-临时方案_赵承胜博客的博客-多极客编程

K8s问题一 ​

k8s 调度不合理解决方案如下-临时方案_github


服务获取pod ip (个人认为) 不合理,集群内部推荐使用cluster ip

集群外部使用




问题二​

K8s 调度不合理问题排查


方案一​


修改matser ,node节点 最大pod 数量 (需要评估总共pod 数量,以及各节点需要分配的pod 数量)以达到 均衡的目的


以下为本地实验案例没问题可以先上测试


修改master 节点数 数(多master 都需要修改)​

1、systemctl status kubelet.service

k8s 调度不合理解决方案如下-临时方案_github_02


cd /usr/lib/systemd/system/kubelet.service.d

vim 10-kubeadm.conf

k8s 调度不合理解决方案如下-临时方案_Shell脚本 + Metrics Se_03


vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--max-pods=40"

k8s 调度不合理解决方案如下-临时方案_Shell脚本 + Metrics Se_04



systemctl daemon-reload


systemctl restart kubelet

查看是否生效


systemctl status kubelet | grep max-pods

k8s 调度不合理解决方案如下-临时方案_Shell脚本 + Metrics Se_05




修改node 节点​

  1. 登录master节点,查看 192.168.40.181节点上pods个数(注意一定是-all-namespaces)
  2. 冻结该node节点kubectl cordon zcsnode1
  3. 删除多余的pods需要评估改节点承载的pods个数,比如25个,则需要delete 掉多余的pods
    Kubectl delete pods podsname
  4. 登录node修改kubelet的max-pods个数

vim /usr/lib/systemd/system/kubelet.service

k8s 调度不合理解决方案如下-临时方案_Shell脚本 + Metrics Se_06


  1. 修改/etc/kubernetes/kubelet,增加限制数量(没有就新增以下内容)



[root@zcsnode1 kubelet.service.d]# cat /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--fail-swap-notallow=false --max-pods=20"




6 修改/usr/lib/systemd/system/kubelet.service

k8s 调度不合理解决方案如下-临时方案_github_07



332 systemctl daemon-reload

333 systemctl restart kubelet

systemctl status kubelet |grep max-pods

k8s 调度不合理解决方案如下-临时方案_Shell脚本 + Metrics Se_08



7 解冻该节点

kubectl uncordon zcsnode1


查看此节点pod是否正常

k8s 调度不合理解决方案如下-临时方案_Shell脚本 + Metrics Se_09







方案二

Shell脚本 + Metrics Server + 计划任务

监控集群资源利用率

Metrics Server是一个集群范围的资源使用情况的数据聚合器。作为一个应用部署在集群中。Metric server从每个节点上Kubelet API收集指 标,通过Kubernetes聚合器注册在Master APIServer中。

项目地址:https://github.com/kubernetes-sigs/metrics-server

kubectl top -> apiserver -> metrics-server -> kubelet(cadvisor)(https)


Metrics Server部署:节点部署

wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml

修改以下配置


- name: metrics-server​
image: zhaochengsheng/metrics-server #修改​
imagePullPolicy: IfNotPresent​
args:​
- --cert-dir=/tmp​
- --secure-port=4443​
- --kubelet-insecure-tls #修改不验证kubelet提供的https证书​
- --kubelet-preferred-address-types=InternalIP #修改使用节点IP连接kubelet


部署

Kubectl apply -f components.yaml


可以看到各节点的利用率

k8s 调度不合理解决方案如下-临时方案_Shell脚本 + Metrics Se_10



#! /bin/bash

#对实际使用内存大于75%的机器停止调度,对实际使用内存小于65%的 关闭调度

# 获取实际内存小于或等于65%的机器
memory_lt_65=`kubectl top nodes |awk '{if($5+0<=65) print $1}'`
# 获取实际内存大于或等于75%的机器
memory_gt_75=`kubectl top nodes |awk '{if($5+0>=75) print $1}'`
#获取已经关闭调度的机器
SchedulingDisabled=`kubectl get nodes |egrep -v "control-plane|master" |grep SchedulingDisabled | awk '{print $1}'`

# 如果有关闭调度的机器,判断其内存小于或等于65%,则放开调度
if [ -n "$SchedulingDisabled" ];then
for node in $SchedulingDisabled ;do
if [[ $memory_lt_65 =~ $node ]];then
kubectl uncordon $node
fi
done
fi
#如果有内存大于或等于75%的机器,判断其是否停止调度,如果没有,则停止调度
if [ -n "$memory_gt_75" ];then
for node in $memory_gt_75 ;do
if [[ $SchedulingDisabled =~ $node ]];then
echo $node is aleady cordorned
else
kubectl cordon $node
fi
done
fi

©著作权归作者所有:来自51CTO博客作者赵承胜博客的原创作品,请联系作者获取转载授权,否则将追究法律责任

kubernetes通过hostaliases自定义hosts_对你无可奈何的博客-多极客编程

背景: 今天突然就有了那么一个需求,记录一下:腾讯云的redis内网地址都是IP的方式。我们的服务注册在了nacos中。小伙伴本地测试链接上nacos(nacos开通了外网访问),获取redis中redis配置都是内网的redis IP故无法加入注册到集群。同事问我能不能将Redis ip设置成域名的方式,那样他本地好歹能做个假的解析做一个欺骗把服务启动起来?(懒得改代码毕竟) 正好就搜到了这两篇

容器指南之第一个容器_虚拟的现实的博客-多极客编程

1.安装1.1.Linux 上安装操作系统的配置安装可以参考 Linux 系统生产环境配置指南 ​​https://blog.51cto.com/waringid/5782872​​内核要求3.10或以上版本系统架构要求64位(x86_64)a、安装curl https://get.docker.com > /tmp/install_docker.shcat /tmp/install_doc

rocketmq 全链路灰度探索与实践_apacherocketmq的博客-多极客编程

本文作者:肖京,Spring Cloud Alibaba PMC,阿里云智能技术专家。01 全链路灰度背景介绍发布新版本时,为了有效、谨慎地验证新版本代码逻辑的正确性,通常会采用灰度发布,从而达到减小第一次变更影响面的目的。举个例子,应用的集合中可能会包含交易中心、商品中心、库存中心等多个模块。在一次新版本发布的过程中,可能有 feature 既修改了交易中心,又修改了商品中心。为了验证新版本的正

redis 部署文档_赵承胜博客的博客-多极客编程

redis 部署文档集群规划主节点从节点端口192.168.40.181/24192.168.40.180/247000添加用户groupadd -g 11111 redis;useradd -d /home/redis -g 11111 -u 11111 -m redis;echo 'redis:Zj!@#1022' | chpasswd;chage -M 99999 redis;usermod

容器指南之容器架构及常用指令_虚拟的现实的博客-多极客编程

1.Docker 系统架构Docker daemon:守护进程。通过 docker daemon 命令启动,它负责容器的创建、运行和监控,还负责镜像的构建和储存。Clinet:客户端。通过 HTTP 和 Docker 守护进程通信。Registry:寄存服务。负责存储和发布镜像。 1.1.底层技术cgroups,负责管理容器使用的资源(例如 CPU 和内存的使用)。namespace,负责容器之间

hummerrisk 入门3:开发手册_mb62f1cd5a97d30的博客-多极客编程

本文是 HummerRisk 的开发手册,介绍项目的结构及如何配置 HummerRisk 的开发环境和开发中的注意事项,快速参与到 HummerRisk 项目的开发中来。一、项目结构二、配置开发环境1、环境准备后端HummerRisk 后端使用了 Java 语言的 Spring Boot 框架,并使用 Maven 作为项目管理工具。开发者需要先在开发环境中安装 JDK 11 及 Maven。前端H

kubernetes通过hostaliases自定义hosts_对你无可奈何的博客-多极客编程

背景: 今天突然就有了那么一个需求,记录一下:腾讯云的redis内网地址都是IP的方式。我们的服务注册在了nacos中。小伙伴本地测试链接上nacos(nacos开通了外网访问),获取redis中redis配置都是内网的redis IP故无法加入注册到集群。同事问我能不能将Redis ip设置成域名的方式,那样他本地好歹能做个假的解析做一个欺骗把服务启动起来?(懒得改代码毕竟) 正好就搜到了这两篇

「开源摘星计划」harbor日志轮转:从日志优化harbor性能!_键客李大白的博客-多极客编程

【摘要】Harbor新版功能:日志轮转,从日志优化Harbor性能。 本文已参与「开源摘星计划」,欢迎正在阅读的你加入。 活动链接:​ ​https://github.com/weopenprojects/WeOpen-Star [文章来源]:《Harbor进阶实战》公众号 前言   在Harbor 2.6.0版本后,Harbor添加了日志轮换(logrotate)的功能。   默认情况下,H

「开源摘星计划」crane初体验(一):crane简介_键客李大白的博客-多极客编程

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。 活动链接:​ ​https://github.com/weopenprojects/WeOpen-Star [文章来源]:《Harbor进阶实战》公众号 一、Crane简介 官方网站:https://gocrane.io/ 代码仓库: https://github.com/gocrane/crane 1.1 Crane是什么? Crane

微服务开发平台 spring cloud blade 部署实践_rainbond的博客-多极客编程

本文介绍使用 Rainbond 快速部署 Spring Cloud Blade 微服务平台。Spring Cloud Blade 是一个由商业级项目升级优化而来的微服务架构,采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建,完全遵循阿里巴巴编码规范。提供基于 React 和 Vue 的两个前端框架用于快速搭建企业级的 SaaS 多租户微服务平台。 关于 Sp

tekton pipline概念及调用流程_杨恒泰的博客-多极客编程

官网:​​https://tekton.dev/docs/getting-started/tasks/​​概念:task:一个task即一个任务,一个任务运行一个podstep:一个task包含多个step。一个step包含一个容器taskrun:  task引用taskrun来运行taskpipline:由多个task组成的pipline(流水线)piplinerun:pipline引用pipl

如何排查:the connection to the server ip:6443 was refused - did you specify the right host or port_kiroct的博客-多极客编程

一、概述 1、k8s有时候会报错The connection to the server ip:6443 was refused - did you specify the right host or port ,本文档提供几种可能产生该报错的原因和排障思路。 三、发现问题 使用任意Kubectl 命令会报错:The connection to the server ip:6443 was ref