zoukankan      html  css  js  c++  java
  • 使用k8s部署springcloud应用过程

    -- 摘自海生哥哥

    1. 打包项目为jar包

    - 在集群master节点上执行命令,获取eurekaService注册中心的集群地址ClusterIP和集群端口port
    - kubectl get svc
    - ClusterIP:集群中[service]的IP
    - port:集群中[service]的端口
    - 拉取svn更新userService代码
    - 更新userService模块内的boostrap.yml修改注册中心地址
    - eureka.client.serviceUrl.defaultZone = http://[ClusterIP]:[port]/eureka/
    - 例如:eureka.client.serviceUrl.defaultZone = http://10.106.159.181:8761/eureka/
    - userService模块执行maven clean install生成jar包
    

    2. 打包jar为docker镜像并上传到私有仓库,目前使用的私有仓库是docker官方的registry

    - 上传jar到安装了docker的CentOS服务器上
    - 在jar包旁边创建Dockerfile文件,注意该文件没有任何后缀
    
    - 创建镜像,build命令中的最后一个点代表当前Dockerfile的路径
    - registryIP:私有仓库registry的IP
    - registryPort:私有仓库registry的端口
    - imageName:镜像名称,可以使用斜杠区分目录,例如:myProject/userService
    - tag:镜像的标签,docker私有仓库registry中同一个镜像的标签唯一
    - docker build -t [registryIP][registryPort][imageName]:[tag] .
    - 例如:docker build -t docker build -t 172.16.0.11:5000/springcloud/gatewayservice:v4 .
    
    - 推送镜像到私有仓库registry
    - docker push [registryIP][registryPort][imageName]:[tag]
    - 例如:docker push 172.16.0.11:5000/springcloud/gatewayservice:v4
    

    3. 在k8s的master节点执行更新

    - 登录集群master节点
    - 进入自定义存放userServiceDeployment.yaml文件的路径
    - cd /usr/local/zixinhui/my_deployment
    - 修改userServiceDeployment.yaml文件中docker镜像的标签[tag],例如一下属性中的v4
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
        name: deployment-userservice
        namespace: default # 命名空间,不同命名空间相互隔离
    spec:
      replicas: 1 # 部署userService服务的个数
      selector:
        matchLabels:
          name: deployment-userservice # pod名称
      template:
        metadata:
          labels:
            name: deployment-userservice # pod名称
        spec:
          containers:
          - name: userservice # 镜像名称
            image: 172.16.0.11:5000/springcloud/userservice:v4 # 我们打包的镜像,打包为v4就写v4,打包成v5就写v5
            imagePullPolicy: Always # 容器拉取规则,Always表示每次都从docker私有仓库registry拉取镜像部署
            ports:
            - containerPort: 8766
            env: # 设置容器内环境变量,以下效果为设置容器时间为上海标准时间
            - name: TZ
              value: Asia/Shanghai
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: userservice-service
    spec:
      type: ClusterIP # 集群IP类型:NodePort、ClusterIP、None
      selector:
        name: deployment-userservice
      ports:
        - protocol: TCP
          port: 8766 # 集群service端口
          targetPort: 8766 # docker容器端口
    
    - 保存修改之后,执行更新命令
    - kubectl apply -f userService.yaml
    

    4. 在k8s中master节点查看日志、服务等命令

    - 查看日志,加-f参数效果类似tail -f output.log
    - kubectl logs -f [podName]
    - podName:通过命令kubectl get pods查询出来的NAME字段
    - 进入pod内部:
    - kubectl exec -it [podName] -- /bin/sh
    - pod内部可以包含多个容器,pod是k8s最小执行单位
    - 按照范围划分:service > pod > container > jar
    
  • 相关阅读:
    #Bug--Mapper资源加载不到
    Spring项目用JUnit调试时出现错误 Failed to load ApplicationContext 的解决方法
    安装和配置maven遇到的坑
    DataGrip 异常
    数据库-1055报错-把only_full_group_by去掉
    spring boot 配置logback.xml 日志重复打印
    eclipse创建maven项目
    【C++11新特性】 C++11智能指针之weak_ptr
    socket编程中的粘包问题解决方案
    c++的反映机制实现
  • 原文地址:https://www.cnblogs.com/mjtabu/p/15726670.html
Copyright © 2011-2022 走看看