kubernetes k8s 业务上线流程(手动版)

本文详述了kubernetes(k8s)业务上线的详细流程,从传统部署与k8s部署的区别开始,涵盖镜像制作、控制器管理、数据持久化、应用暴露及对外发布。还特别讲解了部署Java/PHP项目的步骤,包括构建镜像、服务编排、资源隔离,并提供了内外部访问的配置方法。
摘要由CSDN通过智能技术生成

kubernetes(十三) k8s 业务上线流程(手动版)

k8s 实战

传统部署与k8s部署的区别

  • 传统部署

mark

  • k8s 部署架构

mark

  • 项目迁移到k8s的流程

mark

制作镜像

  • 镜像分类
    • 基础镜像
    • 环境镜像
    • 项目镜像

mark

控制器管理POD

  • Deployment:无状态部署,例如Web,微服务,API
  • StatefulSet:有状态部署,例如数据库,ZK,ETCD
  • DaemonSet:守护进程部署,例如监控Agent、日志Agent
  • Job & CronJob:批处理,例如数据库备份,邮件通知

Pod数据持久化

  • 容器部署过程中一般有如下的三种数据
    • 启动时需要的初始数据,可以是配置文件
    • 启动过程中产生的初始化数据,该临时数据需要多个容器间共享
    • 启动过程中产生的业务数据

mark

暴露应用

使用Service ClusterIP类型暴露集群内部的应用访问

  • service定义了Pod逻辑集合和访问这个集合的策略
  • service引入为了解决Pod的动态变化,提供服务发现和负载均衡
  • 使用coreDNS解析Service名称

mark

对外发布应用

  • 使用ingress对外暴露应用
    • 通过Service关联Pod
    • 基于域名访问
    • 通过Ingress Controller实现pod的负载均衡
    • 支持TCP/UDP四层和Http七层

mark

部署Java/PHP项目

  • 构建环境镜像
$ mkdir ~/base_env/ && cd ~/base_env
$ vim Dockerfile
FROM centos:7
LABEL maintainer="waanghui@qq.com"
ENV tomcat_version="8.5.57"
  • 代码提交至代码仓库: http://192.168.56.19:9999/root/java-demo.git (如何部署代码仓库可以联系QQ 122725501协助:)
  • 代码编译
    • git clone http://192.168.56.19:9999/root/java-demo.git
    • 编译机安装好编译环境(yum install java-1.8.0-openjdk maven -y
    • 修改代码的maven源
$ vi /etc/maven/settings.xml
  <mirrors>
       <mirror>
         <id>central</id>
         <mirrorOf>central</mirrorOf>
         <name>aliyun maven</name>
         <url>https://maven.aliyun.com/repository/public</url>
       </mirror>
   </mirrors>
$ cd java-demo
$ mvn clean package -D maven.test.skip=true
  • 构建镜像并推送到镜像仓库
$  vim Dockerfile 
FROM hub.cropy.cn/base/tomcat:v1
LABEL maintainer="wanghui@qq.com"
RUN rm -rf /usr/local/tomcat/webapps/*
COPY target/*.war /usr/local/tomcat/webapps/ROOT.war

$ docker build -t hub.cropy.cn/demo/java-demo:v1 .
$ docker push hub.cropy.cn/demo/java-demo:v1

k8s服务编排部署项目

  • 创建命名空间,资源隔离,权限控制
$ vim namespace.yaml 
apiVersion: v1
kind: Namespace
metadata:
name: test
$ kubectl apply -f namespace.yaml 
  • 使用deploy控制器创建Pod
# 需要创建hub仓库的secret
$ kubectl create secret docker-registry docker-regsitry-auth --docker-server="hub.cropy.cn" --docker-username="admin" --docker-password="Harbor12345" -n test
$ vim deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
name: java-demo
namespace: test
spec:
replicas: 2
selector:
  matchLabels:
    project: www
    app: java-demo
template:
  metadata:
    labels:
      project: www
      app: java-demo
  spec:
    imagePullSecrets:
    - name: "docker-regsitry-auth"
    containers:
    - image: hub.cropy.cn/demo/java-demo:v1
      name: java-demo
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值