zoukankan      html  css  js  c++  java
  • kubernetes 学习 创建cronjob

    POM.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>XXXXXXXXXX</groupId>
        <artifactId>XXXXXXX</artifactId>
        <version>1.0-SNAPSHOT</version>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
        <properties>
            <redis.version>2.9.0</redis.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${redis.version}</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
            </dependency>
        </dependencies>
        <profiles>
            <profile>
                <id>dist</id>
                <build>
                    <plugins>
                        <plugin>
                            <artifactId>maven-jar-plugin</artifactId>
                            <configuration>
                                <archive>
                                    <manifest>
                                        <mainClass>含有main函数的类的全名</mainClass>
                                        <addClasspath>true</addClasspath>
                                        <classpathPrefix>lib/</classpathPrefix>
                                    </manifest>
                                    <!-- Add config folder into classpath of MANIFEST -->
                                    <manifestEntries>
                                        <Class-Path>src/main/resources</Class-Path>
                                    </manifestEntries>
                                </archive>
                                <classesDirectory></classesDirectory>
                                <!--<excludes> <exclude>*.conf</exclude> <exclude>*.xml</exclude>
                                    </excludes> -->
                            </configuration>
                        </plugin>
                        <!-- Copy dependency Jars to lib folder -->
                        <plugin>
                            <artifactId>maven-dependency-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>copy</id>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>copy-dependencies</goal>
                                    </goals>
                                    <configuration>
                                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <artifactId>maven-assembly-plugin</artifactId>
                            <configuration>
                                <descriptors>
                                    <descriptor>assembly.xml</descriptor>
                                </descriptors>
                            </configuration>
                            <executions>
                                <execution>
                                    <id>make-assembly</id>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>single</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
            </profile>
        </profiles>
    </project>

    assembly.xml

    <assembly>
        <id>dist</id>
        <formats>
            <format>zip</format>
        </formats>
        <!-- set to false the archive created will unzip its content to the current directory. -->
        <includeBaseDirectory>false</includeBaseDirectory>
        <fileSets>
            <!-- copy file from target folder -->
            <fileSet>
                <directory>${basedir}/target</directory>
                <includes>
                    <include>*.jar</include>
                </includes>
                <outputDirectory></outputDirectory>
            </fileSet>
            <fileSet>
                <directory>${basedir}/target/lib</directory>
                <outputDirectory>lib</outputDirectory>
            </fileSet>
            <!-- copy file from source folder -->
            <fileSet>
                <directory>${basedir}/dist</directory>
                <outputDirectory></outputDirectory>
                <fileMode>744</fileMode>
                <lineEnding>unix</lineEnding>
                <includes>
                    <include>start</include>
                    <include>stop</include>
                </includes>
            </fileSet>
        </fileSets>
    </assembly>

    logback.xml

    <!-- https://www.playframework.com/documentation/latest/SettingsLogger -->
    <configuration>
        <property name="APP_NAME" value="your application name"/>
        <property name="SERVICE_NAME" value="your service name" />
        <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_PATH:-/var/log/${APP_NAME}.log}</file>
            <encoder>
                <pattern>[%date{ISO8601}] [${SERVICE_NAME}] [${HOSTNAME}] [%thread] [%-5level] [%logger{36}] :%msg%n
                </pattern>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${LOG_PATH}/${APP_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxFileSize>100MB</maxFileSize>
                <maxHistory>60</maxHistory>
                <totalSizeCap>20GB</totalSizeCap>
            </rollingPolicy>
        </appender>
        <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
            <discardingThreshold>0</discardingThreshold>
            <queueSize>512</queueSize>
            <appender-ref ref="ROLLING"/>
        </appender>
        <logger name="ImagesDownLoad" additivity="false">
            <level value="INFO" />
            <appender-ref ref="STDOUT" />
        </logger>
    
        <root level="INFO">
            <appender-ref ref="ASYNC"/>
        </root>
    </configuration>

    dockerfile

    FROM openjdk:8-jre
    
    ARG PACKAGE="XXXXXXXXXXXXX-1.0-SNAPSHOT-dist.zip"
    
    COPY target/${PACKAGE} /${PACKAGE}
    COPY XXX.jks /var/lib/XXX.jks
    
    RUN mkdir /build && 
        unzip /${PACKAGE} -d /build
    
    EXPOSE 9000
    
    ENTRYPOINT ["java", "-cp", "/build/*", "含有main的类全名"]

    yaml文件:

    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: XXXXXX
    spec:
      schedule: "*/30 * * * *"   // 每隔30分钟执行一次
      jobTemplate:
        spec:
          template:
            spec:
              imagePullSecrets:
                - name: XXXXXXXXX-key    // pull image的时候,需要认证
              containers:
              - name: imagedownload
                image: 私有image仓库的地址/imagedownloadjob:259
                env:
                  - name: DB_HOST
                    value: "XXXXXXX"
              restartPolicy: OnFailure

    过程:

           1: 在工程目录下:   mvn clean pcage -P dist           // 打包,安装POM中定义的dist的方式进行打包

           2:  创建docker 镜像:

       docker build -t url/forecasting/imagedownloadjob:196 --compress --force-rm --build-arg VERSION=196 --build-arg                        MICROSERVICE=job.imagedownloadjob --build-arg REPOSITORY=url/forecasting/imagedownloadjob .

                (  -t, --tag list                Name and optionally a tag in the

                   --compress                Compress the build context using gzip

                   --force-rm                Always remove intermediate containers

                   --build-arg list          Set build-time variables)

           3:  推送docker镜像到私有仓库之前,先要登录一下docker仓库     docker login URL

                 把docker镜像推到私有仓库:

                        docker push url/forecasting/imagedownloadjob:196

                通过pull命令验证是否推送成功
                docker pull url/forecasting/imagedownloadjob:196

            4:  kubectl create -f cronjob.yaml //创建job 

                  kubectl get cronjob hello //查看job状态

                 kubectl get jobs --watch // 查看

                 kubectl describe pod fail-1036623984-hxoas // 查看pod失败的原因

                  kubectl delete cronjob hello //删除cronjob

                  使用kubectl delete jobs –all可以删除当前namespaces下所有的job

       

  • 相关阅读:
    Goroutines和Channels(一)
    数据库索引
    查看文件命令
    Django本地开发,debug模式引用静态文件
    Django部署生产环境,静态文件不能访问404,以及图片不能访问403
    js 捕获浏览器后退事件
    win10,python3.6,django2.0.3,项目基本命令
    win10,配置python3.6,虚拟环境
    c代码,输出i,j,k互不相同的三位数
    c语言关键字的区分
  • 原文地址:https://www.cnblogs.com/liufei1983/p/9258436.html
Copyright © 2011-2022 走看看