k8s—扩容/缩容

本文详细介绍了如何在k8s V1.16.2版本中进行手动和自动扩容与缩容操作,包括通过命令行和dashboard进行手动调整,以及基于CPU利用率的自动扩缩容配置。同时,文章提到了由于版本更新,需要安装metrics-server作为新的指标监控来源,并提供了安装和验证的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:本文k8s的版本,使用的是V1.16.2

1. 手动命令扩容与缩容
#kubectl scale deployment/nginx-pod --replicas=2    #nginx-pod 是部署应用的名称,可以通过kubectl get deployment获取得到
    #以下是相关命令
    #kubectl get deployment
    #kubectl describe service/nginx-pod   #可以查看pods服务的详细情况

扩容与缩容命令相同,唯一改变的就是replicas的值,根据实际情况修改

2. 通过dashboard扩容与缩容

在deployments栏,找到需要操作的应用,点击最右边的"三点",然后会弹出 选择框,选择“sacle“,输入对应的数目即可。dashboard的安装详见
在这里插入图片描述

3. 根据cpu的利用率来自动扩容与缩容
官方文档:**https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/**

自动扩容与缩容的命令:

#kubectl autoscale deployment nginx-pod --cpu-percent=20 --min=1 --max=10
#上面参数意义:集群中至少维持1个pod,最多维持10个pods,进行扩容缩容是按照cpu的阈值来进行,这里设定20%,当然k8s不会按照20%这个值严格执行,例如k8s会认为15%-25%都是正常的,不会进行扩容与缩容

执行完上面的命令,k8s不能正常扩容与缩容:

#kubectl get hpa

在这里插入图片描述
从上图可以看到,targets一栏中出现了unknown,我们需要修改配置文件和安装指标采集工具。
1)配置文件,可以通过修改该应用的部署yaml文件,也可以通过dashboards修改,加入resource
在这里插入图片描述
ps: cpu单位后缀m代表“千分之一核心”,因此该资源对象指定容器进程需要50/1000的核心(5%)并且允许最多使用100/1000核心(10%)

#docker inspect 2cbd02547130 --format '{{.HostConfig.CpuShares}}' #查看资源的限制,2cbd……130是容器id
#值为51  #为什么51,而不是50?cpu控制组和docker都将核划分为1024个共享,而kubernetes将其划分为1000……

2)从某个版本(v1.9.0)后,不再支持从heapster获取指标监控来源,改成了metrics-server。下面首先讲解安装步骤:
a)在nodes上下载metrics-server镜像

docker pull bluersw/metrics-server-amd64:v0.3.6 #也可使用 mirrorgooglecontainers/metrics-server-amd64:v0.3.6
docker tag bluersw/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6

b)需要下载部署文件,然后部署,文件列表如下:
在这里插入图片描述
这些文件可以用其它方法一个一个拉取,我这里使用下载metrics-server源码,文件夹里面全部包含

#git clone https://github.com/kubernetes-incubator/metrics-server.git
#metrics-server/deploy/1.8+/   #该目录下包含步骤4中全部文件
#vim metrics-server-deployment.yaml   #在该文件中添加内容
    image: k8s.gcr.io/metrics-server-amd64  #在image下添加以下内容
    imagePullPolicy: IfNotPresent  #如果本地存在就从本地启动,否则从官网上拉取镜像再启动
        command:
        - /metrics-server
        - --metric-resolution=30s
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
#kubectl create -f .

到此 metrics-server已经安装完毕,可以查看该pods运行情况#kubtctl get pods -A

3)使用命令#kubectl get hpa,再次查看,targets一栏中显示正常了。
在这里插入图片描述
4)进行压测,观察pods数量的变化,经过脚本压测,一切正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值