zoukankan      html  css  js  c++  java
  • 企业微服务项目如何进入K8S的全过程

    前言

    现在很多企业已经进入了docker容器化的部署方式,容器化的部署离不开容器编排的工具,现在用的最多的当属K8S的编排工具。那项目从0开始时,一直进入到k8s中,整体流程是什么,以及用到什么工具组件呢?今天老顾就从整体上面来介绍一下。

    整体流程

    企业微服务项目如何进入K8S的全过程

     

    工作流程

    1)开发人员提交代码到Git版本仓库;
    2)Jenkins人工/定时触发项目构建;
    3)Jenkins拉取代码、代码编码、打包镜像、推送到测试环境的镜像仓库;
    4)k8s拉取镜像产生pod中的容器
    5)测试环境中测试没有问题后,把镜像同步到生产的镜像仓库中
    6)生产环境K8S部署镜像

    git

    git现在有的私有仓库,有两种选择gitlab,gogs。

    gogs

    企业微服务项目如何进入K8S的全过程

     

    一开始老顾选择的gogs,因为比较轻量级,消耗服务器的资源也很少。但是gogs现有版本中缺少很重要的功能,就是在web界面上面操作拉取分支的功能,这个功能是平常经常用的,但比较可惜的是gogs现在不支持。

    gitlab

    企业微服务项目如何进入K8S的全过程

     

    gitlab功能还是比较强大的,唯一的缺点就是比较耗服务器资源,最好用4G内存承载,要不然很慢哦

    jenkins

    企业微服务项目如何进入K8S的全过程

     

    企业微服务项目如何进入K8S的全过程

     

    jenkins应该是持续集成的唯一选择了,功能非常强大,强大的插件功能;不同的团队应用jenkins的方式也不尽相同。

    拉取git的插件Git Parameter

    动态获取Git仓库Branch、Tag
    企业微服务项目如何进入K8S的全过程

     

    企业微服务项目如何进入K8S的全过程

     

    配置好后,在build时,你可以选择不同的分支

    企业微服务项目如何进入K8S的全过程

     

    利用pom.xml文件构建项目

    企业微服务项目如何进入K8S的全过程

     

    在Jenkins本机镜像构建与推送到镜像仓库

    企业微服务项目如何进入K8S的全过程

     

    REPOSITORY=192.168.110.10/qy-tribe/user-server:${branch}
    #构建镜像

    cat > Dockerfile << EOF

    FROM openjdk:8-jdk-alpine

    RUN rm -rf /usr/local/qy-tribe

    COPY target/*.jar /usr/local/qy-tribe/user-server.jar

    ENTRYPOINT java -jar /usr/local/qy-tribe/user-server.jar

    EOF

    docker build -t $REPOSITORY .

    #上传镜像

    docker push $REPOSITORY

    上面是直接在jenkins的shell中输入了构建镜像脚本。

    其实还有一种常用的方式就是在项目工程下新建Dockerfile文件,在可以利用mvn插件

    企业微服务项目如何进入K8S的全过程

     

    在jenkins中使用shell

    mvn dockerfile:build dockerfile:push

    这样就更简单一点

    注意点:因为我们会对同一个版本会构建多次,镜像images会产生多次,会把上一次的镜像的tag更改为none;我们要记得清除哪些被替换的image,可以使用脚本

    注意点:jenkins结点需要安装docker哦,不要忘了

    docker images | grep none | awk '{print $3}' | xargs docker rmi

    镜像仓库

    现在市面上的镜像仓库,不二人选肯定是harbor了,使用起来比较简单,功能也是比较强大的

    企业微服务项目如何进入K8S的全过程

     

    harbor的安装推荐使用docker方式安装,比较方便

    https://github.com/goharbor/harbor/releases/download

    harbor中有个复制管理,即是同步镜像的功能。

    很多网上有harbor的高可用,以及集群的架构方案,老顾认为没有必要,应该harbor是在内部使用,高可用的需求不强烈。我们只要保证镜像文件不丢失即可,正好harbor的复制管理即可完成此功能。

    所以我们只要架设几个harbor就ok了

    k8s

    k8s集群安装是比较复杂的,网上介绍的有两种方式kubeadm方式和二进制方式,我们今天介绍更简单的方式,只要几句命令就ok。

    利用sealyun工具,利用go语言方式,能够快速搭建k8s集群

    结点规划

    主机名

    IP地址

    master01

    192.168.0.2

    master02

    192.168.0.3

    master03

    192.168.0.4

    work01

    192.168.0.5

    work02

    192.168.0.6

    注意:

    系统支持:centos7.2以上 ubuntu16.04以上 内核推荐4.14以上

    推荐配置:centos7.4

    注意事项

    1)必须同步所有服务器时间

    2)所有服务器主机名不能重复

    #下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到#bin目录即可, release页面也可下载
    wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos &&
    chmod +x sealos && mv sealos /usr/bin

    #下载离线资源包
    wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/d551b0b9e67e0416d0f9dce870a16665-1.18.0/kube1.18.0.tar.gz


    #安装一个三master的kubernetes集群
    sealos init --passwd 123456
    --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4
    --node 192.168.0.5 --node 192.168.0.6
    --pkg-url /root/kube1.18.0.tar.gz
    --version v1.18.0

    上面就是3条命令,就可以帮我们完成k8s集群的搭建,等待的时长根据自身的网络环境。

    注意:上面的passwd 123456,是5个服务器结点的root密码,一定要一样哦

    k8s界面控制台

    安装好了k8s后,只能用命令方式控制k8s,是很不方便的,所以我们还需要安装一个界面控制台,我们这里选择强大的kuboard

    wget https://github.com/sealstore/dashboard/releases/download/v1.0-1/kuboard.tar


    sealos install --pkg-url kuboard.tar

    到这里我们完成了k8s的安装,来看看炫酷的界面

    企业微服务项目如何进入K8S的全过程

     

    创建Deployment

    企业微服务项目如何进入K8S的全过程

     

    企业微服务项目如何进入K8S的全过程

     

    kuboard的优势,可以在逻辑上面区分不同的层级,可以方便的让我们一览系统架构

    企业微服务项目如何进入K8S的全过程

     

    ingress安装

    为了让集群外可以访问集群里面的访问,需要安装ingress

    kubectl apply -f https://kuboard.cn/install-script/v1.16.2/nginx-ingress.yaml
    企业微服务项目如何进入K8S的全过程

     

    配置service服务,以及ingress

    企业微服务项目如何进入K8S的全过程

     

    总结

    今天整体介绍把一个微服务项目,如何部署到k8s中,经过什么流程,以及需要什么工具,而且推荐了市面上面的主流工具。尤其介绍了k8s集群的搭建的工具,很推荐哦

    当然具体工具的使用细节,需要小伙伴们自行搭建,里面会遇到很多的坑,遇到坑就去解决,这样理解起来会更好。

  • 相关阅读:
    100+ Python挑战性编程练习(1)
    python面试题--初级(二)
    python面试题--初级(一)
    centos查看iptables和firewall防火墙状态、开启、关闭防火墙
    Keepalived nginx HA负载均衡
    windows10安装SQLServer 2008 R2详细说明
    CentOS安装mysql5.7
    centOS7.5安装docker
    redis哨兵选举算法--raft
    CentOS7.5安装GitLab及汉化
  • 原文地址:https://www.cnblogs.com/IT-Evan/p/13395060.html
Copyright © 2011-2022 走看看