Files
kuboard-press/micro-service/prepare/k8s-basics/scale.md
huanqing.shao dca015a74e 入门教程
2019-08-20 06:16:33 +08:00

79 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 伸缩应用程序
本文翻译自 Kubernetes 官网 [Running Multiple Instances of Your App](https://kubernetes.io/docs/tutorials/kubernetes-basics/scale/scale-intro/) ,并有所改写
## 目标
- 使用 kubectl 伸缩应用程序。
## Scaling伸缩应用程序
在之前的文章中,我们创建了一个 [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/),然后通过 [服务](https://kubernetes.io/docs/concepts/services-networking/service/) 提供访问 Pod 的方式。我们发布的 Deployment 只创建了一个 Pod 来运行我们的应用程序。当流量增加时,我们需要对应用程序进行伸缩操作以满足系统性能需求。
**伸缩** 的实现可以通过更改 nginx-deployment.yaml 文件中部署的 replicas副本数来完成
``` yaml
spec:
replicas: 2 #使用该Deployment创建两个应用程序实例
```
## Scaling伸缩概述
下图中Service A 只将访问流量转发到 IP 为 10.0.0.5 的Pod上
<img src="./scale.assets/module_05_scaling1.svg" style="border: 1px solid #d7dae2; max-width: 600px;"></img>
修改了 Deployment 的 replicas 为 4 后Kubernetes 又为该 Deployment 创建了 3 新的 Pod这 4 个 Pod 有相同的标签。因此Service A通过标签选择器与新的 Pod建立了对应关系将访问流量通过负载均衡在 4 个 Pod 之间进行转发。
<img src="./scale.assets/module_05_scaling2.svg" style="border: 1px solid #d7dae2; max-width: 600px;"></img>
::: tip
通过更改部署中的 replicas副本数来完成扩展
:::
## 实战:将 nginx Deployment 扩容到 4 个副本
**修改 nginx-deployment.yaml 文件**
将 replicas 修改为 4
``` yaml {8}
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
```
**执行命令**
``` sh
kubectl apply -f nginx-deployment.yaml
```
**查看结果**
``` sh
watch kubectl get pods -o wide
```
~~一旦运行了多个应用程序实例,就可以在不停机的情况下执行滚动更新了,
~~lets go-> [执行滚动更新](./update.html)