小编Ahm*_*mFM的帖子

如何在K8S上调试逐出的Pod

团队,我搜寻了一些,但对k8来说并不新鲜。我的吊舱被逐出,并且收到消息“状态:失败原因:被逐出消息:节点资源不足:nodefs。”

任何掌舵者,我怎么知道发生了什么?

kubernetes kubectl kubelet

5
推荐指数
1
解决办法
3011
查看次数

从命名空间名称中具有正则表达式模式匹配的节点获取 k8s pod

团队,

我能够获取节点上运行的所有 Pod 及其命名空间,但我的命名空间是动态生成的,并且它们最终会随着字符的变化而变化。有没有一种方法可以包含一个正则表达式/模式,我可以在 kubectl 命令中使用它来从所有匹配的命名空间中提取所有 pod?

kubectl get pods -n team-1-user1 --field-selector=spec.nodeName=node1,status.phase=Running
Run Code Online (Sandbox Code Playgroud)

实际输出1:有效

NAMESPACE                                     NAME                                                                   READY   STATUS    RESTARTS   AGE
team-1-user1                                   calico-node-9j5k2                                                      1/1     Running   2          104d
team-1-user1                                   kube-proxy-ht7ch                                                       1/1     Running   2          130d

Run Code Online (Sandbox Code Playgroud)

我想要在下面为所有以“team-”开头的命名空间拉取 Pod。

kubectl get pods -n team-* --field-selector=spec.nodeName=node1,status.phase=Running
Run Code Online (Sandbox Code Playgroud)

实际输出2:失败

No resources found in team-workflow-2134-asf-324-d.yaml namespace.
Run Code Online (Sandbox Code Playgroud)

预期结果:想要这个..

NAMESPACE                                     NAME                                                                   READY   STATUS    RESTARTS   AGE
team-1-user1                                   calico-node-9j5k2                                                      1/1     Running   2          104d
team-1-user1                                   kube-proxy-ht7ch                                                       1/1     Running   2          130d

team-2-user1                                   calico-node-9j5k2                                                      1/1     Running   2          1d
team-2-user1                                   kube-proxy-ht7ch                                                       1/1     Running   2          10d

Run Code Online (Sandbox Code Playgroud)

regex bash awk sed kubectl

4
推荐指数
1
解决办法
2万
查看次数

kubectl 在 bash 脚本而不是 yaml 文件中使用内联选项创建

我想将下面的行转换为作为 bash 脚本运行,以便我可以使用 jenkins 作业调用它。

kubectl create -f tiller-sa-crb.yaml
Run Code Online (Sandbox Code Playgroud)

分蘖-sa-crb.yaml 在下面。如何在 bash 脚本中转换我的上述命令。这样我的 jenkins 工作就调用 ./tiller-sa-crb.sh 并且它在下面执行所有操作。基本上,我的最终目标是拥有一个纯 shell 脚本并在 jenkins 工作中调用它。

apiVersion: v1
  kind: ServiceAccount
  metadata:
    name: tiller
    namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
   name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
Run Code Online (Sandbox Code Playgroud)

bash kubernetes jenkins-pipeline kubectl kubernetes-helm

3
推荐指数
2
解决办法
3487
查看次数

使用 kubectl 命令在 YAML 中使用环境变量

如何在 YAML 文件中使用环境变量?

我正在使用 kubectl 创建一个命名空间,并想知道如何使用变量而不是testnamespacename: $var

apiVersion: v1
kind: Namespace
metadata:
  name: testnamespace
spec:
  finalizers:
  - kubernetes
Run Code Online (Sandbox Code Playgroud)

kubectl

3
推荐指数
1
解决办法
5860
查看次数

ansible shell 任务在没有正确消息的情况下出错

团队,

我正在尝试验证 mount 命令输出中是否存在 sdd。因此,当有任何时,我很好,但是当没有时,我的任务只是失败,而不仅仅是告诉我不存在任何坐骑。任何提示如何解决这个问题?我不希望我的任务失败,而是报告状态。

当状态代码为 0 am 时很好,但当状态代码为 1 am 时只是看到失败,而不是一条有用的消息,即 mounds sdd 不存在。

 "mount | grep sdd"
Run Code Online (Sandbox Code Playgroud)
      - name: "Verify LVP Mounts sdd exists on CPU Nodes for mount_device"
        shell: "mount | grep sdd"
        register: lvp_mount
        ignore_errors: yes
        failed_when: False
        delegate_to: "{{ item }}"
        with_items: "{{ groups['kube-cpu-node'] }}"
      - name: "Report status of mounts"
        fail:
          msg: |
            Mounts sdd not found
            Output of `mount | grep sdd`:
            {{ lvp_mount.stdout }}
            {{ lvp_mount.stderr }}
        when: lvp_mount | failed
Run Code Online (Sandbox Code Playgroud)

输出: …

ansible ansible-template ansible-2.x ansible-facts

3
推荐指数
1
解决办法
1909
查看次数

无法列出除已完成状态之外的任何状态的 Pod

问题:我想列出除那些未处于Completed状态的 Pod 之外的所有 Pod。

当命令Completed中的“选择”未完成时,字段选择器仍同相输出 Podkubectl

建议的解决方案:观察我也在Completed同步获取 Pod。

kubectl get pods --all-namespaces --field-selector=spec.nodeName=node1,status.phase!=Completed --no-headers
Run Code Online (Sandbox Code Playgroud)
test-2d7dbabf-f8cc-4c0b-af3b-80db52d2257e nightly-2020-04-01-13-00-tokyo-demo-route-gt-4245049053 2/2 Running 0 13m
test-2d7dbabf-f8cc-4c0b-af3b-80db52d2257e nightly-2020-04-01-13-00-willows-405-a2a-1380625152 0/2 Completed 0 3h31m
test-2d7dbabf-f8cc-4c0b-af3b-80db52d2257e nightly-2020-04-01-13-00-willows-405-a2a-1464250510 0/2 Completed 0 7h33m
Run Code Online (Sandbox Code Playgroud)
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T19:18:23Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.5", GitCommit:"2166946f41b36dea2c4626f90a77706f426cdea2", GitTreeState:"clean", BuildDate:"2019-03-25T15:19:22Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时Running它有效并仅列出已完成的阶段吊舱

kubectl get pods --all-namespaces --field-selector=spec.nodeName=node1,status.phase!=Running --no-headers
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl

2
推荐指数
1
解决办法
665
查看次数

无法将 watch 与 kubectl 和 xargs 一起使用

团队,我试图每 5 秒运行一次,但没有运气。

watch -n 5 kubectl get pods -n testes-asdf-234-asdf | grep -v Comple | xargs -l1 -- sh -c 'kubectl logs $1 -n testes-asdf-234-asdf main --tail=15' --
Run Code Online (Sandbox Code Playgroud)

输出:

does nothing
Run Code Online (Sandbox Code Playgroud)

尝试使用引号和命令执行搞砸了没有产生正确的输出。我的命令在没有手表和引号的情况下使用时完美无缺

watch "kubectl get pods --no-headers -n testes-asdf-234-asdf | grep -v Comple | xargs -l1 -- sh -c 'kubectl logs $1 -n testes-asdf-234-asdf main --tail=15' --"
Run Code Online (Sandbox Code Playgroud)
Every 2.0s: kubectl get pods --no-headers -n testes-asdf-234-asdf | grep -v Comple | xargs -l1 -- sh -c 'kubectl logs  -n testes... …
Run Code Online (Sandbox Code Playgroud)

bash shell xargs watch

1
推荐指数
1
解决办法
694
查看次数

bash 在向数组添加元素时添加前缀和后缀特殊字符

团队,如何重新创建带有前缀和后缀字符的数组是我的要求,不包括第一个索引。

我正在创建一个元素字符串,但不知何故它正在消失s。我怎样才能避免这种情况?有没有更好的方法来添加我想要的内容?

elements_string="src/common src/common/access/ src/common/deny/"

我正在创建下面的new数组,其中包含开始index 1排除索引 0 的所有元素。然后在添加它们时我希望它们带有前缀和后缀。

for ele in $elements_string
do
    bazel_apps_list=$(find $ele -type f -name 'BUILD.bazel' | sed -r 's|/[^/]+$||' |sort |uniq)
   new+=(-//${bazel_apps_list[@]:1}/...)
done
Run Code Online (Sandbox Code Playgroud)

输出:src 中缺少 s 字母。

-//rc/common/access/...
Run Code Online (Sandbox Code Playgroud)

像下面这样查看前缀-//和后缀...

预期产出 new=(-//src/common/access/... -//src/common/deny/...)

基本上,我需要将这些传递给 bazel 覆盖命令,所以需要。

bazel coverage ${new[@]}

我尝试了下面的答案

#!/bin/bash
apps_str="$(ls -d src/common/*/)"
echo $apps_str
if [ ! -z "${apps_str}" ]; then
    for APP in $apps_str
    do  
        bazel_apps_array=("$(find $APP -type f -name 'BUILD.bazel' | sed -r …
Run Code Online (Sandbox Code Playgroud)

arrays bash arraylist

0
推荐指数
1
解决办法
73
查看次数