初识Kubernetes(美丽):从一个单机部署实现Java Web应用例子开始

  

本文是通过百胜方式安装Kubernetes,并部署tomcat + mysql实现Jave Web应用。此应用是JSP页面通过JDBC访问mysql数据库,只要程序正确连接到数据库上,就会自动完成对应的表的创建与初始化数据的准备工作。当我们通过浏览器访问此应用时,就会显示一个表格的页面,数据则来自数据库。
初识Kubernetes(美丽):从一个单机部署实现Java Web应用例子开始“> <br/>此应用需要启动两个容器:Web应用程序容器和mysql容器,并且Web应用程序容器需要访问mysql容器。现在我们就来看看通过Kubernetes是如何实现Java Web应用的。<br/>在继续阅读之前,我们需要对Kubernetes有一个基本的认识,需要了解它的原理,核心架构,核心组件和对象,以及各组件之间的联系等基础概念,可以参考我的上一篇博文《初识Kubernetes(美丽):理论基础》,https://blog.51cto.com/andyxu/2308937 <br/> <强>系统环境</强> <br/>操作系统:Centos 7.5 64位<br/> IP地址:192.168.2.238 </p>
  <h2>一、安装部署Kubernetes(美丽)</h2>
  <p> <强> 1,关闭Centos自带的防火墙服务</强> <br/> <em>注:Kubernetes集群之间会有大量的网络通信,在一个安全的内部网络环境中建议关闭防火墙服务</em> </p>
  <pre> <代码> root@andyxu-test ~ # systemctl禁用firewalld
  (root@andyxu-test ~) # systemctl停止firewalld </代码> </pre>
  <p> <强> 2,安装etcd和Kubernetes软件(会自动安装码头工人软件)</强> </p>
  <pre> <代码> [root@andyxu-test ~] # yum - y安装etcd kubernetes </代码> </pre>
  <p> <em>注:百胜方式安装的kubernetes的版本是1.5.2 </em> <br/> <img src=   

<强> 5,按顺序启动所有服务

  
 <代码> [root@andyxu-test ~] # systemctl etcd开始
  root@andyxu-test ~ # systemctl开始码头工人
  (root@andyxu-test ~) # systemctl kube-apiserver开始
  (root@andyxu-test ~) # systemctl kube-controller-manager开始
  (root@andyxu-test ~) # systemctl kube-scheduler开始
  (root@andyxu-test ~) # systemctl kubelet开始
  (root@andyxu-test ~) # systemctl开始kube-proxy  
  

二、创建并配置mysql容器

  

<强> 1,创建mysql的部署定义文件
mysql-dep.yaml文件内容如下:

  
 <代码> apiVersion:扩展/v1beta1 # apiserver的版本
  :#副部署本控制器部署、管理舱和RS
  元数据:
  名称:mysql #部署的名称,全局唯一
  规范:
  副本:1 #舱副本期待数量
  选择器:
  matchLabels: #定义RS的标签
  应用:mysql #符合目标的豆荚拥有此标签
  策略:#定义升级的策略
  类型:RollingUpdate #滚动升级,逐步替换的策略
  模板:#根据此模板创建Pod的副本(实例)
  元数据:
  标签:
  应用:mysql # Pod副本的标签,对RS的应选择器
  规范:
  容器:#舱里容器的定义部分
  ——名称:mysql #容器的名称
  图片:mysql: 5.7 #容器对应的码头工人镜像
  volumeMounts: #容器内挂载点的定义部分
  ——名称:时区#容器内挂载点名称
  mountPath:/etc/localtime #容器内挂载点路径,可以是文件或目录
  ——名称:mysql-data
  mountPath:/var/lib/mysql #容器内mysql的数据目录
  ——名称:mysql-logs
  mountPath:/var/log/mysql #容器内mysql的日志目录
  港口:
  - containerPort: 3306 #容器暴露的端口号
  env: #写入到容器内的环境容量
  ——名称:MYSQL_ROOT_PASSWORD #定义了一个mysql的根密码的变量
  价值:“123456”
  卷:#本地需要挂载到容器里的数据卷定义部分
  ——名称:时区#数据卷名称,需要与容器内挂载点名称一致
  hostPath:
  路径:/etc/localtime #挂载到容器里的路径,将本地时间文件挂载到容器里,可让容器使用本地的时区
  ——名称:mysql-data
  hostPath:
  路径://mysql/数据#本地存放mysql数据的目录
  ——名称:mysql-logs
  hostPath:
  路径:/数据/mysql/日志#本地存入mysql日志的目录

初识Kubernetes(美丽):从一个单机部署实现Java Web应用例子开始