聚石塔支持的Yaml配置,均是K8S原生Yaml配置;基于聚石塔的应用模型,我们在原生yaml的基础上,限制了一些字段的设置。具体的限制参考如下。
注意:通过接口使用yaml的时候记得删除掉注释。
kind: ConfigMap # metadata下仅支持name和labels metadata: name: zookeeper-config apiVersion: v1 data: init.sh: |- #!/bin/bash set -e set -x [ -z "$ID_OFFSET" ] && ID_OFFSET=1 export ZOO_MY_ID=$((${HOSTNAME##*-} + $ID_OFFSET)) echo "${ZOO_MY_ID:-1}" | tee $ZOO_DATA_DIR/myid cat ${EXTERNAL_CONF_PATH}/zookeeper.properties > ${ZOO_CONF_DIR}/zoo.cfg sed -i "s/server\.${ZOO_MY_ID}\=[a-z0-9.-]*/server.${ZOO_MY_ID}=0.0.0.0/" ${ZOO_CONF_DIR}/zoo.cfg zookeeper.properties: |- tickTime=2000 dataDir=/data dataLogDir=/datalog clientPort=2181 maxClientCnxns=1 initLimit=5 syncLimit=2 autopurge.snapRetainCount=3 autopurge.purgeInterval=1 server.1=zk-0.zk-hs:2888:3888 server.2=zk-1.zk-hs:2888:3888 server.3=zk-2.zk-hs:2888:3888
apiVersion: apps/v1 kind: Deployment # metadata下只支持设置labels和annotations # 不支持namespace和name metadata: labels: k1: v1 annotations: k1: v1 # spc不支持paused和replicas,其他均支持 # 支持的字段如下 selector,minReadySeconds,template,progressDeadlineSeconds,revisionHistoryLimit,strategy spec: # 支持matchLabels 和 matchExpressions selector: matchLabels: test: hangyu template: # podTemplate.metadata 只支持设置labels和annotations metadata: labels: test: hangyu # 支持设置affinity,initContainers,containers,volumes,nodeSelector,terminationGracePeriodSeconds # 支持设置activeDeadlineSeconds,hostAliases,imagePullSecrets,serviceAccountName spec: containers: - env: - name: JAVA_OPT value: >- -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Duser.timezone=Asia/Shanghai - name: SPRINGBOOT_OPT value: >- --management.info.build.mode=full --spring.profiles.active=production --logging.path=/acs/log --logging.file=/acs/log/application.log - name: PRESHELL - name: POSTSHELL - name: MAIN_PORT value: '8080' - name: MANAGEMENT_PORT value: '8081' image: 'registry-vpc.cn-zhangjiakou.aliyuncs.com/jstopen/springboot2:1.0.0' livenessProbe: httpGet: path: /actuator/health port: 8081 scheme: HTTP name: jck-app-hangyu-10078 ports: - containerPort: 8080 name: main-port protocol: TCP - containerPort: 8081 name: management-port protocol: TCP readinessProbe: httpGet: path: /actuator/health port: 8081 scheme: HTTP resources: limits: cpu: '1' memory: 1000Mi volumeMounts: - mountPath: /acs/data name: jck-v-wedf - mountPath: /acs/log name: jck-v-wedg volumes: - emptyDir: {} name: jck-v-wedf - emptyDir: {} name: jck-v-wedg
注:
1)metadata下只支持设置labels和annotations,不支持namespace和name;
2)spec下不支持paused和replicas,其他均支持;
3)podTemplate.metadata 只支持设置labels和annotations;
4)podTemplate.spec 下的字段基本都支持。
apiVersion: apps/v1 kind: StatefulSet # metadata下支持设置labels、annotations、name; 仅不支持namespace metadata: name: zaide-ss labels: app: st # spc不支持revisionHistoryLimit和replicas,其他均支持 # 支持的字段如下 podManagementPolicy,selector,serviceName,template,updateStrategy,volumeClaimTemplates spec: podManagementPolicy: OrderedReady # 支持matchLabels 和 matchExpressions selector: matchLabels: app: st serviceName: lingfeng-service template: # podTemplate.metadata 只支持设置labels和annotations metadata: labels: app: st lingfeng: lingfeng2 # 支持设置affinity,initContainers,containers,volumes,nodeSelector,terminationGracePeriodSeconds # 支持设置activeDeadlineSeconds,hostAliases,imagePullSecrets,serviceAccountName spec: containers: - image: 'registry.cn-zhangjiakou.aliyuncs.com/jstopen/nginx-1.14.2:1.0.0' name: test imagePullPolicy: Always resources: requests: cpu: 250m memory: 512Mi volumeMounts: - mountPath: /acs/env/nginx/user.nginx.conf name: jck-v-nyi6 # 挂载PVC - mountPath: /test/pvc name: claim-template terminationGracePeriodSeconds: 30 volumes: - configMap: defaultMode: 420 items: - key: '-acs-env-nginx-user.nginx.conf' mode: 420 path: '-acs-env-nginx-user.nginx.conf' name: hangyu-configmap name: jck-v-nyi6 # 存储卷声明模板 volumeClaimTemplates: - metadata: name: claim-template spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: sc
1)限制基本与deployment类似。与deployment不同的是,StatefulSet允许设置name;
2)支持设置podManagementPolicy和volumeClaimTemplates。
暂时没有开放Yaml。
apiVersion: batch/v1beta1 kind: CronJob metadata: spec: startingDeadlineSeconds: 600 schedule: "*/2 * * * *" successfulJobsHistoryLimit: 5 failedJobsHistoryLimit: 3 jobTemplate: spec: parallelism: 1 template: metadata: labels: app: test-batch-job spec: containers: - name: main image: registry.cn-zhangjiakou.aliyuncs.com/aliacs-app-catalog/busybox:1.30.1 args: - /bin/sh - -c - date; sleep 90; echo Hello from the CronJob Instance; date; restartPolicy: Never
注:metadata下只支持设置labels和annotations,不支持namespace和name。