使用k8s來部署tomcat
1、創建一個部署,并指定鏡像地址
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8
2、查看部署pod狀態
kubectl get pods # 獲取default名稱空間下的pods
kubectl get pods --all-namespaces # 獲取所有名稱空間下的pods
kubectl get pods -o wide # 獲取pods詳細信息
3、查看所有pods,deployment,service,replicaset信息
[root@k8s-master ~]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/tomcat6-5f7ccf4cb9-8qjhm 1/1 Running 0 19mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h
service/tomcat6 NodePort 10.96.226.207 <none> 80:32383/TCP 3m16sNAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/tomcat6 1/1 1 1 19mNAME DESIRED CURRENT READY AGE
replicaset.apps/tomcat6-5f7ccf4cb9 1 1 1 19m
4、向外部暴露service服務
kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort
–port:pod的端口
–target-port:容器端口
–type=NodePort:指定暴露的方式
5、查看暴露的service
[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h
tomcat6 NodePort 10.96.226.207 <none> 80:32383/TCP 12s
在上面我們可以看到k8s向外部暴露tomcat端口為32383
結合下面信息我們可以看到tomcat6是在node3上面的
[root@k8s-master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat6-5f7ccf4cb9-8qjhm 1/1 Running 0 20m 10.244.2.2 k8s-node3 <none> <none>
這里node3的地址是192.168.1.109,所以訪問192.168.1.109:32383即可訪問tomcat首頁
6、動態擴容
擴容三個tomcat
kubectl scale --replicas=3 deployment tomcat6
查看pod信息
[root@k8s-master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat6-5f7ccf4cb9-2bjhq 1/1 Running 0 5m56s 10.244.2.3 k8s-node3 <none> <none>
tomcat6-5f7ccf4cb9-8qjhm 1/1 Running 0 33m 10.244.2.2 k8s-node3 <none> <none>
tomcat6-5f7ccf4cb9-s42g5 1/1 Running 0 5m56s 10.244.1.4 k8s-node2 <none> <none>
此時使用node2地址也能訪問tomcat了(http://192.168.1.105:32383/)
7、故障轉移和容量伸縮
假如node3節點掛點,會重新在node2節點上拉起兩個pod,保持pod數量保持3個,
假如手動stop節點上的容器,也會自動重新拉起。
重新設置pod復制數量為1時(kubectl scale --replicas=1 deployment tomcat6),會選擇停掉三個pod中的兩個。
8、刪除
[root@k8s-master ~]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/tomcat6-5f7ccf4cb9-2bjhq 1/1 Running 0 9m50s
pod/tomcat6-5f7ccf4cb9-8qjhm 1/1 Running 0 37m
pod/tomcat6-5f7ccf4cb9-s42g5 1/1 Running 0 9m50sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h
service/tomcat6 NodePort 10.96.226.207 <none> 80:32383/TCP 21mNAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/tomcat6 3/3 3 3 37mNAME DESIRED CURRENT READY AGE
replicaset.apps/tomcat6-5f7ccf4cb9 3 3 3 37m
可以刪除deployment,service,pod
kubectl delete pod/tomcat6-5f7ccf4cb9-2bjhq
kubectl delete service/tomcat6
kubectl delete deployment.apps/tomcat6