k8s搭建tomcat+mysql
其实网上也有相关文档资源,但就我作为一个白白来说,太复杂,我要的就是搭建,访问成功,不要其他的。
对于小白,纯粹的成功,才是真理。成功之后再去研究,方为正路
1.mysql的RC
vi mysql.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
查看我们创建的pod
[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-x5tgz 1/1 Running 0 17h
#不会一创建就完成了,需要去创建容器,拉镜像.....,需要过一会才能显示status为running
1.2.k8s去部署
kubectl create -f mysql.yaml
2.然后我们去设计mysql的svc
vi mysqlsvc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
targetPort: 3306
selector:
app: mysql
2.2.部署
kubectl create -f mysqlsvc.yaml
3.设计tomcat的RC
vi tomcat.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 2
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: docker.io/kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: 'mysql'
- name: MYSQL_SERVICE_PORT
value: '3306'
3.2部署
kubectl create -f tomcat.yaml
查看部署的tomcat的pod
[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-x5tgz 1/1 Running 0 17h
myweb-67brg 1/1 Running 0 16h
myweb-9csw2 1/1 Running 0 16h
myweb-fzn4q 1/1 Running 0 16h
myweb-k2rlf 1/1 Running 0 17h
4.tomcat的svc
vi tomcatsvc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30088
selector:
app: myweb
查看你部署的svc
[root@k8s-master ~]# ^C
[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mysql ClusterIP 10.97.129.217 <none> 3306/TCP 16h
myweb NodePort 10.98.67.105 <none> 8080:30088/TCP 17h
这时你可以看出 tomcat的暴露外部的端口(nodeport)为30088(这是我们自己设计的,但要满足你在搭建k8s设置的暴露外部端口范围)
我们可以利用http://<nodeip>:nodeport访问tomcat,http://<nodeip>:nodeport/demo利用tomcat访问到mysql
它的结构是: tomcatsvc( service)------>tomcat(pod)-------->mysqlsvc(service)------>mysql(pod)
恭喜你,你成功了。
你可以事先在本地去拉镜像,如果是创建(pod)时去网上拉,好慢(我觉得)
0.拉镜像(可选)
docker pull mysql
docker pull docker.io/kubeguide/tomcat-app:v1
#可以直接拉名字,不必写版本,默认拉最新的(latest)。就像tomcat
docker pull tomcat