k8sday09

解决昨天问题

1、重建集群

首先按照昨天所说删除已有集群,重建集群

bash 复制代码
  # 删除当前已有的集群
  # 这个my-multi-node-cluster1是我的集群的名字
  kind delete cluster --name my-multi-node-cluster1
  ​
  # 如果不知道自己集群叫什么,可以使用:
  kind get clusters
  ​
  # 转换到你新yaml文件的路径下(当然也可以不转,只不过下面的文件名用绝对路径即可)
  cd <你的路径>
  ​
  # 利用新的yaml文件,重建集群
  kind create cluster --config kind-cluster1.yaml --nam
  e my-multi-node-cluster1

成功后和我们第一次创建集群提示相同(可见k8sday03),如图:

2、HPA重新测压

由于昨天详细配置(除测压外)已全部演示(可见k8sday08),中间的什么创建有资源限制的Deployment,配置HPA均不再过多赘述,不过为了方便加深流程,我只给出粗略的中间步骤,详细进行最后一步。

bash 复制代码
  # 创建有资源限制的Deployment
   kubectl create -f nginx-deploy1.yaml
   
  # 部署metrics-server
  kubectl apply -f components.yaml
  ​
  # 创建HPA
  kubectl create -f text1-hpa.yaml

最终监测如图:

2.1新出现的问题

即使我的siege-deploy 虽然跑满了,但是我的nginx-deployment1始终cpu使用率是1%,达不到扩容标准

2.2原因

使用kubectl get svc发现我只有一个默认的kubernetes Service ,而 没有名为 nginx-deployment1 的 Service,因此 siege Pod 发出的请求根本打不到任何 nginx Pod,导致 HPA 监控不到负载

2.3解决方法:

立即创建 Service(把流量导到 nginx Pod)

之所以要 Service,是为了让 压力流量真正打到这些 Pod 上,否则 Pod 一直空转,CPU/内存永远上不去,HPA 自然不起作用。

Service 只是把外部流量导进来,让 Pod 真正"吃"到负载

bash 复制代码
  # 以下命令只会直接调用 apiserver 创建 Service 对象
  kubectl expose deployment nginx-deployment1 --name=nginx-deployment1 --port=80 --target-port=80
  ​
  # 查看已有的service服务
  kubectl get svc
2.4实施最终步骤
bash 复制代码
 # 创建测压deploy
  kubectl create -f siege-deploy.yaml
  ​
  # 验证是否创建成功
  kubectl get deploy
  kubectl get po
  ​
  # 双开实时监控自动扩容和缩容
  # HPA 在 CPU 利用率低于目标值(3%) 并持续默认 5 分钟后,会自动把副本缩回最小值
  kubectl get hpa -w
  ​
  # 暂停脚本(就是把Pod副本数设置为0即可)
  kubectl scale deployment siege-deploy --replicas=0
  # 重启脚本(同理修改replicas即可)
  kubectl scale deployment siege-deploy --replicas=<你想要的数量,越多压力越高>

默认CPU 利用率低于目标值持续一会才缩容哈

PS:由于我的疏忽,k8sday08给的测压脚本里有个地方写错了,导致会监测不到负载,大家记得改改哦!!!

++在command命令里的curl -s的for循环内的地址给nginx-deployment改为nginx-deployment1++

command: ........ for i in $(seq 50); do curl -s http://nginx-deployment1.default.svc.cluster.local &

​ ..........

PS:本来今天打算也把service的学习内容搞好的,但是今天是星期天,就少学一点吧~嘿嘿其实完全是因为懒,明天继续开始服务发现的学习(包含service和ingress)

相关推荐
代码游侠7 分钟前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
Lw老王要学习38 分钟前
CentOS 7.9达梦数据库安装全流程解析
linux·运维·数据库·centos·达梦
CRUD酱1 小时前
CentOS的yum仓库失效问题解决(换镜像源)
linux·运维·服务器·centos
zly35001 小时前
VMware vCenter Converter Standalone 转换Linux系统,出现两个磁盘的处理
linux·运维·服务器
Albert Edison2 小时前
【Python】函数
java·linux·python·pip
General_G2 小时前
Linux中的信号
linux·运维·服务器
迎仔2 小时前
13-云原生大数据架构介绍:大数据世界的“弹性城市”
大数据·云原生·架构
诸神缄默不语2 小时前
当无法直接用apt instll时,Linux如何离线安装软件包(以make为例)
linux·运维·服务器
小码哥0682 小时前
代驾系统微服务容器化部署与灰度发布流程
微服务·云原生·代驾系统·代驾·代驾服务·同城代驾
Sivan_Xin2 小时前
拒绝 If-Else 屎山:利用适配器模式(Adapter)构建第三方登录的“防腐层”实战
linux·python·适配器模式