【k8s 系列】k8s 学习十一,Label,RC,HPA

简介: 上面简单说了一下 pod 的基本知识点,待到后面会使用到 pod 的一些高阶知识点的时候,还可以再细细琢磨底层原理

上面简单说了一下 pod 的基本知识点,待到后面会使用到 pod 的一些高阶知识点的时候,还可以再细细琢磨底层原理

image.png

我们接着继续学习 Lable , RC,HPA 的相关知识点

Label 是什么?

image.png

label 就是标签,例如之前我们手写的 yaml 文件中,每一个键值对都是 label,如 key =value

label 一般是在定义资源的时候就确定了,当然我们也可以在对象创建之后进行动态的添加,编辑,和删除

我们写的 label 可以附加到 Node,Service,Pod,RC 中,每一类资源都可以定义任意数量的 label, 同一个 label 也是可以被添加到任意数量的资源对象上的

这一点确实是很灵活了有么有


label 为什么要附加到各种资源对象上呢?

因为 label 和 label selector 都是不能单独定义的,他们必须要依附在某一类资源对象上,这是为了能够去管理这些资源,使用 label selector 对他们分组

例如写一个 openresty ,写一个 RC 使用 openresty ,Service 调用 openresty 的 label selector

apiVersion: v1
kind: ReplicationController 
metadata: 
  name: openresty
spec:
  replicas: 2
  selector:
    app: openresty
  tmplate:
    metadata:
      labels:
        app: openresty
      spec:
        containers:
        - name: openresty
        ports:
        - containerPort: 80
----------------------------
apiVersion: v1
kind: Service 
metadata: 
  name: openresty
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30125
  selector:
    app: openresty

RC 是什么?

RC 是什么,前面解释到,就是 ReplicationController 副本控制器

当我们定义一个 RC ,提交给 K8S 的时候,这是一个期望值,Master 节点上的 Controller Manager 组件得到通知后,就会去定期检查 pod ,会确保 pod 的数量和我们预期的数量一致

如果当前检测到的数量和我们的预期数量不一致,那么控制器就会对 pod 做增加和删除的操作,这就可以实现 pod 动态扩缩功能

之前我们也有提到,我们可以使用如下指令来设置我们期望的副本数

kubectl scale rc 服务名 --replicas=具体的数字

RC  和 Replica Sets 有何区别?

他俩在本质上没有什么区别,只是 Replica Sets  支持的更多

RC Replica Sets
支持基于等式的 label selector 支持基于集合的 label selector
K8S 1.2 之后出现的,Replica Sets 主要是被 Deployment 这样的资源对象所使用

为了提高我们应用的容灾能力,哪怕程序只有  1 个 pod 副本,也要通过 RC 的方式去管理,因为 RC 可以管理 pod 的创建,删除,更新等编排机制,不用 pod 自己瞎操心

HPA 是什么?

HPA 就是 Horizontal Pod Autoscal ,pod 的横向扩容,他也是 K8S 的一种资源对象

HPA 的简单原理

HAP 通过追踪和分析 RC 的 pod 的负载变化情况,酌情调整目标 pod 的副本数

K8S 提供 2 种方式来对 pod 扩容和缩容

  • 第一种是我们使用命令的方式对 RC,Deployment 进行扩容和缩容
kubectl scale rc/deployment 服务名 --replicas 数量
  • 第二种是使用 HPA 的方式,自动扩容和缩容

自动的模式就**需要用户根据指定的一个性能指标,还要预先指定一个副本的数量范围,**系统就会自动的在我们设定的范围内根据性能指标进行调整

HPA 小案例

  • 写一个 自己 nginx deployment
apiVersion: extension/v1beta1
kind: Deployment
metadata:
  name: my nginx deployment
spec:
  replicas: 2
  template:
    metadata:
      name: my deployment
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        resources:
          requrests:
            cpu: 50m
        ports:
        - containerPort: 80

写一个 service ,命名为 mynginx-svc

apiVersion: v1
kind: Service
metadata:
  name: mynginx-svc
spec:
  ports:
  - port: 80
  selector:
    app: nginx
  • 写一个 hpa

hpa 设置最小的副本数  2, 最大的副本数 5个,CPU 在 70 % 以下 ,引用  my nginx deployment

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: mynginx-hpa
spec:
  scaletargetRef:
    apiversion: app/v1beta1
    kind: deployment
    name: my nginx deployment
  minReplicas: 2
  maxReplicas: 5
  targetCPUUtillizationPercentage: 70

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Prometheus Kubernetes 监控
深入探索Kubernetes中的Pod自动扩展(Horizontal Pod Autoscaler, HPA)
深入探索Kubernetes中的Pod自动扩展(Horizontal Pod Autoscaler, HPA)
|
4月前
|
存储 Kubernetes 调度
|
4月前
|
存储 Kubernetes 持续交付
k8s学习
【10月更文挑战第1天】
158 4
|
4月前
|
Kubernetes 固态存储 调度
k8s学习--如何控制pod调度的位置
k8s学习--如何控制pod调度的位置
|
4月前
|
Kubernetes API 调度
k8s学习--pod的所有状态详解(图例展示)
k8s学习--pod的所有状态详解(图例展示)
446 1
|
4月前
|
存储 Kubernetes 调度
k8s学习--k8s群集部署zookeeper应用及详细解释
k8s学习--k8s群集部署zookeeper应用及详细解释
149 0
|
4月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
1月前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
2月前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
148 12
|
2月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。

热门文章

最新文章