k8s水平扩容

标签: kubernetes k8s | 发表时间:2022-01-04 16:37 | 作者:
出处:https://www.bboy.app/

简介

k8s 的好处就是可以弹性水平扩容和纵向扩容,平时纵向扩容用的不太多,所以今天说说水平扩容,在创建hpa之前你要确定集群中已经安装了metrics-server,我使用的是k3s,直接自带

操作

基于

https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

首先创建需要的容器,下面是dockerfile

1     
2
3
FROM php:5-apache     
COPY index.php /var/www/html/index.php
RUN chmod a+rx index.php

下面是index.php

1     
2
3
4
5
6
7
<?php     
$x = 0.0001;
for ($i = 0; $i <= 1000000; $i++) {
$x += sqrt($x);
}
echo "OK!";
?>

原理就是当你访问index.php的时候会进行一个循环计算来提高cpu的使用率

编译镜像

docker build . -t registry.bboysoul.cn/hpa-example

然后推送到仓库

docker push registry.bboysoul.cn/hpa-example:latest

然后创建一个svc和deployment

1     
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
apiVersion: apps/v1     
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
replicas: 1
template:
metadata:
labels:
run: php-apache
spec:
imagePullSecrets:
- name: regcred
containers:
- name: php-apache
image: registry.bboysoul.cn/hpa-example:latest
ports:
- containerPort: 80
resources:
limits:
cpu: 500m
requests:
cpu: 200m

---

apiVersion: v1
kind: Service
metadata:
name: php-apache
labels:
run: php-apache
spec:
type: LoadBalancer
ports:
- port: 80
selector:
run: php-apache

svc类型是lb

kubectl apply -f deployment.yaml

之后创建hpa

1     
2
3
4
5
6
7
8
9
10
11
12
apiVersion: autoscaling/v1     
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50

指定当pod的cpu大于50%的时候扩展,而且最大的个数不超过10个

kubectl apply -f hpa.yaml

创建成功之后查看lb的ip,然后访问index.php

while sleep 0.01; do curl 10.10.100.167; done

之后使用下面命令查看pod的cpu情况

kubectl top pods -A

不出意外的话,等一段时间后pod就会自动增加

当你停止之后pod也会自动删除

欢迎关注我的博客 www.bboy.app

Have Fun

相关 [k8s] 推荐:

CentOS7 安装 K8S

- - 企业架构 - ITeye博客
前提:VirtualBox CentOS7. 物理机IP   192.168.18.8. 虚拟机1IP:192.168.18.100(VMaster master). 虚拟机2IP:192.168.18.101(VServer1 node1). 虚拟机3IP:192.168.18.102(VServer2 node2).

k8s水平扩容

- - Bboysoul's Blog
k8s 的好处就是可以弹性水平扩容和纵向扩容,平时纵向扩容用的不太多,所以今天说说水平扩容,在创建hpa之前你要确定集群中已经安装了metrics-server,我使用的是k3s,直接自带. 首先创建需要的容器,下面是dockerfile. 原理就是当你访问index.php的时候会进行一个循环计算来提高cpu的使用率.

k8s docker集群搭建 - CSDN博客

- -
一、Kubernetes系列之介绍篇.     - 一次构建,到处运行. 2.什么是kubernetes.   首先,他是一个全新的基于容器技术的分布式架构领先方案. Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg). 在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性.

深入掌握K8S Pod - Yabea - 博客园

- -
K8S configmap介绍. Pod是k8s中最小的调度单元,包含了一个“根容器”和其它用户业务容器. 如果你使用过k8s的话,当然会了解pod的基本使用,但是为了更好的应用,你需要深入了解pod的配置、调度、升级和扩缩容等. pod包含一个或多个相对紧密耦合的容器,处于同一个pod中的容器共享同样的存储空间、IP地址和Port端口.

浅谈 k8s ingress controller 选型 - 知乎

- -
大家好,先简单自我介绍下,我叫厉辉,来自腾讯云. 业余时间比较喜欢开源,现在是Apache APISIX PPMC. 今天我来简单给大家介绍下 K8S Ingress 控制器的选型经验,今天我讲的这些内容需要大家对 K8S 有一定的了解,下面是我的分享. 阅读本文需要熟悉以下基本概念:. 集群:是指容器运行所需云资源的集合,包含了若干台云服务器、负载均衡器等云资源.

SkyWalking探针在 k8s 中集成

- - 掘金 后端
最近公司需要在 k8s 环境接入 SkyWalking,要让应用无感知接入. 开始打算的是把agent文件放到基础镜像中,这样应用只需要引用包含agent的基础镜像即可. 但是这样会有几个问题,首先不好管理agent,升级需要应用重新打镜像部署,动静太大. 第二,不是所有应用都需要接入,要按需引入不同基础镜像,这样就多个一个步骤,应用会有感知.

记一次K8s排错实战

- - 掘金 后端
这是我参与更文挑战的第3天,活动详情查看:. 收到测试环境集群告警,登陆K8s集群进行排查. 查看kube-system node2节点calico pod异常. 查看详细信息,查看node2节点没有存储空间,cgroup泄露. 登陆node2查看服务器存储信息,目前空间还很充足. 集群使用到的分布式存储为ceph,因此查看ceph集群状态.

K8S 故障处理 - chalon - 博客园

- -
问题1:K8S集群服务访问失败. 原因分析:证书不能被识别,其原因为:自定义证书,过期等. 问题2:K8S集群服务访问失败. 原因分析:端口映射错误,服务正常工作,但不能提供服务. 解决方法:删除svc,重新映射端口即可. 问题3:K8S集群服务暴露失败. 解决方法:删除svc,重新映射端口即可. 问题4:外网无法访问K8S集群提供的服务.

浅谈云原生安全之K8S

- - NNULLULL
文章首发于安全客: https://www.anquanke.com/post/id/245526. Kubernetes 是一个可移植的,可扩展的开源容器编排平台,用于管理容器化的工作负载和服务,方便了声明式配置和自动化. 它拥有一个庞大且快速增长的生态系统. Kubernetes 的服务,支持和工具广泛可用.

实践k8s istio熔断 - fat_girl_spring - 博客园

- -
熔断主要是无感的处理服务异常并保证不会发生级联甚至雪崩的服务异常. 在微服务方面体现是对异常的服务情况进行快速失败,它对已经调用失败的服务不再会继续调用,如果仍需要调用此异常服务,它将立刻返回失败. 与此同时,它一直监控服务的健康状况,一旦服务恢复正常,则立刻恢复对此服务的正常访问. 这样的快速失败策略可以降低服务负载压力,很好地保护服务免受高负载的影响.