乐趣区

关于kubernetes:LabelRCHPA

下面简略说了一下 pod 的根本知识点,待到前面会应用到 pod 的一些高阶知识点的时候,还能够再细细推敲底层原理

咱们接着持续学习 Lable,RC,HPA 的相干知识点

Label 是什么?

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

写一个 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

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

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

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

退出移动版