zoukankan      html  css  js  c++  java
  • 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]# 
  • 相关阅读:
    mysql缓存
    复杂映射
    SQL 映射的 XML 文件
    xml配置文件
    从xml中构建sqlSessionFactory
    eclipse使用时jar不在libraries
    去掉不用的工作空间
    javac找不到或无法加载主类 com.sun.tools.javac.Main,
    文本,布局,样式
    (常用)re模块
  • 原文地址:https://www.cnblogs.com/zphqq/p/12983326.html
Copyright © 2011-2022 走看看