Pod 扩容与缩容 ¶
我们创建了一个 Deployment ,然后通过 服务 提供访问 Pod 的方式。我们发布的 Deployment 只创建了一个 Pod 来运行我们的应用程序。当流量增加时,我们需要对应用程序进行伸缩操作以满足系统性能需求。
- 修改 nginx-deployment.yaml 文件
- 将 replicas 修改为 4
查看 pod
3. 执行命令
apiVersion: v1
kind: Namespace # 配置的类型,我们使用的是 Namespace
metadata:
name: datarc # 命令空间名称
---
apiVersion: apps/v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment #该配置的类型,我们使用的是 Deployment
metadata: #译名为元数据,即 Deployment 的一些基本属性和信息
namespace: datarc #命名空间
name: nginx-deployment #Deployment 的名称
labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
app: nginx #为该Deployment设置key为app,value为nginx的标签
spec: #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
replicas: 4 # 使用该 Deployment 创建4个应用程序实例
selector: #标签选择器,与上面的标签共同作用,目前不需要理解
matchLabels: #选择包含标签app:nginx的资源
app: nginx
template: #这是选择或创建的Pod的模板
metadata: #Pod的元数据
labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod
app: nginx
spec: #期望Pod实现的功能(即在pod中部署)
containers: #生成container,与docker中的container是同一种
- name: nginx #container的名称
image: nginx:1.7.9 #使用镜像nginx:1.7.9创建container,该container默认80端口可访问
ports:
- containerPort: 80
kubectl apply -f nginx-deployment.yaml
kubectl get pods -o wide -n datarc
将
kubectl scale deployment <deployment-name> --replicas=<desired-replicas>
如 Deployment
名为 datarc-test-pod
,将 Pod
副本数扩展到 5 个:
kubectl scale deployment my-deployment --replicas=5
如 Deployment
名为 datarc-test-pod
,将 Pod
副本数缩容到 1 个:
kubectl scale deployment my-deployment --replicas=1
kubectl edit deployment <deployment-name>
将
spec.replicas
字段设置为所需的Pod副本数