kubectl autoscale 与 kubectl scale 之间有什么区别
What is the difference between kubectl autoscale vs kubectl scale
我是 kubernetes 的新手,正在尝试了解何时使用 kubectl autoscale 和 kubectl scale 命令
部署中的规模 告诉有多少 pods 应该总是 运行 以确保应用程序正常工作。您必须手动指定它。
在 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 pods 运行ning 并且 Kubernetes 将始终尝试维持这个数量的 pods (如果任何 pods 将粉碎,K8s 将重新创建它)。您可以随时在 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 关于缩放和复制集的内容。
Horizontal Pod Autoscaling (HPA) 的发明是为了根据 pods 生成的指标来扩展部署。例如,如果您的应用程序每分钟大约有 300 个 HTTP 请求,并且您的每个 pod 允许每分钟 100 个 HTTP 请求,那么就没问题。但是,如果您将收到大量 HTTP 请求 ~ 1000,则 3 pods 是不够的,70% 的请求将失败。当您将使用 HPA
时,部署将自动缩放至 运行 10 pods 以处理所有请求。一段时间后,当请求数量下降到 500/分钟时,它会缩小到 5 pods。稍后取决于请求数,它可能会上升或下降取决于您的 HPA 配置。
应用自动缩放的最简单方法是:
$ kubectl autoscale deployment <your-deployment> --<metrics>=value --min=3 --max=10
这意味着自动缩放将根据指标自动缩放到最大 10 pods,稍后它会最小化到 3。
HPA documentation 中显示了很好的示例,使用了 CPU。
请记住,Kubernetes 可以使用多种基于 API 的指标(HTTP/HTTP 请求、CPU/Memory 负载、线程数等)
希望它能帮助您了解缩放和自动缩放之间的区别。
我是 kubernetes 的新手,正在尝试了解何时使用 kubectl autoscale 和 kubectl scale 命令
部署中的规模 告诉有多少 pods 应该总是 运行 以确保应用程序正常工作。您必须手动指定它。
在 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 pods 运行ning 并且 Kubernetes 将始终尝试维持这个数量的 pods (如果任何 pods 将粉碎,K8s 将重新创建它)。您可以随时在 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 关于缩放和复制集的内容。
Horizontal Pod Autoscaling (HPA) 的发明是为了根据 pods 生成的指标来扩展部署。例如,如果您的应用程序每分钟大约有 300 个 HTTP 请求,并且您的每个 pod 允许每分钟 100 个 HTTP 请求,那么就没问题。但是,如果您将收到大量 HTTP 请求 ~ 1000,则 3 pods 是不够的,70% 的请求将失败。当您将使用 HPA
时,部署将自动缩放至 运行 10 pods 以处理所有请求。一段时间后,当请求数量下降到 500/分钟时,它会缩小到 5 pods。稍后取决于请求数,它可能会上升或下降取决于您的 HPA 配置。
应用自动缩放的最简单方法是:
$ kubectl autoscale deployment <your-deployment> --<metrics>=value --min=3 --max=10
这意味着自动缩放将根据指标自动缩放到最大 10 pods,稍后它会最小化到 3。 HPA documentation 中显示了很好的示例,使用了 CPU。
请记住,Kubernetes 可以使用多种基于 API 的指标(HTTP/HTTP 请求、CPU/Memory 负载、线程数等)
希望它能帮助您了解缩放和自动缩放之间的区别。