• k8s 之HPA应用


    1、创建测试deployment

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app
      namespace: default
    spec:
      type: NodePort
      selector: 
        app: my-app
        release: canary
      ports:
      - name: http
        nodePort: 30327
        port: 80
      
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app-deploy
      namespace: default
    spec:
      replicas: 3
      selector: 
        matchLabels:
          app: my-app
          release: canary
      template:
        metadata:
          labels:
            app: my-app
            release: canary
        spec:
          containers:
          - name: my-app
            image: ikubernetes/myapp:v2
            ports: 
            - name: http
              containerPort: 80
            resources:
    requests:
    cpu: 128m
    memory: 128Mi
    limits:
    cpu: 128m
    memory: 128Mi
    kubectl create -f app.yaml
    [root@10 ingress]#  kubectl get pod | grep my-app
    my-app-deploy-76f86b954b-5r5n7                                    1/1     Running            0          3m25s
    my-app-deploy-76f86b954b-8n2dp                                    1/1     Running            0          3m25s
    my-app-deploy-76f86b954b-d95d8                                    1/1     Running            0          3m25s
    [root@10 ingress]# kubectl get svc | grep my-app 
    my-app                                                NodePort       192.168.192.192   <none>        80:30327/TCP                                                   3m29s
    [root@10 ingress]# 

    2、创建HPA

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: my-app-hpa # 名称
      namespace: default #k8s命名空间
    spec:
      maxReplicas: 10  # 最大副本数
      minReplicas: 3   # 最小副本数
      scaleTargetRef:   
        apiVersion: apps/v1beta1
        kind: Deployment  
        name: my-app-deploy   # 监控名为my-app-deploy的Deployment
      targetCPUUtilizationPercentage: 20  # cpu 阈值
    kubectl create -f hap.yaml
    
    [root@10 zhangpan]# kubectl get hpa
    NAME         REFERENCE                  TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
    my-app-hpa   Deployment/my-app-deploy   <unknown>/80%   2         10        3          77s
    [root@10 zhangpan]# 

    也可以直接用命令创建hpa

    kubectl autoscale deployment myapp --min=2 --max=10 --cpu-percent=20

    如果出现unknown,可以查看原始deployment的resource有没有设置cpu的限制,或者没有找到deployment,也有可能是由于heapster组件没有安装,也有可能是数据没有检测到,默认heapster采集时间为1分,需要稍等一会看一下状态。

    可以用kubectl describe hpa my-app-hpa 查看具体原因

    正常后显示如下:

    [root@10 zhangpan]# kubectl get hpa
    NAME         REFERENCE                  TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    my-app-hpa   Deployment/my-app-deploy   0%/20%    2         10        2          6m29s
    [root@10 zhangpan]# 
  • 相关阅读:
    ASP.NET Web API 记录请求响应数据到日志的一个方法
    EF删除集中方法对比
    CSS 的优先级机制[总结]
    sql备份命令
    sql两张表关联更新字段
    VSCode隐藏node_modules目录
    C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServic
    模拟退火(转)
    HNOI2006-鬼谷子的钱袋
    HNOI2006-公路修建问题(二分答案+并查集)
  • 原文地址:https://www.cnblogs.com/zphqq/p/12983326.html
Copyright © 2020-2023  润新知