完整教程:阿里云k8s部署微服务yaml和Dockerfile文件脚本

  1. Dockerfile 文件
    #基础镜像,如果本地仓库没有,会从远程仓库拉取 openjdk:8
    FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/java:21-anolis
    #暴露端口
    EXPOSE 8080
    #容器中创建目录
    RUN mkdir -p /usr/local/cenobitor
    #编译后的jar包copy到容器中创建到目录内12
    COPY target/codeup-demo-0.0.1.jar /usr/local/cenobitor/codeup-demo-0.0.1.jar
    #指定容器时区
    RUN rm -f /etc/localtime \
    && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone
    #指定容器启动时要执行的命令
    ENTRYPOINT ["java","-Dserver.port=8080","-jar","/usr/local/cenobitor/codeup-demo-0.0.1.jar"]

  2. k8s yaml文件
  3. apiVersion: v1
    kind: Service
    metadata:
      name: codeup-demo
      namespace: scp
      labels:
        app: codeup-demo
    spec:
      type: ClusterIP #NodePort
      ports:
        - name: 8080-8080-tcp
          port: 8080
          protocol: TCP
          targetPort: 8080
          #nodePort: 31080 #service对外开放端口
      selector:
        app: codeup-demo
    ---
    apiVersion: apps/v1
    kind: Deployment #对象类型
    metadata:
      name: codeup-demo #名称
      namespace: scp
      labels:
        app: codeup-demo #标注
    spec:
      replicas: 1 #运行容器的副本数,修改这里可以快速修改分布式节点数量
      progressDeadlineSeconds: 600 #在Deployment 在进度卡住6分钟后报告
      minReadySeconds: 10 #Pod被认为是可用状态的最小秒数。默认是0
      strategy:
        rollingUpdate:
          maxSurge: 1 #升级过程中激增Pod的最大数量
          maxUnavailable: 0 #升级过程中不可用Pod的最大数量
        type: RollingUpdate
      selector:
        matchLabels:
          app: codeup-demo
      template:
        metadata:
          labels:
            app: codeup-demo
        spec:
          containers: #docker容器的配置
            - name: codeup-demo
              #image: shpl-acr-registry.cn-shanghai.cr.aliyuncs.com/scp-uat/codeup-demo:$IMG_TAG # pull镜像的地址 ip:prot/dir/images:tag
              image: ${image}
              imagePullPolicy: Always #pull镜像时机,
              ports:
                - containerPort: 8080 #容器对外开放端口,需与springboot配置文件一致
              env:
                - name: aliyun_logs_catalina
                  value: stdout
              volumeMounts:
                - name: time-config
                  mountPath: /etc/localtime
                  readOnly: true
                #- name: volume-logs
                #  mountPath: /logs
                #  subPath: logs
              resources:
                limits:
                  cpu: 50m
                  memory: 1Gi
                requests:
                  cpu: 10m
                  memory: 200Mi
          #从私有仓库拉取镜像凭证
          imagePullSecrets:
            - name: scp-acr-temp #scp-acr-secret
          nodeSelector:
            env: scp  # 节点标签的键值对
          volumes:
            - name: time-config
              hostPath:
                path: /usr/share/zoneinfo/Asia/Shanghai
    #        - name: volume-logs
    #          persistentVolumeClaim:
    #            claimName: rz-dt-nas-volume-claim-real

    3. 执行kubectl 客户端部署命令 ,发布成功

posted @ 2025-11-11 22:29  yxysuanfa  阅读(4)  评论(0)    收藏  举报