k8s集群安装——(二)部署Tomcat运行,扩容,删除
集群安装,部署Tomcat运行,动态扩容,删除
1 在主节点上部署Tomcat服务器
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8
获取所有的资源:
[root@k8s-node1 k8s]# kubectl get all
kubectl get pods -o wide 可以获取到tomcat部署信息,能够看到它被部署到了k8s-node2上了
#监控
watch kubectl get pod -n kube-system -o wide
[root@k8s-node1 k8s]# kubectl get all -o wide
查看node2节点上,下载了哪些镜像:
[root@k8s-node2 opt]# docker images
这是在node2节点上的,node3是没有的。
查看Node2节点上,正在运⾏的容器
[root@k8s-node2 opt]# docker ps
在node1上执⾏:
[root@k8s-node1 k8s]# kubectl get pods
[root@k8s-node1 k8s]# kubectl get pods --all-namespaces
从前⾯看到tomcat部署在Node2上,现在模拟因为各种原因宕机的情况,将node2关闭电源,观察情况。
[root@k8s-node1 ~]# kubectl get nodes
[root@k8s-node1 ~]# kubectl get pods -o wide
有 -o就可以看到Tomcat运行在哪个节点上
此时,把node2节点关闭,模拟宕机情况
此时没有同步好 状态去获取节点信息时,可以看到三个节点还是就绪状态
等待一分钟左右的时候,节点的状态都已经同步好了
在namespace没有同步过来的时候查看
等待两分钟左右的时候查看
已经完全替换到node3上面了。到node3上查看镜像信息
当某一个节点有故障,那么将会在另一个节点会把那个节点上的重新拉取起来。
当我再次把node2启动起来的时候,
对比一下,node2节点启动的前后差距,关闭状态下,因为发送关闭pod节点信息node2接收不到,所以状态会变成Terminating,而在node2启动以后,他会接收到关闭pod节点的命令,所以在下图他会正常关闭
2、暴露tomcat访问
一个service可以有同时操作多个pod,一个pod里面有多个容器,
现在系统运行的pod:
pod的80映射容器的8080;server会带来pod的80
查看服务:
[root@k8s-node1 ~]# kubectl get svc
这个服务是系统默认的服务
暴露service的命令如下;在master上执⾏
kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort
为了让外部能访问到集群内部,这里节点映射的含义是,让随机的节点的端口映射80端口,然后让80端口映射到8080端口。
[root@k8s-node1 ~]# kubectl get svc -o wide
http://192.168.56.201:32222/
[root@k8s-node1 ~]# kubectl get all
3、动态扩容测试
[root@k8s-node1 ~]# kubectl get deployment
应⽤升级: kubectl set image (–help查看帮助)
扩容:kubectl scale --replicas=3 deployment tomcat6
这里配置启动三个Tomcat。如果除了master以外,只剩下两个节点的话,那么会有一个节点运行两个Tomcat 。master不做具体的工作,只做协调工作。
[root@k8s-node1 ~]# kubectl scale --replicas=3 deployment tomcat6
[root@k8s-node1 ~]# kubectl get pods -o wide
可以看到有三个pod被启动了
[root@k8s-node1 ~]# kubectl get svc -o wide
扩容了多份,所有⽆论访问哪个node的指定端⼝,都可以访问到tomcat6
缩容:kubectl scale --replicas=2 deployment tomcat6
[root@k8s-node1 ~]# kubectl scale --replicas=2 deployment tomcat6
[root@k8s-node1 ~]# kubectl get pods -o wide
4、删除
kubectl get all
#查看所有资源
[root@k8s-node1 ~]# kubectl get all
删掉deployment以后,跟deployment有关的pod也会被删掉。
#删除deployment.apps/tomcat6
[root@k8s-node1 ~]# kubectl delete deployment.apps/tomcat6
#查看剩余的资源
[root@k8s-node1 ~]# kubectl get all
#删除service/tomcat6
[root@k8s-node1 ~]# kubectl delete service/tomcat6
[root@k8s-node1 ~]# kubectl get all
现在访问的时候,就访问不到我们的pod了。
更多推荐
所有评论(0)