最近任务是把之前运行在docker里的自己写的java镜像部署到k8 s中,踩了一些坑,记录如下: 1.在写yaml文件时指定非shell命令而是一些命令行的时候要加上bash -c否则会报错:exec 命令会重新拷贝一份,具体参考:https://www.cnblogs.com/xuxinkun/p/7116737.html 最后通过bash -c的方式往hosts文件里加域名:(因为openjdk:8- jdk-alpine只有sh没有bash,所以使用sh) apiVersion: apps/v1 kind: Deployment metadata: name: java-data-store labels: app: java-data-store spec: replicas: 1 selector: matchLabels: app: java-data-store - name: java-data-store image: harbor:9501/library/openjdk:8-jdk-alpine imagePullPolicy
一、前言 适用范围 1.CentOS 6+ 2.Java 7+ (示例使用Java8) 二、部署过程 1、下载 http://www.oracle.com/technetwork/java/javase /downloads/jdk8-downloads-2133151.html #(1)下载之后FTP到服务器 #(2)获取到下载链接后,用wget命令下载 2、解压到指定目录 sudo mkdir -p /usr/java sudo tar zvxf jdk-8u131-linux-x64.tar.gz -C /usr/java 3、配置环境变量 vi /etc/profile # 在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL下添加 export JAVA_HOME=/usr/java/jdk1.8.0_131 export :$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 4、使环境变量生效 source /etc/profile 5、检查是否配置成功 java -version
HTTPS访问不用配置) vi /etc/docker/daemon.json { "insecure-registries": ["192.168.31.90"] } 2、将镜像仓库认证凭据保存在k8s docker-server=192.168.31.90 3、在yaml中使用这个认证凭据 imagePullSecrets: - name: registry-auth # 二、使用deployment控制器部署 content-type: text/html; charset=utf-8 expose-request-attributes: false items: - key: "application.yml" path: "application.yml" # 三、对外暴露应用 java-demo ports: - protocol: TCP port: 80 targetPort: 8080 # 四、部署数据库 apiVersion:
相关软件 xshell:连接linux执行命令 xftp:可视化上传文件 edit-plus:可视化编辑文件 jdk安装 验证系统是否自带jdk环境 pm -qa|grep java rpm -qa| grep jdk rpm -qa|grep gcj 卸载opnejdk yum -y remove copy-jdk-configs-3.7-1.el8.noarch 验证 java -version 解压 tar xf jdk-8u241-linux-x64.tar.gz 配置环境变量 export JAVA_HOME=/usr/soft/jdk/jdk1.8.0_241 export CLASSPATH :$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME 安装 rpm -ivh jenkins-2.174-1.1.noarch.rpm 配置jdk路径 /etc/init.d/jenkins /usr/soft/jdk/jdk1.8.0_241/bin/java
往期文章 应用监控系列之谁开发谁运行谁监控 java应用监控之调用链跟踪选型之Zipkin、Pinpoint、SkyWalking、CAT 目录 1、cat安装环境 2、git安装 3、下载cat代码 4、docker安装部署 5、cat容器化部署 1、cat安装环境 Linux 2.6以及之上(2.6内核才可以支持epoll),线上服务端部署请使用Linux环境,Mac以及Windows环境可以作为开发环境 ,美团点评内部CentOS 6.5 Java 6,7,8,服务端推荐是用jdk7的版本,客户端jdk6、7、8都支持 Maven 3及以上 MySQL 5.6,5.7,更高版本MySQL都不建议使用,不清楚兼容性 version 3、下载cat代码 git clone https://github.com/dianping/cat.git 进入cat代码目录 cd /usr/local/cat 4、docker安装部署 Docker-ce: sudo yum -y install docker-ce 启动 Docker 后台服务 systemctl start docker docker version 5、cat容器化部署
groupId> <artifactId>springloaded</artifactId> <version>1.2.7.RELEASE</version> </dependency> 普通jdk应用 java -javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify SomeJavaClass 只要修改class文件, Context reloadable="false" 修改启动配置增加代理 如果是纯tomcat中配置,修改启动脚本catalina.bat(linux中为catalina.sh): #windows #set JAVA_OPTS =-javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify #linux export JAVA_OPTS="-javaagent
写在前面 ---- 公司项目去Oracle用teleDB,都在容器上部署,所以系统的学习下,之前着急忙慌的。 本博客笔记属于实战类,适用于小白 博文有错误的地方,或者关于博文的问题,可以留言讨论。 _tomcat8.5 latest b8c89e810729 7 seconds ago 700MB centos7_java8 _tomcat8.5 latest b8c89e810729 39 minutes ago 700MB centos7_java8 > docker save centos7_java8_tomcat8.5:latest -o centos7_java8_tomcat8.5.tar 通过 Dockerfile 创建服务镜像 这里的话 发布一个web应用。如果有使用docker客户端工具,那么每次可以远程直接替换,war实现部署, UAWeb.war 是我们自己的应用war包。
写在前面 ---- 公司项目去Oracle用teleDB,都在容器上部署,所以系统的学习下,之前着急忙慌的。 本博客笔记属于实战类,适用于小白 博文有错误的地方,或者关于博文的问题,可以留言讨论。 _tomcat8.5 latest b8c89e810729 7 seconds ago 700MB centos7_java8 _tomcat8.5 latest b8c89e810729 39 minutes ago 700MB centos7_java8 > docker save centos7_java8_tomcat8.5:latest -o centos7_java8_tomcat8.5.tar 通过 Dockerfile 创建服务镜像 这里的话 发布一个web应用。如果有使用docker客户端工具,那么每次可以远程直接替换,war实现部署, UAWeb.war 是我们自己的应用war包。
參考:http://blog.sina.com.cn/s/blog_6f3da9650101d70r.html
随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。Java 作为一种跨平台的编程语言,具有广泛的应用场景。 本文将详细介绍如何在 Ubuntu 服务器上部署 Java 应用,包括环境准备、应用发布、配置反向代理(Nginx)、设置系统服务以及日志管理等步骤。 安装 JDKUbuntu 提供了 OpenJDK(Java 的开源实现)。你可以选择安装 JDK 8(业内主流版本)或 OpenJDK 17(业内下一个主流版本)。 四、部署 Java 应用你可以通过构建一个可执行的 JAR 文件来部署 Java 应用程序。假设你已经有一个构建好的 JAR 文件,将你的 JAR 文件传输到 Ubuntu 服务器上的目标目录。 九、总结通过以上步骤,你可以在 Ubuntu 上成功部署 Java 应用,使用 Nginx 配置反向代理,确保应用能够高效稳定地提供服务。
1、List 按条件过滤后,统计数据 long count = hkUserCheckedVos.stream().filter(s -> s.getChecked() == 1).count(); 2、List 按条件过滤后,返回某个字段形成的集合list结果,如下: List<String> collect = hkUserCheckedVos.stream() .filter(s -> s.getChecked() == 1) .map(
Spring Boot JPA中java 8 的应用 上篇文章中我们讲到了如何在Spring Boot中使用JPA。 本文我们将会讲解如何在Spring Boot JPA中使用java 8 中的新特习惯如:Optional, Stream API 和 CompletableFuture的使用。 Optional 我们从数据库中获取的数据有可能是空的,对于这样的情况Java 8 提供了Optional类,用来防止出现空值的情况。 我们可以使用java 8 中的try语句来自动关闭: @Test @Transactional public void testFindAll(){ Book book CompletableFuture 使用java 8 的CompletableFuture, 我们还可以异步执行查询语句: @Async CompletableFuture<Book>
---- 概述 为了展示 CompletableFuture 的强大特性, 创建一个名为 best-price-finder 的应用,它会查询多个在线商店,依据给定的产品或服务找出最低的价格。 ---- 同步的困扰 为了实现最佳价格查询器应用,让我们从每个商店都应该提供的API定义入手。 : java.lang.RuntimeException: product not available at java.util.concurrent.CompletableFuture.get(CompletableFuture.java AsyncShop.java:36) at lambdasinaction.chap11.AsyncShop.lambda$getPrice$0(AsyncShop.java:23) at lambdasinaction.chap11 .AsyncShop$$Lambda$1/24071475.run(Unknown Source) at java.lang.Thread.run(Thread.java:744)
java8 Stream(流)常见的操作主要有以下几个方面 1)过滤筛选:filter stream 接口支持filter方法,该操作接收一个谓词Predicate(一个返回bollean的函数 2)排序:sort 3)去重:distinct 4)映射:map map方法,它会接收一个函数作为参数,这个函数会被应用到每个元素上,并将其映射成一个新的元素。 2.Java8 Stream经典示例 示例一:现在有一个List<User> 的集合,如何把这个list转换成Map<Integer, User> 其中,key是user id,value是User对象 8)找到交易额的最小的交易。 8)找到交易额的最小的交易。
「前端部署」系列正在更新: 15/15 ---- 这篇关于 k8s 的文章是前端部署系列的最后一篇文章了,后续将会把该系列文章以视频的方式在哔哩哔哩发布,欢迎关注及预约。 ---- 在前边章节中,我们了解了「如何部署容器化的前端应用」,并可通过 CICD 进行自动化部署。 这次编写一个 Deployment 的资源配置文件,在 k8s 上对其部署。 其中每一个 Pod 都有一个 IP,且应用每次升级后 Pod IP 都会发生该表,那应该如何配置该应用对外访问? 其中 cra-deployment 是 Deployment 名,而该前端应用每次上线升级会部署一个 Replica Sets,如本次为 cra-deployment-555dc66769。
公司部分应用进行了云原生改造,但大部分工作是由基础架构和运维部门推动的,自己只是作为开发并不了解其中的细节,甚至 k8s 也接触不到。 还处于比较传统的以虚拟机部署的传统运维为主。 计划 入门 部署应用到 k8s 跨服务调用 集群外部访问 进阶 如何使用配置 服务网格实战 运维你的应用 应用探针 滚动更新与回滚 优雅采集日志 应用可观测性 指标可视化 k8s 部署常见中间件 helm 部署应用到 k8s 首先从第一章【部署应用到 k8s】开始,我会用 Go 写一个简单的 Web 应用,然后打包为一个 Docker 镜像,之后部署到 k8s 中,并完成其中的接口调用。 部署应用 之后我们使用命令: kubectl apply -f deployment/deployment.yaml 生产环境中往往会使用云厂商所提供的 k8s 环境,我们本地可以使用 https:/ 就会应用这个 deployment 同时将容器部署到 k8s 中,之后使用: kubectl get pod 在后台 k8s 会根据我们填写的资源选择一个合适的节点,将当前这个 Pod 部署过去。
前言 关于 Gitlab CE 部署 与 Gitlab CI 搭建请参考下文 Docker Compose部署Gitlab Gitlab CI 搭建持续集成环境 环境 与 概述 一个 hello-world nodejs 项目 Dockerfile 和 app.dev.yaml(k8s deploy 文件) 存放在业务代码中 Gitlab CI Build 机器需要安装 envsubst 命令 构建一个 Docker 业务镜像发布到 Kubernetes 中 本项目部署 K8S Service 、HPA 和 Deployment CI_COMMIT_REF_SLUG CI_COMMIT_SHA 变量都是 Gitlab CI 内置的变量 把 hello-world 项目部署到 Kubernetes default 命名空间中,NODE_ENV 使用 development 演示 编写 .gitlab-ci.yml 查看部署到 Kubernetes 项目 ?
来源:https://qingmu.io/2020/04/08/Spring-Boot-Operator-User-Guide/ 前言 在Kubernetes中部署spring boot应用整体上来说是一件比较繁琐的事情 打包Docker镜像 在讲部署之前我们需要先将我们的SpringBoot应用打包成标准的DockerImage。 注意:jib打包的镜像会导致java应用的pid=1,在使用SpringBootOperator进行发布时候,Operator会设置kubernetes的ShareProcessNamespace参数为 OperatorDemo应用 完成了Operator的部署之后,我们来部署我们第一个应用,这里我们就发布上面我们编写的springboot应用opreator-demo。 部署自己私有仓库的应用需要需要先创建secret(如果已经创建跳过即可) 创建docker-registry的secret。
前言 关于 Gitlab CE 部署 与 Gitlab CI 搭建请参考下文 Docker Compose部署Gitlab Gitlab CI 搭建持续集成环境 环境 与 概述 一个 hello-world nodejs 项目 Dockerfile 和 app.dev.yaml(k8s deploy 文件) 存放在业务代码中 Gitlab CI Build 机器需要安装 envsubst 命令 构建一个 Docker 业务镜像发布到 Kubernetes 中 本项目部署 K8S Service 、HPA 和 Deployment CI_COMMIT_REF_SLUG CI_COMMIT_SHA 变量都是 Gitlab CI 内置的变量 把 hello-world 项目部署到 Kubernetes default 命名空间中,NODE_ENV 使用 development 演示 编写 .gitlab-ci.yml 查看部署到 Kubernetes 项目 ?
本篇文章适合k8s入门参考,使用 yaml 文件和 kubectl 命令完成应用部署。本文的脚本只演示了最基础的配置。 Step 2: 部署到 K8S 下面我们就要开始操作 k8s 集群了。 1 创建 namespace 为了方便后期的管理,一般不建议将业务镜像部署到 default 命名空间。 2 部署应用 同样,我们需要编写一个 yaml 来“声明”应用的部署状态。 下面的 namespace 表示我们要把应用部署到 your-biz-ns 这个命名空间。 spec.replicas 表示这个部署需要创建 2 个副本(实例)。 k8s 会在接收到这个文件后,将集群的应用调整到我们希望的状态。