1 说明

(1) 项目迁移到k8s平台的流程

1) 制作镜像

dockerfile、docker+jenkins持续集成。镜像分类:基础镜像、中间镜像、项目镜像

2) 控制器管理pod

控制器管理pod,deployment(无状态应用)、deamonset(守护进程)、statsfulset(有状态应用)、job&cronjob(批处理)

3) pod数据持久化

pv、pvc

4) 暴露应用

5) 对外发布应用

service nodeport、ingress(LB -> ingress controller -> pod)

2 环境说明

主机名称 ip地址 备注
k8s_harbor 172.16.1.61 访问:http://172.16.1.61/ 用户:admin 密码:Harbor12345 项目:java(包含tomcat:v01的镜像)
k8s_gitlab 172.16.1.62 访问:http://172.16.1.62:9999/ 用户:root 密码:12345678 项目:dev/java
k8s_nfs 172.16.1.63 用于镜像构建和镜像推送和nfs

3 操作步骤

(1) 安装编译环境
1) 安装openjdk和maven
[root@k8s_nfs ~]# yum install java-1.8.0-openjdk maven -y 2) 替换maven国内源
[root@k8s_nfs ~]# vim /etc/maven/settings.xml
# 158行下面插入如下内容
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror> (2) 编译构建
[root@k8s_nfs ~]# git clone http://172.16.1.62:9999/dev/java.git
[root@k8s_nfs ~]# cd java/
[root@k8s_nfs java]# mvn clean package -DskipTests=true
[root@k8s_nfs java]# ls target/
classes ly-simple-tomcat-0.0.1-SNAPSHOT maven-archiver
generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-status (3) 使用Dockerfile构建镜像并将war包推送到镜像仓库
1) 修改harbor镜像仓库认证(需要在k8s集群上也要做配置,否则无法拉取)
[root@k8s_nfs java]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://b1cx9cn7.mirror.aliyuncs.com"],
"insecure-registries": ["172.16.1.61"]
} [root@k8s_nfs java]# systemctl daemon-reload
[root@k8s_nfs java]# systemctl restart docker 2) 登录镜像仓库
[root@k8s_nfs java]# docker login 172.16.1.61 3) 将war包打入tomcat镜像
[root@k8s_nfs java]# cat Dockerfile
FROM 172.16.1.61/java/tomcat:v01
RUN rm -rf /usr/local/tomcat/webapps/*
COPY target/*.war /usr/local/tomcat/webapps/ROOT.war [root@k8s_nfs java]# docker build -t 172.16.1.61/java/tomcat:v20 . [root@k8s_nfs java]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.16.1.61/java/tomcat v20 36330bfb480e 9 seconds ago 785MB
172.16.1.61/java/tomcat v01 fc492f3c2b01 23 hours ago 767MB 4) 推送tomcat项目镜像到harbor仓库
[root@k8s_nfs java]# docker push 172.16.1.61/java/tomcat:v20 (4) 创建secret保存harbor认证信息
[root@k8s-admin ~]# kubectl create secret docker-registry dockerpullauth --docker-username=admin --docker-password=Harbor12345 --docker-server=172.16.1.61 (5) 编写yaml部署(deployment)
[root@k8s-admin ~]# kubectl create deployment java --image=172.16.1.61/java/tomcat:v20 --dry-run -o yaml > deplo
yment-java.yaml [root@k8s-admin ~]# cat deployment-java.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: java
labels:
app: java
spec:
replicas: 3
selector:
matchLabels:
project: www
app: java
template:
metadata:
labels:
project: www
app: java
spec:
imagePullSecrets:
- name: "dockerpullauth"
restartPolicy: Always
containers:
- image: 172.16.1.61/java/tomcat:v20
name: tomcat
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: tomcat
protocol: TCP
resources:
requests:
cpu: 0.5
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
periodSeconds: 10
timeoutSeconds: 20 [root@k8s-admin ~]# kubectl apply -f deployment-java.yaml
[root@k8s-admin ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
java-7f9c5f9d64-8n675 1/1 Running 0 9m26s 10.244.1.14 k8s-node1 <none> <none>
java-7f9c5f9d64-tnrft 1/1 Running 0 9m26s 10.244.2.13 k8s-node2 <none> <none>
java-7f9c5f9d64-xntk9 1/1 Running 0 9m26s 10.244.2.12 k8s-node2 <none> <none> (6) 编写yaml部署(service)
[root@k8s-admin ~]# kubectl expose deployment java --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml > service-java.yaml [root@k8s-admin ~]# cat service-java.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: java
name: java
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
nodePort: 30009
selector:
app: java
project: www
type: NodePort [root@k8s-admin ~]# kubectl apply -f service-java.yaml
[root@k8s-admin ~]# kubectl get deploy,pod,svc,ep -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
deployment.apps/java 3/3 3 3 30m tomcat 172.16.1.61/java/tomcat:v20 app=java,project=www NAME READY STATUS RESTARTS AGE IP NODE
pod/java-7f9c5f9d64-8n675 1/1 Running 0 30m 10.244.1.14 k8s-node1
pod/java-7f9c5f9d64-tnrft 1/1 Running 0 30m 10.244.2.13 k8s-node2
pod/java-7f9c5f9d64-xntk9 1/1 Running 0 30m 10.244.2.12 k8s-node2 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/java NodePort 10.96.192.44 <none> 80:30009/TCP 2m53s app=java,project=www
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 44d <none> NAME ENDPOINTS AGE
endpoints/java 10.244.1.14:8080,10.244.2.12:8080,10.244.2.13:8080 2m53s
endpoints/kubernetes 172.16.1.70:6443 44d (7) 访问
http://172.16.1.71:30009/
http://172.16.1.72:30009/ (8) 创建数据库
[root@k8s_nfs ~]# docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
[root@k8s_nfs ~]# docker exec -it mysql bash
root@d5503ea45b93:/# mysql -uroot -p$MYSQL_ROOT_PASSWORD
mysql> grant all on test.* to wp@'%' identified by '123456'; (9) 安装ingress-controller配置ingress.yaml模板实现对service下的pod做负载均衡,可以跳过k8s service的转发网络,直接负载service后面的pod提高效率。

第14章:部署Java网站项目案例的更多相关文章

  1. 部署Java Web项目报错(一)

    今天,我在部署Java Web项目时,出现错误,并且在eclipse新建一个servers,却出现多个项目. 具体错误截图如下: 然后,我又将项目部署到JBoss服务器中,却还是运行不成功 22:12 ...

  2. 阿里云服务器部署Java Web项目全过程

    最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购 ...

  3. 阿里云部署Java web项目初体验(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...

  4. 如何在tomcat中如何部署java EE项目

    如何在tomcat中如何部署java EE项目 1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法.2.在tomcat安 ...

  5. 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat

    摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在阿里云上部署Java web项目. 一.准备工作 购买了阿里云的云解析,和云服务器ecs. 2.下载put ...

  6. 在linux下用tomcat部署java web项目的过程与注意事项

    在linux下用tomcat部署java web项目的过程与注意事项 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/ ...

  7. 阿里云部署Java web项目

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...

  8. 新手小白Linux(Centos6.5)部署java web项目(总)

    一.准备 1.linux  centos版本的相关命令操作,千万别找ubuntu的,好多命令都不一样,新手小白我傻傻不知道硬是浪费了一天的时间……(百度百科linux版本了解一下) 2.远程登录: P ...

  9. 阿里云部署Java web项目初体验

    林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了怎样在阿里云上安装JDK.Tomcat以及其配置过程. 最后以一个实例来演 ...

随机推荐

  1. css背景|列表样式

    背景样式 背景区包含内容.padding 和 boder 不包含外边距 background-color 设置元素的背景颜色 background-image 把图像设置为背景,包含内边距和边框,不包 ...

  2. [bug] HDFS:DataXceiver error processing WRITE_BLOCK operation

    文件格式有误,导致读取错误,我的是把制表符敲成了空格

  3. shell练习(1)创建100个用户

    shell练习(1)创建100个用户 默默努力的小白. 2020-04-15 16:28:49 49 收藏文章标签: linuxshell版权随机创建100个用户,并生成随机密码,并将密码放入一个文件 ...

  4. Linux 系统优化-workstation实践

    Linux 系统优化 关闭SELinux [root@workstation ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/seli ...

  5. 065.Python框架Django-DRF

    一 WEB应用模式 在开发Web应用中,有两种应用模式: 1.1  前后端不分离 1.2 前后端分离 二  API接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很 ...

  6. stm32.cube(一)——系统架构及目录结构

    一.前言 Arm的应用场景往往比51单片机复杂得多,如果一个高级应用的开发需要连底层的结构性代码都要重构,那么在成本和研发周期上就会面临巨大的风险.为了简化编码过程,芯片厂商经常会提供一些板卡级支持的 ...

  7. /usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:245: running exec setns .....

    docker创建容器时报错如下: containerd: start container" error="oci runtime error: container_linux.go ...

  8. 浅谈:Redis持久化机制(一)RDB篇

    浅谈:Redis持久化机制(一)RDB篇 ​ 众所周知,redis是一款性能极高,基于内存的键值对NoSql数据库,官方显示,它的读效率可达到11万次每秒,写效率能达到8万次每秒,因为它基于内存以及存 ...

  9. Python+Selenium自动化-设置等待三种等待方法

    Python+Selenium自动化-设置等待三种等待方法   如果遇到使用ajax加载的网页,页面元素可能不是同时加载出来的,这个时候,就需要我们通过设置一个等待条件,等待页面元素加载完成,避免出现 ...

  10. Jmeter- 笔记8 - 分布式

    分布式: 原因:在实际工作中,jmeter可能需要虚拟上千并发用户,而每台实际能虚拟的线程数时有限的,一般一台电脑小于2000个,1.5k - 2k可能就出现无法虚拟. 多台机器,一起虚拟并发用户数, ...