在kubernetes pod中执行多个命令(或从shell脚本执行)

时间:2017-04-19 14:56:45

标签: kubernetes kubernetes-pod

我正在编写一个shell脚本,需要登录pod并在kubernetes pod中执行一系列命令。

下面的

是我的sample_script.sh

kubectl exec octavia-api-worker-pod-test -c octavia-api bash unset http_proxy https_proxy mv /usr/local/etc/octavia/octavia.conf /usr/local/etc/octavia/octavia.conf-orig /usr/local/bin/octavia-db-manage --config-file /usr/local/etc/octavia/octavia.conf upgrade head

运行此脚本后,我没有得到任何输出。 任何帮助将不胜感激

3 个答案:

答案 0 :(得分:18)

您是否将所有这些命令作为单行命令运行?首先,这些命令之间没有;&&。因此,如果将其作为多行脚本粘贴到终端,可能会在本地执行。

其次,要告诉bash执行某些操作,您需要:bash -c "command"

尝试运行:

$ kubectl exec POD_NAME -- bash -c "date && echo 1"

Wed Apr 19 19:29:25 UTC 2017
1

您可以将其设为多行:

$ kubectl exec POD_NAME -- bash -c "date && \
      echo 1 && \
      echo 2"

答案 1 :(得分:1)

  

-t    可以解决您的任务

例如,我在这里运行几个cmd:

const url = this.group.toDataURL({x: group.x(), y: group.y(), width: 500, height: 520 })

p.s。您的示例将是:

kubectl get pods |grep nginx|cut -f1 -d\  |\
while read pod; \
 do echo "$pod writing:";\
  kubectl exec -t $pod -- bash -c \
   "dd if=/dev/zero of=/feeds/test.bin bs=260K count=4 2>&1|\
    grep copi |cut -d, -f4; \
    a=$SECONDS; echo -ne 'reading:'; cat /feeds/test.bin >/dev/null ; \
    let a=SECONDS-a ; \
    echo $a sec"
done

答案 2 :(得分:0)

以下应该可以工作

  

<table mat-table [dataSource]="dataSource"> <ng-container matColumnDef="index"> <th mat-header-cell *matHeaderCellDef> No. </th> <td mat-cell *matCellDef="let element; let index = index"> {{index + 1}} </td> </ng-container> <ng-container *ngFor="let column of userColumns" [matColumnDef]="column"> <th mat-header-cell *matHeaderCellDef> {{column}} </th> <td mat-cell *matCellDef="let element"> {{element[column]}} </td> </ng-container> <ng-container matColumnDef="options"> <th mat-header-cell *matHeaderCellDef> </th> <td mat-cell *matCellDef="let element; let index = index"> <ng-container *ngTemplateOutlet="rowBtns;context: element;"> </ng-container> </td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> </table>

<reusable-table-selector>
    <ng-template #rowBtns let-element>
    <button mat-icon-button>
        <mat-icon>
            edit
        </mat-icon>
    </button>
    </ng-template>
</reusable-table-selector>

如果上述命令不起作用,请尝试用以下kubectl -it exec podname -- bash -c "ls && ls"之一替换bin dev etc home proc root run sys tmp usr var bin dev etc home proc root run sys tmp usr var