所谓的Pod扩容和缩容是Kubernetes提供的一个动态添加Pod的功能,可以在相同Pod运行的时候添加或则删除Pod数量,上面实例中创建的 deployment 资源对象默认仅创建一个pod对象,其所能够承载的访问请求数量即受限于这单个Pod对象的服务容量,请求流量上升到接近或超出其容量之前,用户可以通过 Kubernetes 的“扩容机制”来扩展 Pod 的副本数量,从而提升其服务容量。
pod扩容
将default名称空间下的 nginx-deploy deployment控制器所创建的pod由原来的1个扩容至6个
1 2 3 4 5 6 7 8 9 |
kubectl scale --replicas=6 deployment/nginx-deploy -n default #查看扩容后的pod kubectl get pods -n default -o wide | grep nginx-deploy nginx-deploy-788b9c6b69-gvdg2 1/1 Running 0 70s 10.244.5.22 k8s-node03 <none> <none> nginx-deploy-788b9c6b69-j4wgq 1/1 Running 0 70s 10.244.3.12 k8s-node01 <none> <none> nginx-deploy-788b9c6b69-jgjsh 1/1 Running 0 70s 10.244.2.13 k8s-node02 <none> <none> nginx-deploy-788b9c6b69-ncfvp 1/1 Running 0 70s 10.244.5.23 k8s-node03 <none> <none> nginx-deploy-788b9c6b69-tfcrx 1/1 Running 0 128m 10.244.3.11 k8s-node01 <none> <none> nginx-deploy-788b9c6b69-zltmr 1/1 Running 0 70s 10.244.2.14 k8s-node02 <none> <none> |
pod缩容
Pod缩容只需要将对应的–replicas参数等于你想要的Pod数量即可
1 2 3 4 5 6 |
kubectl scale --replicas=2 deployment/nginx-deploy -n default #查看缩容后的pod kubectl get pods -n default -o wide | grep nginx-deploy nginx-deploy-788b9c6b69-ncfvp 1/1 Running 0 4m52s 10.244.5.23 k8s-node03 <none> <none> nginx-deploy-788b9c6b69-tfcrx 1/1 Running 0 131m 10.244.3.11 k8s-node01 <none> <none> |
查看service的详细信息
这个时候可以发现,service的 Endpoints 已经动态的由一台pod变为了我们扩容再缩容后的两台
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
kubectl describe service/nginx-deploy -n default Name: nginx-deploy Namespace: default Labels: app=nginx-deploy Annotations: <none> Selector: app=nginx-deploy Type: NodePort IP: 10.100.66.121 Port: 80-80 80/TCP TargetPort: 80/TCP NodePort: 80-80 30390/TCP Endpoints: 10.244.3.11:80,10.244.5.23:80 Session Affinity: None External Traffic Policy: Cluster Events: <none> |
通过nginx-deploy service访问后端pod
开三个ssh窗口,第一个窗口进行curl访问后端pod,第二个和第三个窗口分别查看两个pod的日志
curl http://nginx-deploy.default.svc.cluster.local
上面可以看到,我访问了三次,前两次都被调度到了第三个窗口上,第三次被调度到了第二个窗口上,这种请求负责是由service进行调度,不是采用轮询,而是随机进行调度,后面如果使用了ipvs规则后,我们可以定义调度算法。