kubectl自动缩放与kubectl缩放有什么区别

时间:2019-08-08 04:46:17

标签: kubernetes kubectl

我是kubernetes的新手,试图了解何时使用kubectl自动缩放和kubectl缩放命令

1 个答案:

答案 0 :(得分:2)

部署中的

Scale 指示应始终运行多少个Pod,以确保应用程序正常运行。您必须手动指定。 在YAML中,您必须在spec.replicas中对其进行定义,如下例所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

指定部署规模(副本)的第二种方法是使用命令。

$ kubectl run nginx --image=nginx --replicas=3
deployment.apps/nginx created

$ kubectl get deployment
NAME    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx   3         3         3            3           11s

这意味着部署将运行3个Pod,Kubernetes将始终尝试保持此Pod数量(如果任何Pod会崩溃,则K8将重新创建它)。您随时可以在spec.replicas中进行更改,并使用kubectl apply -f <name-of-deployment>或通过命令

$ kubectl scale deployment nginx --replicas=10
deployment.extensions/nginx scaled

$ kubectl get deployment
NAME    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx   10        10        10           10          4m48s

请阅读documentation中有关缩放和副本集的信息。

发明了

水平Pod自动缩放(HPA)来根据Pod生成的指标扩展部署。例如,如果您的应用程序每分钟大约有300个HTTP请求,并且您的pod允许每分钟100个HTTP请求,那么就可以了。但是,如果您将收到大量的HTTP请求〜1000,则3个Pod将不足,并且70%的请求将失败。当您使用HPA时,部署将自动缩放以运行10个Pod来处理所有请求。一段时间后,当请求数下降到500 /分钟时,它将缩小到5个窗格。稍后取决于请求号,它可能会上升还是下降取决于您的HPA配置。

应用自动缩放的最简单方法是:

$ kubectl autoscale deployment <your-deployment> --<metrics>=value --min=3 --max=10

这意味着自动缩放将根据指标自动缩放到最多10个容器,之后又将最小缩放到3个。 HPA documentation中显示了一个很好的示例,显示了CPU使用情况。

请记住,Kubernetes可以基于API使用多种类型的指标(HTTP / HTTP请求,CPU /内存负载,线程数等)

希望它可以帮助您了解“缩放”和“自动缩放”之间的区别。