书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》
一边学习一边整理老师的课程内容及实验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:CKA备考实验 | 汇总_热爱编程的通信人的博客-CSDN博客
这里讲一下为什么要修改副本数,后面会讲到services(简称为svc),service就类似于一个负载均衡器,用户把请求发送给svc,然后svc把请求转发给后端的pod,如图8-4所示。
假设这里有一万个并发量,分配到2个pod里,每个pod大概承担5000个并发量,每个pod的负载就会很重。如果此时通过deployment把副本数改为3个的话,那么每个pod大概承担3300个并发量,这样每个pod的负载就减轻了很多。
有3种方式可以修改deployment的副本数。
通过命令行修改
第1种修改deployment副本数的方法是使用kubectl scale命令,语法如下。
kubectl scale deployment 名称 --replicas=新的副本数
自行创建1个名字为web1的deployment,副本为3。
##########实操验证##########
[root@vms10 deploy]# cat d1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web1
name: web1
spec:
replicas: 3
selector:
matchLabels:
app: web1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web1
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
[root@vms10 deploy]#
[root@vms10 deploy]# kubectl apply -f d1.yaml
deployment.apps/web1 created
[root@vms10 deploy]#
[root@vms10 deploy]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web1-6fbb48567f-7qq7m 1/1 Running 0 7s
web1-6fbb48567f-m82jd 1/1 Running 0 7s
web1-6fbb48567f-s8frb 1/1 Running 0 7s
[root@vms10 deploy]#
步骤1:把web1的副本数修改为5。
##########实操验证##########
[root@vms10 deploy]# kubectl scale deployment web1 --replicas=5
deployment.apps/web1 scaled
[root@vms10 deploy]#
步骤2:查看deployment的相关信息。
##########实操验证##########
[root@vms10 deploy]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
web1 5/5 5 5 64s
[root@vms10 deploy]#
这里也显示了web1这个deployment里有5个pod在运行。
步骤3:查看pod数。
##########实操验证##########
[root@vms10 deploy]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web1-6fbb48567f-7qq7m 1/1 Running 0 84s
web1-6fbb48567f-gv6xc 1/1 Running 0 36s
web1-6fbb48567f-m82jd 1/1 Running 0 84s
web1-6fbb48567f-s8frb 1/1 Running 0 84s
web1-6fbb48567f-wtthp 1/1 Running 0 36s
[root@vms10 deploy]#
通过编辑deployment的方式修改
第2种修改deployment副本数的方式就是通过kubectl edit命令在线修改deployment的配置。web1的副本数为5,现在改为3,操作步骤如下。
步骤1:执行kubectl edit deployment web1,打开web1的配置。
##########实操验证##########
[root@vms10 ~]# kubectl edit deployment web1
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
...
步骤2:找到replicas字段,把5改成3。
##########实操验证##########
...
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 10
...
步骤3:保存退出,查看pod数目。
##########实操验证##########
[root@vms10 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web1-6fbb48567f-m82jd 1/1 Running 0 25h
web1-6fbb48567f-s8frb 1/1 Running 0 25h
web1-6fbb48567f-wtthp 1/1 Running 0 25h
[root@vms10 ~]#
修改yaml文件的方式
第3种修改副本数的方法是修改创建deployment的yaml文件,然后让其生效即可。现在副本数为3,要将其修改为5的操作步骤如下。
步骤1:修改web1.yaml,把副本数改成5。
##########实操验证##########
[root@vms10 deploy]# cat d1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web1
name: web1
spec:
replicas: 5
selector:
matchLabels:
app: web1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web1
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
[root@vms10 deploy]#
步骤2:让web1.yaml所做的修改生效。
##########实操验证##########
[root@vms10 deploy]# kubectl apply -f d1.yaml
deployment.apps/web1 configured
[root@vms10 deploy]#
步骤3:查看pod数。
##########实操验证##########
[root@vms10 deploy]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web1-6fbb48567f-lqhzp 1/1 Running 0 22s
web1-6fbb48567f-m82jd 1/1 Running 0 25h
web1-6fbb48567f-s8frb 1/1 Running 0 25h
web1-6fbb48567f-w89td 1/1 Running 0 22s
web1-6fbb48567f-wtthp 1/1 Running 0 25h
[root@vms10 deploy]#
这里可以看到,已经有5个副本了。