前言:为了更好地的理解Kubernetes,我们平时在写yaml文件的时候可以直直接使用kubectl的一些命令直接创建,好处是能够快速的创建我们需要的资源类型,坏处是他的可定制性没有直接写yaml文件高。
step1创建deployment并创建service
[root@k8s-master ~]# kubectl run myapp --image=ikubernetes/myapp:v1 --replicas=2
[root@k8s-master ~]# kubectl expose deployment myapp --name=myapp --port=80
service/myapp exposed
[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 39d
myapp ClusterIP 10.96.88.100 <none> 80/TCP 5s
[root@k8s-master ~]# curl 10.96.88.100
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@k8s-master ~]# curl 10.96.88.100/hostname.html
myapp-7c468db58f-xrmqx
[root@k8s-master ~]# curl 10.96.88.100/hostname.html
myapp-7c468db58f-rdpkq
[root@k8s-master ~]#
总结:clusterIP的service类型只能在集群内部访问,而且访问的方式是轮询
step2增加副本
[root@k8s-master ~]# kubectl scale --replicas=5 deployment myapp
deployment.apps/myapp scaled
[root@k8s-master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
myapp-7c468db58f-84c4k 1/1 Running 0 8s
myapp-7c468db58f-dvll2 1/1 Running 0 8s
myapp-7c468db58f-qx45d 1/1 Running 0 8s
myapp-7c468db58f-rdpkq 1/1 Running 0 11m
myapp-7c468db58f-xrmqx 1/1 Running 0 11m
step3减少副本
[root@k8s-master ~]# kubectl scale --replicas=3 deployment myapp
deployment.apps/myapp scaled
[root@k8s-master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
myapp-7c468db58f-dvll2 1/1 Running 0 60s
myapp-7c468db58f-rdpkq 1/1 Running 0 12m
myapp-7c468db58f-xrmqx 1/1 Running 0 12m
step4镜像的更新
[root@k8s-master ~]# kubectl set image deployments.apps myapp myapp=ikubernetes/myapp:v2
deployment.apps/myapp image updated
[root@k8s-master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
myapp-64758bffd4-7w2vc 1/1 Running 0 5s
myapp-64758bffd4-frgpq 1/1 Running 0 6s