http:\/\/www.hu-rong.com\/article\/536<\/a> <\/p>
<\/p>
<\/p>
<\/p>
\u5728k8s\u7684Deployments\u7684\u914d\u7f6e\u4e2d\u52a0\u5165command:<\/p>
kind: Deployment<\/p>
apiVersion: apps\/v1<\/p>
metadata:<\/p>
name: taibao-api<\/p>
namespace: autocall-test<\/p>
selfLink: \/apis\/apps\/v1\/namespaces\/autocall-test\/deployments\/taibao-api<\/p>
uid: a15d5385-e38c-4b79-93d2-7761904c5f06<\/p>
resourceVersion: '7058731457'<\/p>
generation: 19<\/p>
creationTimestamp: '2021-05-19T07:48:31Z'<\/p>
labels:<\/p>
name: taibao-api<\/p>
annotations:<\/p>
deployment.kubernetes.io\/revision: '19'<\/p>
kubectl.kubernetes.io\/last-applied-configuration: ><\/p>
{"apiVersion":"apps\/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"name":"taibao-api"},"name":"taibao-api","namespace":"autocall-test"},"spec":{"minReadySeconds":10,"replicas":1,"revisionHistoryLimit":3,"selector":{"matchLabels":{"name":"taibao-api"}},"strategy":{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"},"template":{"metadata":{"creationTimestamp":null,"labels":{"name":"taibao-api"}},"spec":{"containers":[{"env":[{"name":"ARGS","value":null},{"name":"aliyun_logs_taibao-api","value":"stdout"},{"name":"logtail","value":"taibao-api"},{"name":"POD_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"metadata.name"}}},{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"metadata.namespace"}}},{"name":"POD_IP","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"status.podIP"}}},{"name":"HOST_IP","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"status.hostIP"}}}],"image":"registry-vpc.cn-beijing.aliyuncs.com\/icsoc\/taibao-api:taibao-api-2021_05_19-19_43_56","imagePullPolicy":"Always","name":"taibao-api","ports":[{"containerPort":80,"name":"web","protocol":"TCP"}],"resources":{"limits":{"cpu":"1024m","memory":"2048Mi"},"requests":{"cpu":"500m","memory":"1200Mi"}},"volumeMounts":[{"mountPath":"\/www\/.env","name":"taibao-api-cm","subPath":".env"}]}],"dnsPolicy":"ClusterFirst","imagePullSecrets":[{"name":"autocall-test"}],"restartPolicy":"Always","terminationGracePeriodSeconds":60,"volumes":[{"configMap":{"defaultMode":420,"name":"taibao-api-cm"},"name":"taibao-api-cm"}]}}}}<\/p>
spec:<\/p>
replicas: 1<\/p>
selector:<\/p>
matchLabels:<\/p>
name: taibao-api<\/p>
template:<\/p>
metadata:<\/p>
creationTimestamp: null<\/p>
labels:<\/p>
name: taibao-api<\/p>
spec:<\/p>
volumes:<\/p>
- name: taibao-api-cm<\/p>
configMap:<\/p>
name: taibao-api-cm<\/p>
defaultMode: 420<\/p>
containers:<\/p>
- name: taibao-api<\/p>
image: >-<\/p>
registry-vpc.cn-beijing.aliyuncs.comxxxxxxxxxxxxxxxxxxxxxxxx<\/p>
command:<\/strong><\/span><\/p> - \/bin\/sh<\/strong><\/span><\/p> args:<\/strong><\/span><\/p> - '-c'<\/strong><\/span><\/p> - sh \/data\/www\/crontab.sh<\/strong><\/span><\/p> ports:<\/p>
- name: web<\/p>
containerPort: 80<\/p>
protocol: TCP<\/p>
volumeMounts:<\/p>
- name: taibao-api-cm<\/p>
mountPath: \/www\/.env<\/p>
subPath: .env<\/p>
- name: taibao-api-cm<\/p>
mountPath: \/data\/www\/.env<\/span><\/strong><\/p> subPath: .env<\/p>
<\/p>
\u5efa\u4e00\u4e2ashell\u811a\u672ccrontab.sh\u653e\u5230\u9879\u76ee\u6839\u76ee\u5f55\u4e2d\uff0c\u5bb9\u5668\u542f\u52a8\u540e\u5c06\u6302\u8f7d\u5230\/data\/www\/crontab.sh,\u811a\u672c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>
#\/bin\/sh<\/span><\/p>while(true)<\/span><\/p>do<\/span><\/p> time=$(date "+%Y-%m-%d %H:%M:%S")<\/span><\/p> echo $time >> crontab.txt<\/span><\/p> \/usr\/local\/bin\/php \/data\/www\/artisan schedule:run >> crontab.txt<\/span><\/p><\/span>echo artisan-end >> crontab.txt<\/span><\/p> sleep 1<\/span><\/p>done<\/span><\/p>
<\/p>
<\/p>
\u5f53\u5bb9\u5668\u542f\u52a8\u540e\u5c06\u6bcf\u9694\u4e00\u79d2:<\/p>
\u8f93\u51fa\u5f53\u524d\u65f6\u95f4\u5230\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u7684crontab.txt\u4e2d\uff0c<\/p>
\u540c\u65f6\u6bcf\u9694\u4e00\u5206\u949f\u6267\u884cphp artisan\u547d\u4ee4\uff0c\u4e14\u6267\u884c\u4fe1\u606f\u4e5f\u4f1a\u5199\u5165\u5230crontab.txt\u4e2d\uff0c<\/p>
\u6700\u540e\u5199\u5165artisan-end\u5230crontab.txt\u4e2d
<\/p>
<\/p>
\u8fd9\u6837\u5373\u4f7fswoole\u670d\u52a1\u6302\u4e86\uff0c\u4e00\u79d2\u540e\u4e5f\u4f1a\u91cd\u65b0\u542f\u52a8\uff1b<\/p>
<\/p>
<\/p>
\u8fd8\u6709\u4e00\u79cd\u7528api\u7684\u65b9\u5f0f\uff0c\u5199\u4e00\u4e2a\u63a5\u53e3\u6267\u884c\u4e00\u4e0bshell_exec,\u5b9a\u65f6\u53bb\u8bf7\u6c42\uff1a<\/p>
<\/p>
\/**\n * k8s api\u65b9\u5f0f\u5b9e\u73b0\u5b9a\u65f6php artisan\n *\/\npublic function artisan()\n{\n $file = dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . '\/k8s.txt';\n $time = date('Y-m-d H:i:s', time()) . "\\n";\n file_put_contents($file, $time, FILE_APPEND);\n shell_exec("chmod -R 777 \/data\/www\/storage");\n shell_exec("\/usr\/local\/bin\/php \/data\/www\/artisan schedule:run >> " . $file);\n file_put_contents($file, "k8s done\\n", FILE_APPEND);\n}<\/pre>
<\/p>"}