diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..62a5084f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/node:latest AS runner_builder + +WORKDIR /app + +COPY . /app/ + +RUN npm install && npm run bootstrap && npm run build-all + +FROM ghcr.nju.edu.cn/actions/actions-runner:2.325.0 + +COPY --from=runner_builder /app/packages/k8s/dist/index.js /home/runner/k8s/index.js + +USER runner diff --git a/packages/k8s/src/hooks/run-script-step.ts b/packages/k8s/src/hooks/run-script-step.ts index 3ad710b2..d8710bdf 100644 --- a/packages/k8s/src/hooks/run-script-step.ts +++ b/packages/k8s/src/hooks/run-script-step.ts @@ -22,11 +22,7 @@ export async function runScriptStep( try { await execPodStep( - [ - '/bin/bash', - '-el', - `/check-npu/check.sh` - ], + ['/bin/bash', '-el', `/check-npu/check.sh`], state.jobPod, JOB_CONTAINER_NAME ) @@ -35,7 +31,7 @@ export async function runScriptStep( const message = (err as any)?.response?.body?.message || err throw new Error(`failed to run script step: ${message}`) } - + args.entryPoint = 'sh' args.entryPointArgs = ['-e', containerPath] try { diff --git a/packages/k8s/src/k8s/index.ts b/packages/k8s/src/k8s/index.ts index 047a2285..249a0605 100644 --- a/packages/k8s/src/k8s/index.ts +++ b/packages/k8s/src/k8s/index.ts @@ -564,28 +564,32 @@ async function getPodAffinity(nodeName: string): Promise { return affinity } -async function getPreferredPodAffinity(nodeName: string): Promise { - const affinity = new k8s.V1Affinity(); - affinity.nodeAffinity = new k8s.V1NodeAffinity(); - +async function getPreferredPodAffinity( + nodeName: string +): Promise { + const affinity = new k8s.V1Affinity() + affinity.nodeAffinity = new k8s.V1NodeAffinity() + // 创建 PreferredSchedulingTerm 对象 - const preferredTerm = new k8s.V1PreferredSchedulingTerm(); - preferredTerm.weight = 1; // 设置权重(1-100) - + const preferredTerm = new k8s.V1PreferredSchedulingTerm() + preferredTerm.weight = 1 // 设置权重(1-100) + // 创建 NodeSelectorTerm - preferredTerm.preference = new k8s.V1NodeSelectorTerm(); + preferredTerm.preference = new k8s.V1NodeSelectorTerm() preferredTerm.preference.matchExpressions = [ { key: 'kubernetes.io/hostname', operator: 'In', values: [nodeName] } - ]; + ] // 将 PreferredSchedulingTerm 添加到数组中 - affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution = [preferredTerm]; - - return affinity; + affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution = [ + preferredTerm + ] + + return affinity } export function namespace(): string {