目标
- 使用 kubectl 伸缩应用程序。
Scaling(伸缩)应用程序
在之前的文章中,我们创建了一个 Deployment,然后通过 服务 提供访问 Pod 的方式。我们发布的 Deployment 只创建了一个 Pod 来运行我们的应用程序。当流量增加时,我们需要对应用程序进行伸缩操作以满足系统性能需求。
伸缩 的实现可以通过更改 nginx-deployment.yaml 文件中部署的 replicas(副本数)来完成
spec: replicas: 2 #使用该Deployment创建两个应用程序实例
Scaling(伸缩)概述
下图中,Service A 只将访问流量转发到 IP 为 10.0.0.5 的Pod上
修改了 Deployment 的 replicas 为 4 后,Kubernetes 又为该 Deployment 创建了 3 新的 Pod,这 4 个 Pod 有相同的标签。因此Service A通过标签选择器与新的 Pod建立了对应关系,将访问流量通过负载均衡在 4 个 Pod 之间进行转发。
TIP
通过更改部署中的 replicas(副本数)来完成扩展
实战:将 nginx Deployment 扩容到 4 个副本
修改 nginx-deployment.yaml 文件
将 replicas 修改为 4
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 4 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
执行命令
kubectl apply -f nginx-deployment.yaml
[root@guanbin-k8s-master k8s]# kubectl apply -f nginx-deployment.yaml deployment.apps/nginx-deployment configured
查看结果
watch kubectl get pods -o wide
Every 2.0s: kubectl get pods -o wide Wed Apr 22 23:12:32 2020 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kubernetes-bootcamp 1/1 Running 0 3d 10.100.102.2 guanbin-k8s-node <none> <none> nginx 1/1 Running 0 2d23h 10.100.102.3 guanbin-k8s-node <none> <none> nginx-deployment-6dd8bc586b-4lgnf 1/1 Running 0 12m 10.100.102.9 guanbin-k8s-node <none> <none> nginx-deployment-6dd8bc586b-88wr7 1/1 Running 0 12m 10.100.102.8 guanbin-k8s-node <none> <none> nginx-deployment-6dd8bc586b-kgn85 1/1 Running 0 2d23h 10.100.102.7 guanbin-k8s-node <none> <none> nginx-deployment-6dd8bc586b-m6mc5 1/1 Running 0 12m 10.100.102.10 guanbin-k8s-node <none> <none>