k8s---HPA

这篇具有很好参考价值的文章主要介绍了k8s---HPA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Horizontal Pod Autoscing:pod的水平自动伸缩,这是k8s自带的模块

pod占用cpu比率到达一定的阀值,会触发伸缩机制

replication controller 副本控制器 pod的副本数

deployment controller 节点控制器 部署pod

hpa控制数量以及控制部署pod

1、hpa基于kube-controll-manager服务,周期的检测pod的cpu使用率 默认30秒

2、hpa和replication controller,deployment controller,都属于k8s的资源对象,通过跟踪分析副本控制器和deployment的pod负载变化,针对性地调整目标pod的副本数

阀值:正常情况下,pod的副本数,以及达到阀值之后,pod的扩容最大数量

3、metrics-server 部署到集群中,对外提供度量的数据

把写好的yaml文件拖到opt目录下
运行
kubectl apply -f components.yaml

查看
kubectl get pod -n kube-system 
NAME                               READY   STATUS    RESTARTS   AGE
coredns-7f89b7bc75-bfs8z           1/1     Running   0          11m
coredns-7f89b7bc75-dx2qz           1/1     Running   1          25d
etcd-master01                      1/1     Running   3          25d
kube-apiserver-master01            1/1     Running   2          7d17h
kube-controller-manager-master01   1/1     Running   5          25d
kube-flannel-ds-btmh8              1/1     Running   1          25d
kube-flannel-ds-plv26              1/1     Running   4          25d
kube-flannel-ds-qjkv2              1/1     Running   2          25d
kube-proxy-46rbj                   1/1     Running   3          25d
kube-proxy-khngm                   1/1     Running   1          25d
kube-proxy-lq8lh                   1/1     Running   2          25d
kube-scheduler-master01            1/1     Running   6          25d
metrics-server-55b9df7b6-95b7d     1/1     Running   0          4m1s
metrics-server-55b9df7b6-9ffjz     1/1     Running   0          4m1s
metrics-server-55b9df7b6-c9sfz     1/1     Running   0          4m1s

查看node节点使用情况
kubectl top node
NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master01   147m         3%     2143Mi          58%       
node01     60m          1%     490Mi           13%       
node02     73m          1%     2046Mi          55%  
HPA的规则

1、定义pod的时候必须要有资源限制,否则HPA无法进行监控

2、扩容是即时的,只要超过阀值会立刻扩容,不是立刻扩容到最大副本数,他会在最小值和最大值波动,如果扩容的数量满足了需求,不会在扩容

3、缩容是缓慢的,如果业务的峰值较高,回收的策略太积极的话,可能会产生业务的崩溃,缩容的速度是比较慢的

周期性的获取数据,缩容的机制问题

pod的副本扩缩容有两种方式

1、手动方式,修改控制器的副本数

kubectl scale deployment nginx1 --replicas=4

修改yaml文件,apply -f部署更新

2、自动扩缩容

hpa hpa的监控的是cpu
资源限制

1、pod的资源限制

2、命名空间资源限制

lucky-cloud项目---部署在test1的命名空间,如果lucky-cloud不做限制,或者命名空间不做限制,他依然会占满所有集群资源

k8s集群部署pod的最大数量:10000

bustbox:就是最小化的cents 4M

有哪些服务会部署在k8s当中

中间件:
kafka	6
Redis	3
业务服务:
自定义的镜像创建的容器
pluigs
前端:
nginx 3-6
mysql是实机部署

命名空间限制


apiVersion: apps/v1
kind: Deployment
metadata:
  name: centos-name
  namespace: test1
  labels:
    test: centos2
spec:
  replicas: 1
  selector:
    matchLabels:
      test: centos2
  template:
    metadata:
      labels:
        test: centos2
    spec:
      containers:
        - name: centos1
          image: centos:7
          command: ["/bin/bash","-c","yum -y install epel-release; yum -y install stress; sleep 3600"]
          resources:
            limits:
              cpu: "1"
              memory: 512Mi
---
apiVersion: v1
kind: ResourceQuota
metadata:
  name: ns-resource
  namespace: test1
spec:
  hard:
    pods: "3"
    requests.cpu: "2"
    requests.memory: 1Gi
    limits.cpu: "4"
    limits.memory: 2Gi
    configmaps: "10"
#在当前名空间能创建最大的ConfigMap的数量10个
    persistentvolumeclaims: "4"
#当前命名空间只能使用4个pvc
    secrets: "9"
#创建加密的sercets,只能9个
    services: "5"
#创建service只能5个
    services.nodeports: "2"
#只能创nodeport,svc只能创建2个


kubectl describe ns test1 
Name:         test1
Labels:       <none>
Annotations:  <none>
Status:       Active

Resource Quotas
 Name:                   ns-resource
 Resource                Used   Hard
 --------                ---    ---
 configmaps              1      10
 limits.cpu              1      4
 limits.memory           512Mi  2Gi
 persistentvolumeclaims  0      4
 pods                    1      3
 requests.cpu            1      2
 requests.memory         512Mi  1Gi
 secrets                 1      9
 services                0      5
 services.nodeports      0      2

No LimitRange resource.

pod资源限制

apiVersion: apps/v1
kind: Deployment
metadata:
  name: centos-pod
  namespace: test2
  labels:
    test: centos3
spec:
  replicas: 1
  selector:
    matchLabels:
      test: centos3
  template:
    metadata:
      labels:
        test: centos3
    spec:
      containers:
        - name: centos2
          image: centos:7
          command: ["/bin/bash","-c","yum -y install epel-release; yum -y install stress; sleep 3600"]
---
apiVersion: v1
kind: LimitRange
#表示使用limitrange来进行资源控制的类型
metadata:
  name: test1-limit
  namespace: test2
spec:
  limits:
  - default:
      memory: 512Mi
      cpu: "1"
    defaultRequest:
      memory: 256Mi
      cpu: "0.5"
    type: Container
#命名空间创建的pod进行限制,default:limit
#                           defaultRequest:Request
#type: Container pod

HPA自动扩缩容

命名空间

第一种
ResourceQuota
可以对命名空间进行资源限制
第二种
LimitRange
直接声明在名空间当中创建的pod,容器的资源限制,这是一种统一限制,所有的pod都受这个条件的制约
pod资源限制 一般是我们创建的时候声明好的,必加选项

pod的资源限制

resources:  limit

命名空间资源限制 对命名空间使用cpu和内存一定会做限制文章来源地址https://www.toymoban.com/news/detail-821976.html

ResourceQuota
核心:防止整个集群的资源被一个服务或者一个命名空间占满
命名空间统一资源限制
LimitRange

到了这里,关于k8s---HPA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

    一、docker的问世         在LXC(Linux container)Linux容器虚拟技术出现之前,业界网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。 虚拟机是什么?         虚拟机其实就是 在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。

    2024年03月26日
    浏览(66)
  • k8s---HPA 命名空间资源限制

     HPA(Horizontal Pod Autoscaling)Pod 水平自动伸缩,Kubernetes 有一个 HPA 的资源,HPA 可以根据 CPU 利用率自动伸缩一个 Replication Controller、 Deployment 或者Replica Set 中的 Pod 数量。 (1)HPA 基于 Master 上的 kube-controller-manager 服务启动参数 horizontal-pod-autoscaler-sync-period 定义的时长(默认为

    2024年01月24日
    浏览(46)
  • 容器技术,1. Docker,2. Kubernetes(K8s):

    目录 容器技术 1. Docker: 2. Kubernetes(K8s): Docker和Kubernetes 容器的主要应用场景有哪些? 有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。 容器技术指通过在物理主机操作系统上创建一个一个

    2024年02月11日
    浏览(66)
  • Docker、Kubernetes(K8s)和KVM辨析

    Docker、Kubernetes(K8s)和KVM都是虚拟化技术,但它们各自的应用场景和功能有所不同。 Docker是一种轻量级的虚拟化技术,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后在任何运行Docker的服务器上部署。与传统的虚拟机相比,Docker容器提供了一种轻量级

    2024年02月21日
    浏览(61)
  • 基于Docker的K8s(Kubernetes)集群部署

    开始搭建k8s集群 三台服务器修改主机名称 关闭对话窗口,重新连接 三台主机名称呢就修改成功了。 接下来修改每台节点的 hosts 文件 所有节点关闭 setLinux 查看是否关闭成功 为每个节点添加 k8s 数据源 如果安装docker数据源找不到yum-config 所有节点安装kubelet kubelet安装中… k

    2024年02月08日
    浏览(97)
  • k8s---pod的水平自动伸缩HPA

    HPA:Horizontal Pod Autoscaling是pod的水平自动伸缩。是k8s自带的模块 pod占用CPU的比率到达一定的阈值会触发伸缩机制。 replication controller:副本控制器。控制pod的副本数 deployment controller:节点控制器。部署pod hpa控制副本的数量以及控制如何部署pod hpa基于kube-controller-manager服务。周

    2024年01月24日
    浏览(38)
  • 如何优化k8s中HPA的弹性速率?

    本文分享自华为云社区《K8s 核心资源指标HPA性能优化之路》,作者:可以交个朋友。 以弹性指标为cpu、memory为例。在Kubernetes 1.7版本中引入了聚合层,允许第三方应用程序注册相关API接口到kube-apiserver上。其中 /apis/metrics.k8s.io/v1beta1 一般由metrics-server程序提供,以插件的形式

    2024年02月22日
    浏览(38)
  • Kind | Kubernetes in Docker 把k8s装进docker!

    有点像杰克船长的黑珍珠 目录 零、说明 一、安装 安装 Docker 安装 kubectl 安装 kind 二、创建/切换/删除集群 创建 切换 删除 将镜像加载到 kind 群集中 官网:kind Kind: Kubernetes in Docker 的简称。kind 是一个使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具。kind 主要设计用于

    2024年02月16日
    浏览(35)
  • 【k8s】kubernets和docker之间版本的对应关系

    如果查看1.18版本k8s对应的docker支持的最新版本 https://github.com/kubernetes/kubernetes/blob/release-1.18/build/dependencies.yaml 查看最新版本k8s对应的docker支持的最新版本 https://github.com/kubernetes/kubernetes/blob/master/build/dependencies.yaml

    2024年02月11日
    浏览(44)
  • HPA (Horizontal Pod Autoscaler) In K8s

    没准正在建设中哈哈哈 作为一位城市观察者和设计师,我想借助Kubernetes的HPA机制思想来描述城市红绿灯自动调节的场景。 在这个故事中,我们的城市面临着日益增长的交通流量和挤塞问题。为了应对这一挑战,城市决定引入智能化红绿灯系统,以更好地管理交通流量和提高

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包