Kubernetes容器交付介绍

如何在k8s集群中部署Java项目

容器交付流程

  • 开发代码阶段

    • 编写代码
    • 编写Dockerfile【打镜像做准备】
  • 持续交付/集成
    • 代码编译打包
    • 制作镜像
    • 上传镜像仓库
  • 应用部署
    • 环境准备
    • Pod
    • Service
    • Ingress
  • 运维
    • 监控
    • 故障排查
    • 应用升级

k8s部署Java项目流程

  • 制作镜像【Dockerfile】
  • 上传到镜像仓库【Dockerhub、阿里云、网易】
  • 控制器部署镜像【Deployment】
  • 对外暴露应用【Service、Ingress】
  • 运维【监控、升级】

k8s部署Java项目

准备Java项目

第一步,准备java项目,把java进行打包【jar包或者war包】

依赖环境

在打包java项目的时候,我们首先需要两个环境

  • java环境【JDK】
  • maven环境

然后把java项目打包成jar包

mvn clean install

编写Dockerfile文件

Dockerfile 内容如下所示

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD ./target/demojenkins.jar demojenkins.jar
ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"]

制作镜像

在我们创建好Dockerfile文件后,我们就可以制作镜像了

我们首先将我们的项目,放到我们的服务器上

然后执行下面命令打包镜像

docker build -t java-demo-01:latest .

等待一段后,即可制作完成我们的镜像

最后通过下面命令,即可查看我们的镜像了

docker images;

启动镜像

在我们制作完成镜像后,我们就可以启动我们的镜像了

docker run -d -p 8111:8111 java-demo-01:latest -t

启动完成后,我们通过浏览器进行访问,即可看到我们的java程序

http://192.168.177.130:8111/user

推送镜像

下面我们需要将我们制作好的镜像,上传到镜像服务器中【阿里云、DockerHub】

首先我们需要到 阿里云 容器镜像服务,然后开始创建镜像仓库

然后选择本地仓库

我们点击我们刚刚创建的镜像仓库,就能看到以下的信息

登录镜像服务器

使用命令登录

docker login --username=XXXXXXX@163.com registry.cn-shenzhen.aliyuncs.com

然后输入刚刚我们开放时候的注册的密码

镜像添加版本号

下面为我们的镜像添加版本号

# 实例
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:[镜像版本号] # 举例
docker tag 33f11349c27d registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0

操作完成后

推送镜像

在我们添加版本号信息后,我们就可以推送我们的镜像到阿里云了

docker push registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0

操作完成后,我们在我们的阿里云镜像服务,就能看到推送上来的镜像了

控制器部署镜像

在我们推送镜像到服务器后,就可以通过控制器部署镜像了

首先我们需要根据刚刚的镜像,导出yaml

# 导出yaml
kubectl create deployment javademo1 --image=registry.cn-
shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0 --dry-run -o yaml > javademo1.yaml

导出后的 javademo1.yaml 如下所示

apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: javademo1
name: javademo1
spec:
replicas: 1
selector:
matchLabels:
app: javademo1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: javademo1
spec:
containers:
- image: registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0
name: java-project-01
resources: {}
status: {}

然后通过下面命令,通过yaml创建我们的deployment

# 创建
kubectl apply -f javademo1.yaml
# 查看 pods

或者我们可以进行扩容,多创建几个副本

kubectl scale deployment javademo1 --replicas=3

然后我们还需要对外暴露端口【通过service 或者 Ingress】

# 对外暴露端口
kubectl expose deployment javademo1 --port=8111 --target-port=8111 --type=NodePort
# 查看对外端口号
kubectl get svc

然后通过下面的地址访问

# 对内访问
curl http://10.106.103.242:8111/user
# 对外访问
http://192.168.177.130:32190/user

运维

....

18.Kubernetes容器交付介绍的更多相关文章

  1. 从零入门 Serverless | 一文讲透 Serverless Kubernetes 容器服务

    作者 | 张维(贤维) 阿里云函数计算开发工程师 导读:Serverless Kubernetes 是以容器和 kubernetes 为基础的 Serverless 服务,它提供了一种简单易用.极致弹 ...

  2. Kubernetes容器上下文环境

    目录贴:Kubernetes学习系列 下面我们将主要介绍运行在Kubernetes集群中的容器所能够感知到的上下文环境,以及容器是如何获知这些信息的. 首先,Kubernetes提供了一个能够让容器感 ...

  3. Docker Kubernetes 容器扩容与缩容

    Docker Kubernetes 容器扩容与缩容 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...

  4. Docker Kubernetes 容器更新与回滚

    Docker Kubernetes 容器更新与回滚 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...

  5. Docker Kubernetes 容器重启策略

    Docker Kubernetes 容器重启策略 当容器被创建时,容器会根据重启策略来进行容器重启. 支持三种策略: Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容 ...

  6. Kubernetes中StatefulSet介绍

    StatefulSet 是Kubernetes1.9版本中稳定的特性,本文使用的环境为 Kubernetes 1.11.如何搭建环境可以参考kubeadm安装kubernetes V1.11.1 集群 ...

  7. Kubernetes容器集群管理环境 - Prometheus监控篇

    一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...

  8. Kubernetes容器集群管理环境 - 完整部署(中篇)

    接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...

  9. Kubernetes容器集群管理环境 - 完整部署(下篇)

    在前一篇文章中详细介绍了Kubernetes容器集群管理环境 - 完整部署(中篇),这里继续记录下Kubernetes集群插件等部署过程: 十一.Kubernetes集群插件 插件是Kubernete ...

  10. 搭建Kubernetes容器集群管理系统

    1.Kubernetes 概述 Kubernetes 是 Google 开源的容器集群管理系统,基于 Docker 构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.劢态扩缩容等功能套件. 基 ...

随机推荐

  1. IP报文格式详解

    下图为常见的IP报文格式表: 上面是IP的报文格式,接下来我们先说明各个字段的意义.然后,用Etheral软件转包分析IP的报文格式. 1.版本:ip报文中,版本占了4位,用来表示该协议采用的是那一个 ...

  2. 安装 Ubuntu / Windows 双系统

    最近给自己的老笔记本换了一块大硬盘,顺便装了 Windows 和 Ubuntu 两个操作系统.记录一下安装过程. 提示:Ubuntu 安装程序可以检测到磁盘已有的 Windows 安装.所以如果先安装 ...

  3. windows docker(25.0.3) 运行 1.4.1 nacos 容器

    Docker Desktop 设定图标 -> Docker Engine 设定国内镜像源 添加配置: { "builder": { "gc": { &qu ...

  4. 【YashanDB知识库】调整NUMBER精度,再执行统计信息收集高级包偶现数据库异常退出

    [问题分类]功能使用 [关键字]NUMBER类型精度修改,统计信息收集 [问题描述]存量的表将NUMBER类型的字段精度从小精度调整为大精度时,数据库收集这张业务表的统计信息时,会导致数据库异常退出. ...

  5. ansible部署jdk source /etc/profile 不起作用?

    问题: ansible调用playbook远程mvn执行打包时发现执行出错,找不到JAVA_HOME.我们的exporter JAVA_HOME=/usr/java/jdk1.8.0写在/etc/pr ...

  6. 图解连接阿里云(二)使用Paho-MQTT(支持FreeRTOS版本、Linux版本)连接1MQTT测试服务器 2阿里云物联网平台

    前沿提要: MQTT是什么不知道? 看这一篇:https://www.cnblogs.com/happybirthdaytoyou/p/10362336.html 阿里云官网玩不转? 看这一篇: ht ...

  7. Sketch Measure切图插件无法导出标注 (换插件绕过解决)

    环境 MacOS 10.15+ sketch版本 69.2 插件版本 2.8.1 遇到的问题 导出标注卡死 更新版本无解,到插件的github issue中找到解决方法 使用MeaXure插件,git ...

  8. 暑假集训CSP提高模拟 16

    \[暑假集训CSP提高模拟 \lim_{x\rightarrow\infty}\frac{8f_{x}}{f_{x+1}}\times(\sqrt{5}+1),\ \forall f_{x}=f_{x ...

  9. 《Vue.js 设计与实现》读书笔记 - 第14章、内建组件和模块

    第14章.内建组件和模块 14.1 KeepAlive 组件的实现原理 KeepAlive 一词借鉴了 HTTP 协议. KeepAlive 组件可以避免组件被频繁的销毁/重建.本质是缓存管理,再加上 ...

  10. 单Master节点的k8s集群部署-完整版

    K8S 安装步骤 一.准备工作 1.准备三台主机(一台Master节点,两台Node节点)如下: 角色 IP 内存 核心 磁盘 Master 192.168.116.131 4G 4个 55G Nod ...