service对象部署、Deployment对象的扩容与缩容
service 对象是一组Pod的逻辑组合,它通过被称为CluserIP的地址和服务端口接收客户端请求,并且将这些请求代理至使用标签选择器来过滤出一个符合条件的Pod对象
创建一个service对象
[root@k8s-master01 ~]# kubectl create service nodeport demoapp --tcp=80 -n dev
service/demoapp created
查看service对象:
[root@k8s-master01 ~]# kubectl get service -o wide -n dev
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
demoapp NodePort 10.97.12.242 <none> 80:32110/TCP 47s app=demoapp
Deployment对象的扩容与缩容
前面创建了一个dev名称空间
并且创建了一个deployment资源控制器
kubectl create namespace dev
kubectl ceate deployment demoapp --image="ikubernetes/demoapp:v1.0" -n dev
在dempapp 的资源控制器上运行一个pod
kubectl run demoapp --image="ikubernetes/demoapp:v1.0" -n dev
[root@k8s-node04 ~]# kubectl run demoapp --image="ikubernetes/demoapp:v1.0" -n dev
pod/demoapp created
[root@k8s-node04 ~]# kubectl get deployment -n dev
NAME READY UP-TO-DATE AVAILABLE AGE
demoapp 1/1 1 1 132m
[root@k8s-node04 ~]# kubectl get deployment -n dev -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
demoapp 1/1 1 1 132m demoapp ikubernetes/demoapp:v1.0 app=demoapp
[root@k8s-node04 ~]# kubectl get pods -l app=demoapp -n dev -o wide 查看得知该pod运行在node04上
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demoapp-5f7d8f9847-vtb8v 1/1 Running 0 126m 10.244.4.7 k8s-node04 <none> <none>
由于访问请求受限制,所以需要进行扩容
[root@k8s-node04 ~]# kubectl scale deployment/demoapp --replicas=3 -n dev #扩容pod副本数量为3
deployment.apps/demoapp scaled
[root@k8s-node04 ~]# kubectl get pods -l app=demoapp -n dev -o wide #进行查看,副本没有那么快运行,需要等一会
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demoapp-5f7d8f9847-k42xm 0/1 ContainerCreating 0 5s <none> k8s-node01 <none> <none>
demoapp-5f7d8f9847-vtb8v 1/1 Running 0 127m 10.244.4.7 k8s-node04 <none> <none>
demoapp-5f7d8f9847-z8m2d 0/1 ContainerCreating 0 5s <none> k8s-node04 <none> <none>
[root@k8s-node04 ~]# kubectl get pods -l app=demoapp -n dev -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demoapp-5f7d8f9847-k42xm 1/1 Running 0 38s 10.244.1.7 k8s-node01 <none> <none>
demoapp-5f7d8f9847-vtb8v 1/1 Running 0 127m 10.244.4.7 k8s-node04 <none> <none>
demoapp-5f7d8f9847-z8m2d 0/1 ContainerCreating 0 38s <none> k8s-node04 <none> <none>
[root@k8s-node04 ~]# kubectl get pods -l app=demoapp -n dev -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demoapp-5f7d8f9847-k42xm 1/1 Running 0 57s 10.244.1.7 k8s-node01 <none> <none>
demoapp-5f7d8f9847-vtb8v 1/1 Running 0 128m 10.244.4.7 k8s-node04 <none> <none>
demoapp-5f7d8f9847-z8m2d 1/1 Running 0 57s 10.244.4.12 k8s-node04 <none> <none>
扩容完成后可以看到一个副本运行在node01上,2个副本运行在node04上
扩容完成,进行查看扩容信息:
[root@k8s-node04 ~]# kubectl describe deployment/demoapp -n dev
Name: demoapp
Namespace: dev
CreationTimestamp: Sat, 14 Aug 2021 01:23:58 +0800
Labels: app=demoapp
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=demoapp
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=demoapp
Containers:
demoapp:
Image: ikubernetes/demoapp:v1.0
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: <none>
NewReplicaSet: demoapp-5f7d8f9847 (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 15m deployment-controller Scaled up replica set demoapp-5f7d8f9847 to 3
[root@k8s-node04 ~]# kubectl describe service/demoapp -n dev
Name: demoapp
Namespace: dev
Labels: app=demoapp
Annotations: <none>
Selector: app=demoapp
Type: NodePort
IP: 10.97.12.242
Port: 80 80/TCP
TargetPort: 80/TCP
NodePort: 80 32110/TCP
Endpoints: 10.244.1.7:80,10.244.4.12:80,10.244.4.7:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
在外面,外面可以通过任意客户端(不在k8s集群里的机器) 对service/demoapp的服务发起访问,进行测试,结果会将请求调度到3个不同后端pod上
命令是:while true; do curl http://node主机ip:32110/; sleep 0.2; done
[root@node-3 ~]# while true; do curl http://192.168.3.251:32110/; done
iKubernetes demoapp v1.0 !! ClientIP: 10.244.4.1, ServerName: demoapp-5f7d8f9847-z8m2d, ServerIP: 10.244.4.12!
iKubernetes demoapp v1.0 !! ClientIP: 10.244.4.1, ServerName: demoapp-5f7d8f9847-z8m2d, ServerIP: 10.244.4.12!
iKubernetes demoapp v1.0 !! ClientIP: 10.244.4.1, ServerName: demoapp-5f7d8f9847-z8m2d, ServerIP: 10.244.4.12!
iKubernetes demoapp v1.0 !! ClientIP: 10.244.4.1, ServerName: demoapp-5f7d8f9847-vtb8v, ServerIP: 10.244.4.7!
iKubernetes demoapp v1.0 !! ClientIP: 10.244.4.1, ServerName: demoapp-5f7d8f9847-vtb8v, ServerIP: 10.244.4.7!
因为我只有2 个node,所以随机分配
缩容就只需要把3改成小与3就行
浙公网安备 33010602011771号