zoukankan      html  css  js  c++  java
  • k8s autoscale水平扩容

    1> 创建测试资源

    1.命令获取deployment yaml模板

    kubectl create deployment web --image=nginx:1.14 -o yaml --dry-run  >deploy-web.yaml 

    修改deployment -web模板,添加pod限制

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: web
      name: web
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web
      template:
        metadata:
          labels:
            app: web
        spec:
          containers:
          - image: nginx:1.14
            name: nginx
            resources:
              limits:
                cpu: 200m
                memory: 200Mi
              requests:
                cpu: 200m
                memory: 200Mi

    创建deployment-web

    [root@k8s-master1 hpa]# kubectl create -f deploy-web.yaml 

    2.生成autoscale  yaml模板

    [root@k8s-master1 hpa]# kubectl autoscale deployment web  --min=2 --max=10 -o yaml --dry-run >hpa-web.yaml

    修改hpa-web模板

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: web
    spec:
      maxReplicas: 10
      minReplicas: 2
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: web
      targetCPUUtilizationPercentage: 40

    创建hpa-web

    [root@k8s-master1 hpa]# kubectl create -f hpa-web.yaml 
    horizontalpodautoscaler.autoscaling/web created

    查看信息(web已经自动扩容为2个)

    [root@k8s-master1 hpa]# kubectl get pod,hpa 
    NAME                          READY   STATUS    RESTARTS   AGE
    pod/busybox-97b9f6974-grtzd   1/1     Running   0          22h
    pod/test-74695b8467-8lwrq     1/1     Running   0          12m
    pod/web-5f8765dd69-dzv6l      1/1     Running   0          5m44s
    pod/web-5f8765dd69-pq2nv      1/1     Running   0          5m58s
    
    NAME                                      REFERENCE        TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    horizontalpodautoscaler.autoscaling/web   Deployment/web   0%/40%    2         10        2          23s

    3.创建service yaml模板

    [root@k8s-master1 hpa]# kubectl create service  nodeport web --tcp=80:80 -o yaml --dry-run >service-web.yaml

     修改service-web模板

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: web
      name: web
    spec:
      ports:
      - name: web
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: web
      type: NodePort

    创建service

    [root@k8s-master1 hpa]# kubectl create -f service-web.yaml 
    service/web created

    2> 查看刚刚创建的资源

    [root@k8s-master1 ~]# kubectl get pod,deploy,svc,hpa  -o wide
    NAME                          READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
    pod/busybox-97b9f6974-grtzd   1/1     Running   0          22h   10.244.169.154   k8s-node2   <none>           <none>
    pod/test-74695b8467-8lwrq     1/1     Running   0          21m   10.244.107.194   k8s-node3   <none>           <none>
    pod/web-5f8765dd69-dzv6l      1/1     Running   0          14m   10.244.36.98     k8s-node1   <none>           <none>
    pod/web-5f8765dd69-pq2nv      1/1     Running   0          14m   10.244.107.195   k8s-node3   <none>           <none>
    
    NAME                      READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES       SELECTOR
    deployment.apps/busybox   1/1     1            1           2d20h   busybox      busybox      run=busybox
    deployment.apps/test      1/1     1            1           21m     test         nginx:1.14   run=test
    deployment.apps/web       2/2     2            2           24m     nginx        nginx:1.14   app=web
    
    NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE     SELECTOR
    service/kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP        42d     <none>
    service/web          NodePort    10.0.0.81    <none>        80:30779/TCP   4m21s   app=web
    
    NAME                                      REFERENCE        TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    horizontalpodautoscaler.autoscaling/web   Deployment/web   0%/40%    2         10        2          9m25s

    3> 安装ab进行测试

    [root@k8s-master1 ~]# ab -n 1000000 -c 10 -k http://10.0.0.81/
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking 10.0.0.81 (be patient)
    

     

     查看pod日志

    [root@k8s-master1 ~]# kubectl logs web-5f8765dd69-dzv6l -f
    10.23.215.240 - - [09/Jul/2020:06:33:17 +0000] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3" "-"
    10.23.215.240 - - [09/Jul/2020:06:33:17 +0000] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3" "-"
    10.23.215.240 - - [09/Jul/2020:06:33:17 +0000] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3" "-"
    10.23.215.240 - - [09/Jul/2020:06:33:17 +0000] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3" "-"
    10.23.215.240 - - [09/Jul/2020:06:33:17 +0000] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3" "-"

     查看pod

  • 相关阅读:
    欧几里得学习笔记
    卢卡斯定理学习笔记
    环相关问题
    BSGS学习笔记
    淘宝首页自动切换选项卡变换内容
    彻底弄懂CSS盒子模式(DIV布局快速入门)
    runoo' blog WEB2.0
    彻底弄懂CSS盒子模式
    CSS 样式切换
    js强贴收藏
  • 原文地址:https://www.cnblogs.com/caonw/p/13273512.html
Copyright © 2011-2022 走看看