我是kubernetes的新手,试图了解何时使用kubectl自动缩放和kubectl缩放命令
答案 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 /内存负载,线程数等)
希望它可以帮助您了解“缩放”和“自动缩放”之间的区别。