tomcat+mysql tomcat服务读取数据库配置文件的数据库地址来连接数据库,然后数据库出现问题后k8s会在别的节点给mysql重新建立,这样mysql的地址就会发生变化。导致tomcat无法找到mysql,使用vip进行连接mysql这样就好啦!
一、node节点
tomcat+mysql
[root@k8s-node2 ~]# wget http://192.168.18.250/file/docker-mysql-5.7.tar.gz
[root@k8s-node2 ~]# wget http://192.168.18.250/file/tomcat-app-v2.tar.gz
二、导入镜像
[root@k8s-node2 ~]# docker load -i tomcat-app-v2.tar.gz
[root@k8s-node2 ~]# docker load -i docker-mysql-5.7.tar.gz
三、传入仓库
[root@k8s-node2 ~]# docker tag docker.io/kubeguide/tomcat-app:v2 10.0.0.11:5000/tomcat-app:v2
[root@k8s-node2 ~]# docker push 10.0.0.11:5000/tomcat-app:v2
[root@k8s-node2 ~]# docker tag docker.io/mysql:5.7 10.0.0.11:5000/mysql:5.7
[root@k8s-node2 ~]# docker push 10.0.0.11:5000/mysql:5.7
四、master节点操作
[root@k8s-master k8s_yaml]# unzip tomcat_demo.zip
Archive: tomcat_demo.zip
inflating: tomcat_demo/mysql-rc.yml
inflating: tomcat_demo/mysql-svc.yml
inflating: tomcat_demo/mysql_pv.yaml
inflating: tomcat_demo/mysql_pvc.yaml
inflating: tomcat_demo/tomcat-rc.yml
inflating: tomcat_demo/tomcat-svc.yml
启动mysql
[root@k8s-master tomcat_demo]# kubectl create -f mysql-rc.yml
[root@k8s-master tomcat_demo]# kubectl create -f mysql-svc.yml
service "mysql" created
[root@k8s-master tomcat_demo]# kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 27d
mysql 10.254.26.51 <none> 3306/TCP 19s
myweb 10.254.179.46 <nodes> 80:30000/TCP 27d
nginx2 10.254.242.83 <nodes> 80:5492/TCP 27d
将mysql的svc ip写入到tomcat的yum文件中
启动tomcat
[root@k8s-master tomcat_demo]# kubectl create -f tomcat-rc.yml
replicationcontroller "myweb" created
[root@k8s-master tomcat_demo]# kubectl create -f tomcat-svc.yml报错:说myweb 名称已经存在
[root@k8s-master tomcat_demo]# kubectl delete svc myweb
service "myweb" deleted
[root@k8s-master tomcat_demo]# kubectl create -f tomcat-svc.yml
service "myweb" created
发现无法访问开始排查
[root@k8s-master tomcat_demo]# kubectl get pod -o wide
ping podip 发现不通检查内核转发
[root@k8s-node1 ~]# sysctl -a|grep ipv4|grep forward
发现都是正常的
打开防火墙拦截规则
iptables -P FORWARD ACCEPT
重启服务node节点执行
[root@k8s-node2 ~]# systemctl restart flanneld.service
[root@k8s-node2 ~]# systemctl restart docker
[root@k8s-node2 ~]# systemctl restart kube-proxy.service
在master节点重启获取ip,因为ip地址会变,在ping通了。访问可以访问。
有问题请加博主微信进行沟通!
全部评论