diff --git a/dashboard/client/api/endpoints/pods.api.ts b/dashboard/client/api/endpoints/pods.api.ts index b7072876f7..aaf5a67152 100644 --- a/dashboard/client/api/endpoints/pods.api.ts +++ b/dashboard/client/api/endpoints/pods.api.ts @@ -411,6 +411,13 @@ export class Pod extends WorkloadKubeObject { getNodeName() { return this.spec?.nodeName } + + getSelectedNodeOs() { + if (!this.spec.nodeSelector) return + if (!this.spec.nodeSelector["kubernetes.io/os"]) return + + return this.spec.nodeSelector["kubernetes.io/os"] + } } export const podsApi = new PodsApi({ diff --git a/dashboard/client/components/+workloads-pods/pod-menu.tsx b/dashboard/client/components/+workloads-pods/pod-menu.tsx index 9ec4384d17..95a607a60e 100644 --- a/dashboard/client/components/+workloads-pods/pod-menu.tsx +++ b/dashboard/client/components/+workloads-pods/pod-menu.tsx @@ -21,9 +21,8 @@ export class PodMenu extends React.Component { hideDetails(); const { object: pod } = this.props const containerParam = container ? `-c ${container}` : "" - const node = await nodesApi.get({name: pod.getNodeName()}) let command = `kubectl exec -i -t -n ${pod.getNs()} ${pod.getName()} ${containerParam} "--"` - if (node.getOperatingSystem() == "windows") { + if (pod.getSelectedNodeOs() === "windows") { command = `${command} powershell` } else { command = `${command} sh -c "clear; (bash || ash || sh)"`