k8s-vipservice

1196人浏览 / 0人评论

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通了。访问可以访问。

 

http://10.0.0.12:30008/demo/

全部评论