Kubernetes实战实现 Guestbook 留言板-简易版详解

1.基础信息

系统版本:CentOS Linux release 7.6

kubernetes版本:kubernetes1.14.0

Docker版本: Docker CE 19.03.5

此 Java web项目相对比较简单, 是一个运行在Tomcat里的 Web App, JSP页面通过 JDBC 直接访问 MySQL 数据库并展示数据。只要正确连接到了数据库,就会自动完成对应的 Table 表的创建与初始化数据的准备工作

2.实战部署
1.环境准备

准备一个搭建好的k8s集群

master:	192.168.13.141  
node1:		192.168.13.142 
node2: 	192.168.13.143
2.启动mysql服务

首先为 MySql 服务创建一个 RC 定义文件 mysql_rc.yaml

[root@master ~]# mkdir yaml    #创建一个目录来存放我们写的yaml文件
[root@master ~]# cd yaml/
[root@master yaml]# vim mysql_rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: daocloud.io/library/mysql:5.7
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
================================================================
apiVersion: v1    #API版本号
kind: ReplicationController      #RC类型
metadata:
  name: mysql
spec:
  replicas: 1
  selector:      #标签选择器,选择带有app: mysql这个标签的去创建
    app: mysql
  template:
    metadata:
      labels:    #对应上面标签选择器的标签
        app: mysql
    spec:
      containers:
      - name: mysql
        image: daocloud.io/library/mysql:5.7   #镜像
        ports:
        - containerPort: 3306        #端口
        env:      #环境变量
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"        #数据库密码
================================================================
[root@master yaml]# kubectl apply -f mysql_rc.yaml    #执行创建
replicationcontroller/mysql created
[root@master yaml]# kubectl get rc  #查看是否创建成功
NAME    DESIRED   CURRENT   READY   AGE
mysql   1         1         0       20s
[root@master yaml]# kubectl get pod  #正在创建镜像
NAME                     READY   STATUS              RESTARTS   AGE
mysql-ft58r              0/1     ContainerCreating   0          47s
nginx-5f965696dd-w4thr   1/1     Running             1          125m
如果你的网不好,你可以选择手动拉取镜像:
[root@master yaml]# kubectl get pod -o wide  #我们发现是在node1节点,所以我们去node1节点手动拉取
NAME                     READY   STATUS              RESTARTS   AGE    IP           NODE    NOMINATED NODE   READINESS GATES
mysql-ft58r              0/1     ContainerCreating   0          75s    <none>       node1   <none>           <none>
nginx-5f965696dd-w4thr   1/1     Running             1          125m   10.244.2.4   node2   <none>           <none>
[root@node1 ~]# docker pull daocloud.io/library/mysql:5.7
拉去成功后再次查看
[root@master yaml]# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP           NODE    NOMINATED NODE   READINESS GATES
mysql-ft58r              1/1     Running   0          3m41s   10.244.1.7   node1   <none>           <none>
nginx-5f965696dd-w4thr   1/1     Running   1          128m    10.244.2.4   node2   <none>           <none>

3.创建service分配地址
[root@master yaml]# vim mysql_svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql
[root@master yaml]# kubectl apply -f mysql_svc.yaml
service/mysql created
[root@master yaml]# kubectl get svc  
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.1.0.1      <none>        443/TCP        4h8m
mysql        ClusterIP   10.1.24.65    <none>        3306/TCP       17s
nginx        NodePort    10.1.232.21   <none>        80:32381/TCP   126m
我么可以看到MySql服务分配了一个值为10.1.24.65的ClusterIP的地址。
4.启动Tomcat应用
[root@master yaml]# vim mytomcat_rc.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: mytomcat
spec:
  replicas: 2
  selector:
    app: mytomcat
  template:
    metadata:
      labels:
        app: mytomcat
    spec:
      containers:
        - name: mytomcat
          image: kubeguide/tomcat-app:v1
          ports:
          - containerPort: 8080
          env:
          - name: MYSQL_SERVICE_HOST
            value: 10.1.24.65
==============================================================
		  env:
          - name: MYSQL_SERVICE_HOST
            value: 10.1.24.65      #这个IP是刚刚分配的Cluster地址
==============================================================
[root@master yaml]# kubectl apply -f mytomcat_rc.yaml
replicationcontroller/mytomcat created
[root@master yaml]# kubectl get pods -o wide  #查看在哪个节点拉取镜像
NAME                     	READY   STATUS              RESTARTS   AGE    IP           NODE    NOMINATED NODE   READINESS GATES
mysql-ft58r              	1/1     Running             0          8m8s   10.244.1.7   node1   <none>           <none>
mytomcat-2j67r              0/1     ContainerCreating   0          22s    <none>       node2   <none>           <none>
mytomcat-7nzdc              0/1     ContainerCreating   0          22s    <none>       node1   <none>           <none>
nginx-5f965696dd-w4thr   	1/1     Running             1          132m   10.244.2.4   node2   <none>           <none>
同样你也可以自己去node节点上拉取镜像,加快tomcat的创建
[root@node1 ~]# docker pull kubeguide/tomcat-app:v1
[root@node2 ~]# docker pull kubeguide/tomcat-app:v1
[root@master yaml]# kubectl get pods -o wide   #再次查看
NAME                     	READY   STATUS    RESTARTS   AGE     IP           NODE    NOMINATED NODE   READINESS GATES
mysql-ft58r              	1/1     Running   0          11m     10.244.1.7   node1   <none>           <none>
mytomcat-2j67r              1/1     Running   0          3m26s   10.244.2.6   node2   <none>           <none>
mytomcat-7nzdc              1/1     Running   0          3m26s   10.244.1.8   node1   <none>           <none>
nginx-5f965696dd-w4thr   	1/1     Running   1          135m    10.244.2.4   node2   <none>           <none>

创建对应的 Service

[root@master yaml]# vim mytomcat-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: mytomcat
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30005
  selector:
    app: mytomcat
[root@master yaml]# kubectl apply -f mytomcat-svc.yaml
service/mytomcat created
[root@master yaml]# kubectl get svc
NAME         TYPE        	CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   	10.1.0.1       <none>        443/TCP          4h14m
mysql        ClusterIP   	10.1.24.65     <none>        3306/TCP         7m8s
mytomcat        NodePort    10.1.162.140   <none>        8080:30005/TCP   17s
nginx        NodePort    	10.1.232.21    <none>        80:32381/TCP     133m

访问http://node节点ip:30005 能看到tomcat界面
在这里插入图片描述
访问 http://node节点ip:30005/demo/
在这里插入图片描述
点击Add 添加提交记录
在这里插入图片描述
在这里插入图片描述
完成

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值