团队,我搜寻了一些,但对k8来说并不新鲜。我的吊舱被逐出,并且收到消息“状态:失败原因:被逐出消息:节点资源不足:nodefs。”
任何掌舵者,我怎么知道发生了什么?
团队,
我能够获取节点上运行的所有 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) 我想将下面的行转换为作为 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) 如何在 YAML 文件中使用环境变量?
我正在使用 kubectl 创建一个命名空间,并想知道如何使用变量而不是testnamespace
像name: $var
apiVersion: v1
kind: Namespace
metadata:
name: testnamespace
spec:
finalizers:
- kubernetes
Run Code Online (Sandbox Code Playgroud) 团队,
我正在尝试验证 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)
输出: …
问题:我想列出除那些未处于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) 团队,我试图每 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) 团队,如何重新创建带有前缀和后缀字符的数组是我的要求,不包括第一个索引。
我正在创建一个元素字符串,但不知何故它正在消失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)